The 5 types of programmers

Awesome Code

In my code journeys and programming adventures I’ve encountered many strange foes, and even stranger allies. I’ve identified at least five different kinds of code warriors, some make for wonderful comrades in arms, while others seem to foil my every plan.

However they all have their place in the pantheon of software development. Without a healthy mix of these different programming styles you’ll probably find your projects either take too long to complete, are not stable enough or are too perfect for humans to look upon.

The duct tape programmer

Duct TapeThe code may not be pretty, but damnit, it works!

This guy is the foundation of your company. When something goes wrong he will fix it fast and in a way that won’t break again. Of course he doesn’t care about how it looks, ease of use, or any of those other trivial concerns, but he will make it happen, without a bunch of talk or time-wasting nonsense. The best way to use this person is to point at a problem and walk away.

The OCD perfectionist programmer

PerfectionYou want to do what to my code?

This guy doesn’t care about your deadlines or budgets, those are insignificant when compared to the art form that is programming. When you do finally receive the finished product you will have no option but submit to the stunning glory and radiant beauty of perfectly formatted, no, perfectly beautiful code, that is so efficient that anything you would want to do to it would do nothing but defame a masterpiece. He is the only one qualified to work on his code.

The anti-programming programmer

Anti-ProgrammingI’m a programmer, damnit. I don’t write code.

His world has one simple truth; writing code is bad. If you have to write something then you’re doing it wrong. Someone else has already done the work so just use their code. He will tell you how much faster this development practice is, even though he takes as long or longer than the other programmers. But when you get the project it will only be 20 lines of actual code and will be very easy to read. It may not be very fast, efficient, or forward-compatible, but it will be done with the least effort required.

The half-assed programmer

Half-assedWhat do you want? It works doesn’t it?

The guy who couldn’t care less about quality, that’s someone elses job. He accomplishes the tasks that he’s asked to do, quickly. You may not like his work, the other programmers hate it, but management and the clients love it. As much pain as he will cause you in the future, he is single-handedly keeping your deadlines so you can’t scoff at it (no matter how much you want to).

The theoretical programmer

TheoreticalWell, that’s a possibility, but in practice this might be a better alternative.

This guy is more interested the options than what should be done. He will spend 80% of his time staring blankly at his computer thinking up ways to accomplish a task, 15% of his time complaining about unreasonable deadlines, 4% of his time refining the options, and 1% of his time writing code. When you receive the final work it will always be accompanied by the phrase “if I had more time I could have done this the right way”.

Where do you fit?

Personally, I’d have to classify myself as the perfectionist. So, which type of programmer are you? Or perhaps you know another programming archetype that is missing from my list? Post a comment below and I’ll add it to a new updated list.

Related articles

