I recently read this post at readwriteweb called Top 10 Traits of a Rockstar Software Engineer. It got me thinking, those were important traits to be a good programmer, but here some were surefire traits of a bad programmer.

A great bad programmer

1) Thinks Emotionally

You can be a bad programmer easily if you start coloring the world of bits and bytes by the hues of your emotions. You can often see hallmarks of great bad programmers by phrases such as “I am so sad that my program doesn’t work, I have tried to plead with it and it still doesn’t give work.” or by “I feel that this code is right, but I just am not sure why it won’t work” or even by “I read to my program every day, and try to be a good friend, but it still doesn’t like me, whenever I tried to attach to it, it gives me a core dump”.

2) Suspects the compiler/interpreter first

The bad programmer will say, “My code is alright, I suspect that there is a compiler/interpreter optimization that is causing this problem. Let me look at the compiler switches”.

3) Shoots first, thinks later

When presented with a problem, the bad programmer will start thinking about solutions first. Debugging is for the birds. And a truly bad programmer, will actually put that solution in without actually verifying the problem first. By doing so, he will snag the prestigious “Fastest time from bug filing to actual check-in time into the source repository” award.

By doing so, he will also bag the not-so-prestigious “Fastest time from new-build-from-check-in-time to bug-still-remains-unfixed-time”.

4) Will use code that he doesn’t understand

A bad programmer’s best friend is Ctrl-C, Ctrl-V and he doesn’t care much about where the code comes from or what it does. If he sees some code that does appears to work somewhere else correctly, he will accept it as a fact that it will work anywhere.

5) is hard working

They have to be, to fix the bugs that they introduce. They spend endless hours burning the midnight oil, putting out fires and fighting the demons that struggle to jump out of the code. On the other hand, the good programmers are the laziest bunch out there. They will do 10x more work to avoid doing 1x work at a given point in time, if they think that 1x has the potential to come back again as new work. They would rather spend their free time reading and arguing at slashdot.

6) is at inner peace with the world

They are innately satisfied with the world and how things work. They prefer not to question the order of things and the status quo. They might have used a build system for years, but they won’t be able to tell you in general terms how it works. They rather not waste their time storing useless information in their brain.

7) Can navigate office politics easily

Unlike their tongue tied good programmer colleagues, many of the bad programmers have skills in various areas not directly related to programming. It is an important skill to cultivate as it helps them keep their job in the first place.

8 ) Has confidence in their abilities

A bad programmer will never accept their limitations or boundaries of knowledge. When given a task will rather go at it alone and get it done even if it takes a few weeks rather than go talk to the nearby programmer who might know something more that will help get it done in a day.

9) is strong willed

Many could call that trait obstinate, but that is what they will be, in the face of any amount of mounting evidence that a particular approach has holes in it or won’t work. They will push forward the approach over all the problems that may arise, instead of sometimes sitting back and considering if any other approaches are better.

10) Writes clever code

They can write code that other colleagues have to open a language reference manual to figure out how it works. They delight in writing code in the most pithy and terse form they can. They write code for the machine and not for humans.

Do you have what it takes to be a bad programmer? How many traits do you have from this list? Are we missing something important here? Let us know.