Friday, May 28, 2010

Top 10 things that annoy programmers

10. Instructions that attempt to articulate how to do things but not why
We hate it when non-programmers say things like "I need you to create a new switch in the code and use it to write the data to the database", rather than "we need to selectively backup old information". These days anyone who has used Facebook thinks they are qualified software architects and liberally sprinkle conversations with technical terms that they have overheard; but use them in all in the wrong places.

9. Interruptions
This is generally irritating for everyone but especially so for programmers; non-programmers invariably don't understand why this is so and are suspicious that it's just a work avoidance ploy, but believe me it's real. There is such a thing as being in the "zone", this means in the right mental state to be productive for programming this state takes a while to get to however once you're up and running productivity is usually good, kind of like a locomotive vs. a Ferrari. Think of it like dreaming, it takes a while for a dream to unfold and for you to get into it, then if someone wakes you up suddenly it's really hard to get back to that point in the dream (if not impossible).

8. Scope Creep
This is something that happens with any kind of project, from building a house to designing a brochure but its particularly common with software products as most people are unable to articulate what they want until they see something they don't want.

7. Management that doesn't understand programming
Management is tough, people generally suck, however, that doesn’t mean that managers should be able to get away without having some basic understanding of what their subordinates are doing. When management cannot grasp the basic nature and heuristics of the work projects end up with scope creep, unrealistic deadlines, and general frustration on both sides of the fence.

6. Documenting what we do
Programmers hate documentation, full stop, the only time we are interested in documentation is when we are trying to use other peoples' software, and no, the irony of that is not lost on us.

5. Marketing
Programmers and geeks in general hate marketing; "the colouring-in department" as it is affectionately known. This is another dichotomy since geeks in their millions fall over themselves to buy things like iPads and net-books, triumphs of form over function. The tension is always around what's more important, how it looks or what it does, the answer to that depends on which side of the tracks you feel most comfortable on.

4. Hardware
Any programmer who has ever been called upon to debug a strange crash on the database server or why the RAID drives aren’t working properly knows that hardware problems are a pain. There seems to be a common misconception among non-technical people that since programmers work with computers, we must know how to fix them; this is a bit like assuming Jenson Button knows how to disassemble and reassemble a racing gear box just because he also knows how to drive an F1 car.

3. Imprecision
“The website is broken”. “Feature X isn’t working properly”. Vague requests are a pain to deal with. It’s always surprising to me how exasperated non-programmers tend to get when they are asked to reproduce a problem for a programmer. They don’t seem to understand that “it’s broken, fix it!” is not enough for us to do anything useful with.

2. Other programmers
Programmers don’t always get along with other programmers. Shocking, but true. This could easily be its own top 10 list, so I’m just going to list some of the common traits programmers have that annoy their fellow programmers and save going into detail for a separate post:
•Being grumpy to the point of being hostile (I could write a whole book on this!)
•Failing to understand that there is a time to debate system architecture and a time to get things done.
•Inability to communicate effectively and confusing terminology.
•One dimensional thinking, not appreciating "human factors"
•Failure to pull ones own weight.
•Being apathetic towards the code base, the project and the deadline

And last, but not least, the number 1 thing that annoys programmers…

1. Our own code (6 months later)
Ever look back at some of your old code and grimace in pain? How stupid you were! How could you, who know so much now, have written that? Burn it! Burn it with fire!

Well, good news. You’re not alone.

The truth is, the programming world is one that is constantly changing. What we regard as a best practice today can be obsolete tomorrow. It’s simply not possible to write perfect code because the standards upon which our code is judged is evolving every day. It’s tough to cope with the fact that your work, as beautiful as it may be now, is probably going to be ridiculed later. It’s frustrating because no matter how much research we do into the latest and greatest tools, designs, frameworks, and best practices, there’s always the sense that what we’re truly after is slightly out of reach. For me, this is the most annoying thing about being a programmer and yet at the same time also the thing that also makes it worthwhile.


G said...

Don't forget that programmers hate management that used to be programmers even more than management that don't understand programming.

Steve Borthwick said...

E, true, it's like ex-smokers.. :)

Anonymous said...

Lol sounds like a programmer made this list.

Programmers hate hardware: because they cant always blame it on the hardware!

Programmers hate managment: guess what - mangers are not required to know how to do your job - their job is to make sure you're doing what you know how to do!

This is just a QQ list IMO.

Cindy Dy said...

I enjoy most of your articles,the articles are so nice for readers.