Comments

  1. kunderez

    …perfectionist :D I am just constantly refactoring my code… but when it is finished, it is easy to read, extend, understand and maintain ( this actually has happened few times believe it or not ) … and when I am not refactoring the code I am just staring at the darkness… redesigning it in my head… over and over again :D

  2. …duct tape! hehehe, in my experience I’ve been working on projects that needed this total duct tape-ness to be finished on time, and remain working without hassle. I’ve never had a full-developer position, so maybe because of lack of habits I haven’t been able to ‘improve’ the way I code

  3. I have to say, I’m a hybrid between a few of these, depending upon the situation. I strive to be the perfectionist.. However, many times, restrictions don’t allow for that – i.e. time, resources, politics etc, consequently I have to drop into Duct-Tape programmer mode, coming back to perfectionist mode after initial release and refactoring to replace the duct-tape fix/change with a more formal and well factored update.

    I do like to spend time as a theoretical programmer mode to experiment with new techniques that will make life easier going forward, but all too frequently though there’s not enough time for this.

  4. I wish I could say I was duct-tape. I mean, who DOESN’T want to be that ninja who’s code is always effective?

    It really depends on what I’m working with. HTML/CSS that I’m getting paid for? Perfectionist. HTML/CSS for myself? Half-assed. Same with Python. Hell, I’d argue that writing python as anything BUT half-assed means you’re doing it wrong.

    I’d throw in a suggestion for “The Newbie”. You know, the fresh-outta-college kid with no real dev experience who won’t just take up his own time learning how to code, but somebody else’s, too? And it’ll take him MONTHS to acquire any practical knowledge?

    That guy.

  5. @Robert

    Ohh yeah, the newbie programmer. I do know that guy! But it begs the question, does someone who can’t really program qualify as a programmer?

  6. I think Duct Tape and Half-Ass are often two sides of the same coin. Same thing for Perfectionist and Theoretical.

    And I get what you mean by ‘anti-programming’ but that’s becoming less and less a character trait and more just a reflection of doing work with a lot of useful frameworks that value DRY.

  7. I think there is one missing. There is the mechanic programmer. The programmer who is in it to build the program and watch it work. The mechanic might enjoy programming but it is the end result which counts. These are the people who 20 years earlier would be fixing old cars and building radio transmitters in the garden shed.

    Just IMHO :)

  8. @Alex Turner

    Yeah, the mechanic programmer, “Hey! Check out this cool tool!”. I know what you mean, but I think all programmers (or at least the ones who program because they enjoy it) qualify as mechanics. I started programming because I had great fun making tools for myself and making computers do my bidding. I still find it very satisfying to build something and watch it run.

  9. J

    I’m a perfectionist:
    -I heavily try to follow best practices
    -I want to do it the way it should
    -I want to understand/read/learn before using something
    -I’m open to alternatives: I don’t stick to some language simply because I know the language

    I agree with Robert2 that some types are on the same side of the coin. But maybe that’s because I haven’t seen some of those types yet.

    @Robert1
    I wouldn’t say that the code of a duct-taper is effective. It’s probably more spaghetti code, but it works. But he is effective in time, a high productivity.

    Some types maybe also coincide with the learning model of David Kolb: http://www.infed.org/biblio/b-explrn.htm : The different types of styles used by people to learn new skills.

  10. I am so enjoy this article.Its something interesting.I expect a lot from you.Finally i am may be a duct tape programmer.

  11. I am the ‘anti-programming’ perfectionist. Wont re-invent the wheel. No way! and when I have the tool, damn, the code is beautiful,consice and works without any hustle or complicated trivia. Just the business logic we need. project delivered on time. How about that?

  12. I would have to say I’m somewhere between the Duct Tape and The Half Assed programmer! I do things to the bare minimum, and if something fancy doesn’t work, rip it out and right something completely simple. Simple things usually work the best!

  13. Jose Fernandez

    I’m a cross between perfectionist and duct tape. I love clean and well organized code and I’m always striving to improve my designs. But when stuff breaks or something needs to be done ASAP, I’ll “ruin” my designs with duct tape code in a heartbeat. The business always takes precedence.

  14. I’m a duct tape programmer, I’ll admit it. This is why I didn’t go into application development – I know I’m a duct tape programmer. As a sysadmin if I have to code to get something done, I’ll do it, but I have no illusions about it being code that won’t make someone else’s eyes bleed. That doesn’t mean that I don’t try to do it cleanly, though – treat people the way you want to be treated, and all that.

  15. Well.. Somewhere between Duct tape and half-assed.. in a good way :)

  16. I’m in 75% perfectionist but I actually think that this is the best way to be efficient in long run. Code which is easy to maintain and change is invaluable! :)
    Other 25% goes to duct tape type … sometimes all that really matters is if the product works.

  17. @The Doctor

    Ohh, so you’re the sysadmin guy with 150 scripts in a folder somewhere and 50 cron jobs holding it all together. :)

    I’ve had to deal with that a few times. Well, thank you for making the code clean, in my experience it has never been clean, commented, or even appropriately named.

  18. Just based on a couple answers here, you’re probably missing “Swiss-Army Coder”.

    Honestly, I’m like a couple of people here in that it really depends on the situation. I prefer, whenever possible, to be a Perfectionist, refactoring and simplifying as much as possible, and I like to balance it with Theoretical because if you haven’t evaluated at least a few options you never know if you have the right one.

    However, every now and then business breaths down my neck, and I’m forced to shift into a Duct-Tape mindset – “simplest fastest way to make this limp along now, refactor/fix later”.

    As for the anti-programmer, I really think that part of being a perfectionist is writing as little code as reasonably possible. The only code I’m ever willing to guarantee bug-free is the code I chose not to write. This sounds like just responsible DRY programming and framework use.

  19. Gord

    Duct-taper, definitely. Though I aspire to be the perfectionist, if I ever find the time.

  20. Thomas

    I could suggest another type: “the follow-the-procedure programmer”

    This is the guy who will not do anything unless they have been assigned a detailed description and requirements through the task management system.

    They will not work unless there are details programming conventions in the company, or they will contribute to writing them into a1000+ pages document.

    They will not do anything unless there is a procedure written for it.

    When working, they will be very effective, efficient, fast, and clean. Their code will be neat, it will match exactly the company standards, and it will do exactly what the requirements want; exactly, and ONLY that, especially if the requirements are not very clear or precise enough (regardless of how obvious their actual meaning or context may be) on which case they may decide to choose the “wrong” interpretation just to make a point and “teach a lesson” to the requirement-writer.

    They will spend 50% of their time programming, and 50% of their time in procedural and administrative overheads.

    This guy is a fantastic worker when specs and requirements are established somewhere else, but they multiply by 10 the amount of work required by management/systems analysts/co-workers/any other contributor when they are done in house.

    Very good for precise and highly defined tasks, though, and they do contribute to the company procedures being exhaustive and applied.

  21. rodbotic

    Duct tape, for the beta,
    Perfectionist for the alpha.

    I am a just get it to work, then make it pretty later.

  22. Somewhere in the middle of perfectionist and theoritical… that’s possible, isnt it?

  23. Nice post!
    It reminds me of “10things” of TechRepublic about programmers:
    http://blogs.techrepublic.com.com/10things/?p=262

    Those classifications is really funny to developers :-)

  24. For Thomas: I do not like the “follow-the-procedure programmer”. Especially when he is your boss!

    For Animesh: “Somewhere in the middle of perfectionist and theoritical… that’s possible, isnt it?” I think it’s possible and I know I’ve been on both sides at times as a result of the jobs I’ve had. As it turns out, those were the best jobs ever had!

  25. then there are the bastard programmers.

    when given extra stuff to do, they give all sorts of reasons such as that the value add by adding a new feature isn’t worth the extra effort, yet they consistently attack other people’s work, and insist that the other guy needs to get these small features up and stuff.

  26. Odin.Zeno

    I must say that there are some other kind of programmers… as I see around me

    1. ???
    These persons seem to be normal ones at a glance, but they really like to create new things rather than to do some routine works. Their abilities vary. More detailed split are not given.

    2. Forger
    These kind of person hates to do things again and again, they want to make a tool all the time to reduce their working time. thus, their production rate is relatively low.

Leave a reply

Pages linking to this article