94 Comments
- quietbob, on 10/12/2007, -1/+19judging by the pictures in the article
1.Play Chess
2.Play Half-Life 2 in your company's maintenance corridors
3.Play the Guitar
4.Hide your doobie collection in an ancient bell set - actionscripted, on 10/12/2007, -0/+16One of my favorite exercises in futility is trying to convey the importance of these "little" details to upper management. Their general response: "just make it work". *sigh*
- alwaysmc2, on 10/12/2007, -1/+17...and 34% of all statistics are made up.
- headzoo, on 10/12/2007, -1/+16I don't know why being able to chase a pot of coffee with a Mountain Dew isn't on that list!
- bmw@, on 10/12/2007, -5/+18Good list. Probably preaching to the choir though.
- zigamorph, on 10/12/2007, -1/+14I really don't think he is preaching to the choir. Many developers I work with are sloppy and just want the thing to work instead of taking the little extra time to make it look like a work of art.
- headzoo, on 10/12/2007, -0/+12Define lazy -- is that someone who clocks out early each day, or someone who writes sloppy code because they're lazy? Most programmers I know write code 24/7 (even in their sleep!), but some are too lazy to write good clean code -- including myself sometimes.
- locnguyen, on 10/12/2007, -0/+9Something HR and management should read, although I recognize how hard it is to find a developer who has ALL the traits.
- FishyJoe, on 10/12/2007, -0/+7I don't know if lazy is necessarily the worst thing. Lazy people often find simpler solutions, since they think of doing things with less effort.
- myheaditches, on 10/12/2007, -1/+8So, why are spaces better than tabs?
- scott1, on 10/12/2007, -4/+10"The best programmers are up to 28 times more productive than the worst programmers"
Um....
...That's why they're called the best programers - jellomizer, on 10/12/2007, -1/+7Well comparing the Best Programmer with the worst ones, is really a bad comparison. The best programmers also have a lot of experience and solve these problems by instinct. The worst programmers have little or no imagination and problem solving skills thus spend a lot of time for every little problem. That is the same as saying the Olympic sprinter is 28 times faster then a person who lost all their limbs.
- phlogiston99, on 10/12/2007, -2/+7I'm a programmer, I know what makes a good one. However, the super top most important quality when it comes to productivity is to find you one that's not lazy. That's the real challenge. And there's not HR questions or dumb test that'll squeeze the truth out of a candidate...
- headzoo, on 10/12/2007, -0/+5The tragic thing is, if you're already in the market place, it's too late to learn these traits. I'm not saying you can't if you work real hard, but for the most part these are traits learned during childhood, and traits you're born with.
- Wolfghost, on 10/12/2007, -0/+5Give me one lazy programmer who will write a dozen golden lines every day and he/she can play all they want. You can keep the energetic promotion hungry idiots who write hundreds of lines of worthless code every day (they will certainly look good to management as the company is flushed).
- kob0724, on 10/12/2007, -0/+5I think this doesn't just go for programmers. These are good life lessons. Period.
- geronimo, on 10/12/2007, -0/+5I've found that the best ones were very humble, never complained, opting instead to put a lot of responsibility on their backs and do the job right. No whining about spaces, tabs, just get it done.
- invader, on 10/12/2007, -0/+5"You'll often hear them quipping "What could possibly go wrong?" after someone makes a suggestion to handle a critical data transfer via nightly FTP over a dial-up connection."
well, that's not me.. i wouldn't quip, i'd slap. - kcpwnsgman, on 10/12/2007, -1/+5I know exactly how great it can be to work with these kind of people, and how frustrating it is if you conflict with somebody that doesn't conform to anything you can even comprehend.
- imikedaman, on 10/12/2007, -0/+4The "28x better" thing reminds me of this recent addition to The Daily WTF:
http://thedailywtf.com/forums/thread/85040.aspx
A similar statement appears in some book I own by Robert Glass. - hockeysk8, on 10/12/2007, -0/+4Real programmers indent with unicode u+0009:
http://mail.python.org/pipermail/python-list/2004-April/214853.html - nofxjunkee, on 10/12/2007, -0/+3"Many developers I work with are sloppy and just want the thing to work instead of taking the little extra time to make it look like a work of art."
Or we want to make it art, but then at the last minute must-have features X and Y need to be implemented. Nope, no extra time for you. So you hack things on, and the beautiful system you worked on goes to ***** slowly, hack by hack. It's a shame, but I think a lot of developers are probably jaded from experiences like that and so don't bother to create art in the first place anymore. (If you can't tell, I'm in a similar situation right now, getting more jaded by the minute ;-) - Markie1006, on 10/12/2007, -0/+3A multitude of ways to do it, but...
for I in *.c *.h; do
cat $I | sed -n 's/^T/ /g' > $I.notabs
done - Scarblac, on 10/12/2007, -0/+3You just need a good guideline.
At my work place, the rule is a tab is 8 spaces, and we use tab for indentation. Period, everybody uses it. If your editor doesn't support it, you get laughed at and you get to pick another editor.
The reason we use a "huge" indent like that is so that it becomes annoying if you nest too deep. It's a useful hint.
We haven't found a perfect guideline for HTML yet, unfortunately. - geocar, on 10/12/2007, -0/+3@geronimo
"p.s. I would ordinarily back up my categorical statement about goto's, but why bother?"
Because someone might point you to the Linux kernel source.
Goto is a tool. Its a particularly odd shaped tool that seems to find its most dangerous use as a hammer, and since it's hard to get these people to understand its NOT a hammer, we tell them not to use it instead.
Then, we go and use it ourselves. - tempusrob, on 10/12/2007, -0/+3Uh, that part was regarding attention to detail ... not that spaces are better than tabs. In fact, it seems to imply the opposite.
- forgetfulca, on 10/12/2007, -0/+2I also think this business about code format is pertinent in essence, but not so much so about this particular facet. The reason being that code reformatters are everywhere and they can be easily worked into code submission routines. Or use a smart editior, like multi-edit or ultraedit and the format of your choice is a couple of key presses away.
Besides, we all know the important issues are things like the versioning history belongs at the bottom of the file! - xgravix, on 10/12/2007, -3/+5If spaces are the standard that everyone in the group is using then spaces are better than tabs. Period. (and vice-versa, of course.)
- geronimo, on 10/12/2007, -2/+4Exactly. If you want to do it right, then start your own company or project and do it right, complaining to me signals that you're in the wrong profession/department/etc. I did my time maintaining code and coding how the rest of the system was coded. Now I have started my own company and I get to do it how I think it should be done. But before that I had no problem peering through thousands of lines of other people's code and fixing bugs while other people thought I was crazy for doing this 'garbage work.' This 'garbage work' allowed me to see all the great ways people attacked problems. It was a tremendous learning experience.
I think this comes down to being a positive person. A positive person, faced with a situation where most aren't so positive, manages to find a positive spin. I used to be really negative, then I got married and I've seen the light. Things are falling into place. It's amazing how things change when your attitude changes. I went from PIP (performance improvement plan) to the exact opposite. - Markie1006, on 10/12/2007, -0/+2Read the article they reference - it's about the team that specifically designs the software for the shuttle.
- hobbla87, on 10/12/2007, -0/+2This is actually a pretty damn good list since it actually applies specifically to programmers (and less so to other occupations)
Repulsion to sloppy code and "pessimism" (although I think that word's connotation is misleading) are very important to successful programmers.
Pessimism has more to do with thinking things will go badly ex ante, whereas programmers are looking more at the possibilities of failure (being emotionally pessimistic is generally detrimental to any endeavor) - mdshoreboy, on 10/12/2007, -0/+21) All corporate code needs to be reviewed. This means that when you check your code in, it will be seen by someone else. You'll be confronted if your code is sloppy. Period. In fact, the better your manager, the better your code will be.
2) Corporate programmers usually work on teams. Some person's potential might never get reached on his or her own, but in a group this person can shine. If they are stumbling, then maybe they need to find another team where they fit in better.
3) Sure there are some weaker programmers in a corporate world, but because things are so competitive and fast paced, the weaker ones will remain at the bottom working on crappy projects. If they're getting ahead and you're not, then you need to either A) see if you're the weaker programmer, or B) see if your management is just crappy.
4) Engineering by its very nature is a painstakingly meticulous type of industry. You have to be precise, or things do not work. Software Engineering is no different. If you're not a meticulous person, then engineering is probably not for you. Just like physics in college is never about memorizing equations, its about being methodical in solving problems.
5) Creativity is also a huge bonus. The more creative you can be in your coding and your ideas for making things the best they can be, the better off the project will be.
6) ALSO, ABOVE ALL ELSE!!!!.... A Corporate programmer is one who can communicate with others. You will be asked to give presentations, write documents, and explain, explain, explain your code X number of times before it goes live. The most articulate of the engineers will advance. - alwaysmc2, on 10/12/2007, -2/+4"Angered By Sloppy Code"
no... Emotion clouds judgment, which is a negative thing. "Strives for efficient code" would be good, though. - inactive, on 10/12/2007, -0/+2@jellomizer
all caps...GOTOs...lemme guess, Visual Basic on Windows? - ellenweber, on 10/12/2007, -0/+2What an interesting list and these do fit some people I know a bit too. Rather than put an emphasis on labeling folks I wonder if it wouldn't be more effective if we have strategies for them to grow in the areas stated here. Good tone, goes a long way, for instance and can be learned to help people express ideas more effectively. Enough ramble -- but thanks! Great discussion.
Brain Based Business - geocar, on 10/12/2007, -0/+1``Watch out there ... I've seen lots of software that does insane, cryptic things like wacky pointer manipulation all in the name of being "efficient".''
Just because the person who wrote it /says/ they're a great programmer, doesn't make them one. - ucg1, on 10/12/2007, -0/+1Don't descriminate against people with laziness disabilities:
http://www.dilbert.com/comics/dilbert/archive/dilbert-20060824.html
:) - forgetfulca, on 10/12/2007, -0/+1@actionscripted:
"One of my favorite exercises in futility is trying to convey the importance of these "little" details to upper management. Their general response: "just make it work"."
Where I work now, I'm being hit with the classic duality of managerial statements:
1) We need this [in-house program] to be strong, comprehensive and quick
2) "Yes, well, *academically* it's solid to do that much design work (before implementing) but it just doesn't work in the business world.
My boss is not (usually) a pointy haired boss, but he delivered this pat cliche patronizing me about it theoretically being good to design before implementing with a totally straight face. No, he's never coded beyond excel spreadsheets. Yes, he thinks setting up a coupla macros gets him points in the geek club. It is interesting that non-coders STILL to this day think you can achieve anything useful at the keyboard by just sitting down and banging out code. - forgetfulca, on 10/12/2007, -0/+1"all caps...GOTOs...lemme guess, Visual Basic on Windows?"
Yeah, gotta agree with hosiah. There is never a time when poor coding is a good way to go. GOTO was a mistake. "Don't make waves" is what I hear Jellomizer saying. That helps to guarantee the next pay cheque or consulting job, but it's not what this article is talking about. Great code reads easily. Great code is obviously superior. Anyone who can't see the benefit of great code, taken side by side with your caps & goto laden stuff is also part of the problem. I'm not saying you can necessarily change the attitudes of those perpetuating it, but let's not pretend that makes their way preferable.
p.s. I would ordinarily back up my categorical statement about goto's, but why bother? it's a 3 decade old argument that has been hashed a million times. The would-be elite saying 'I have no problem following code with goto's', and the nay sayers stipulating "fine, but no one else can, and the biggest cost of code is in maintenance" - nonsequitor, on 10/12/2007, -0/+1NASA actually has the most rigorous software development anywhere. I currently do DO-178B work, avionics. The amount of process that goes around the coding is staggering. There are various phases outlined in great detail, and for each stage there are sets of transition criteria to move to the next stage. While the software development is neither agile or cheap, it is ensured to work, or at least fail in an acceptable manner (no controlling cosmic rays flipping a bit in RAM). Many places have policies like no pointers, at all, Rockwell Collins for example. Going from Customer Requirements to System requirements to high level component requirement to low level requirements to design to code to test, retest, reviews at every stage... Then having tracability from top to bottom, customer requirements to test cases (High level tests, board level tests, integration tests, low level tests, statement coverage, boolean coverage, decision coverage). When you send people into SPACE, where a bug could easily mean certain death, it had damn better be right.
- WorldGroove, on 10/12/2007, -0/+1@bbarnhart
So, they try to give you an explaination... and you just tell 'em, "Listen to me or find another job". That make for a great work-relationship. I think I left one group I was in because someone had that attitude. - brundlefly76, on 10/12/2007, -0/+1I think there are all kinds of great developers, although I agree there is about a 1:28 ratio between the best and the rest.
The best developer I ever knew was extremely optimistic and prolific. He would answer any question you had in seconds at the keyboard. Rather then complain and bitch about requirements he would answer with a solution - in code. If it needed to be changed he would simply change it, because change is part of product development. He also kept an excellent balance between work and home life, punctual but family always came first.
I think for most programmers, attention to detail and pessimism, where frequently needed, eventually take a front seat to just 'getting things done'.
I think programming is one of those jobs that after a few years just becomes more of a nuisance as a career, and programmers seek to expand their position, rather then just becoming product managers and showing how its done, they stay programmers and just become supercritical and grumpy. - crpietschmann, on 10/12/2007, -0/+1"Paul Graham nailed it when he said "...people who are great at something are not so much convinced of their own greatness as mystified at why everyone else seems so incompetent.""
So true... - russryba, on 10/12/2007, -0/+1:s/\t/ /g
- pythoncoder, on 10/12/2007, -0/+1What about the other traits that good programmers have (you don't even have to be the best to have these traits!) Well, these aren't personality traits, but I guess you could be crafty and argue that they are...
* Version control system of some kind (subversion == happy me).
All good developers are *ANAL* about decent VCS. In corporate hell here, I'm forced to use some CA garbage. However, I also keep my source in a subversion repository.
* Comments code.
We all know the difference that comments make. Problem is bad programmers never comment appropriately. I don't need to know that // cnt is a counter.
* Formalized testing.
Good programmers love automated testing suites. Once I discovered the world of unit tests, I wonder how I ever got along without them.
I'm sure there are more I'll think of later, but those three things are *marks* of a good programmer. Not the only ones, obviously, but the ones that come to mind immediately. - OrgClosedSource, on 10/12/2007, -1/+2"The best programmers are up to 28 times more productive than the worst programmers.."
Ah, yes. The programmer productivity myth rears it's ugly head again. We don't have an objective definition of productivity, but that doesn't stop people from making these absurd claims of productivity ratios. Then to go on to list without evidence the traits that lead to the unproven productivity is truly delusional.
Given the number of programmers who believe that they are the top performers, the worst programmers must be in very short supply. - ucg1, on 10/12/2007, -0/+1In theory its possible to write software that has 0 bugs. But in reality, the complexity of the systems we are dealing with make it very very unlikely.
Yeah, if you're writing a 10 line program in assembly language, you might be able to get it bug free. But for something complex that also relies on other complex software, bugs are innevitable. - ucg1, on 10/12/2007, -0/+1The reason to use tabs is so that anyone can set what a tab width is to whatever they are comfortable with. If they want a tab to be 2 spaces, they can set it. If they want it to be 8 spaces, they can set that. But the code stays the same either way.
Personally, I don't care either way. But what I do like to do is set the code formatter to the company's coding standards. Distribute the code formatter settings to all the developers. And just let the code formatter take care of formatting the code. - forgetfulca, on 10/12/2007, -0/+1Would-be elite #1. You find a specific, popular usage, and that makes it ok. It's still a mistake, and anywhere someone has used a goto, restructuring or rethinking the code obviates it's necessity. It's a crutch shortcut
Your argument is classic error in logic #4,. appeal to authority. WellKnownFigure X says thus and so, therefore thus and so must be true. - Scarblac, on 10/12/2007, -0/+1And NASA doesn't manage to write perfect code. Instead, they acknowledge that that is in practice just too unlikely to happen, and they include ways to upgrade the software of a machine even when it's out in space.
At least some of their spacecraft run Lisp, allowing them to change things to a running system using a REPL, and I know that when one of the Mars rovers was stuck, they tested a lot of things on Earth to see if they would work, then they changed the firmware.
Plan for defects, you won't avoid them anyway and your system will be better because of your precautions. -
Show 51 - 93 of 93 discussions



What is Digg?
Browsing Digg on your phone just got easier with our enhancements to the