3 Programmer Personalities

I ran across this list of 3 types of programmers today. When I read this, I finally understood something about myself: I'm an Elvis! :)

That article purports, in short,

that the three types (called Mort, Elvis, and Einstein in the above linked article) are delineated by the amount of preparation you need to put into projects before and during coding. I changed the names used from Mort/Elvis to Wayne/MacGuiver (I think those names make more sense).

  • Wayne (John)-Often referred to as a cowboy coder. They prefer to jump into a project, and use tried and true techniques. It's better to finish the project then spend too much time planning. If you need to come back later and fix things, that's no big deal. No beta, just release.
  • MacGyver-Will spend some time planning and designing, but won't get too bogged down in the details. Tries to make an easily maintainable program, and learns new techniques as necessary along the way. Release a beta, fix bugs, release final.
  • Einstein-Paranoid about failure of any sort. Spend a lot of time preparing. Studies and learns ahead of time about any foreseen new techniques required for the project. Strives to create the most efficient program possible. Release alpha, release beta, release RC 1, release further RC's as necessary, final release.

The cool thing for me was that I finally have some backing for a concept I've believed for a long time: I'm not a spaghetti coder, nor am I a scientist type OO programmer. I'm somewhere between the two. See, like the Einstein types, I think that spaghetti coders generally make crappy code. However, I'm not paranoid enough to take the preparation that Einsteins prefer.

However, I will admit that some projects require the Einstein type of coding. By the same token, I believe that some projects (or rather, some clients/bosses) require spaghetti coding.

All that said, I think it's fair to say that people that would read Framework books sit in the Einstein camp, for the most part. Paranoia is a strong term, but I think it drives these programmers to the lengths they prefer to take with their projects. Now, I do believe that some framework users will probably be in the MacGyver group. But the framework developers themselves, and a lot of their users are definitely Einsteins.

I'm curious, what would you call yourself?

Comments
Which one do I call myself? The title would vary and would be dependant on a few factors:

1) What time in the day it is. (anything after 2am is questionable)
2) What is my bill rate on this project?
3) Is this code I will have to maintain?
4) Will anyone ever see this code?!?!?

:)
# Posted By Dave Shuck | 9/26/06 10:18 AM
Dave,

Good point. Like I implied in my post, I don't think anybody should try to stick to one method. Any good programmer will be flexible enough to adapt their programming style to the needs of the project.
# Posted By yacoubean | 9/26/06 10:30 AM
I agree with Dave - most people change between styles depending on use cases, deadlines and the like.

Only one comment. I don't think "Einsteins" are paranoid of failure, they're just sick of failure! You write so many applications to deadline and each one sucks in one way or another. You always promise that next time it'll be different, but then there is a new requirement or pattern that ends up getting hacked. After creating hundreds of projects under tight deadlines and paying the price for every shortcut with hours of tedious maintenance over the years, sometimes the idea of "writing this one properly" becomes very appealing!

"Writing this one properly" is an unattainable ideal, but striving for it pays off in the long run if you're responsible for maintenance as well as development of lots of projects.

Of course, maybe some people in the third category work for a bigger company and have too much time on their hands - who knows?!

Only one other thing. I identify pretty strongly with category 3 (at least on good days when cients aren't calling and deadlines aren't looming), but I think we need to revisit the name. I'm not an idiot, but who amongst us is really an Einstein?! Can you imagine saying "I'm an Einstein style coder" at a dinner party?!
# Posted By Peter Bell | 9/27/06 1:28 AM
I totally agree with your sentiments about failure, Peter. But I think you might be looking at it from a different angle.

I've known people that are extremely self conscious about their code and the systems they build. If someone comes back later and says they've found a problem, it really hits these people hard. They take it personally. They truly believe that they should be able to make a perfect system, and when they don't, they smack themselves mentally. Other people are very scientific in nature, and like to methodically cover all bases before they code. I think the Einstein/fear of failure description applies to these types.

The thing is, I don't think any of the above three personalities is right or wrong, and none of them is better than the rest. Like we've been saying, it all depends on the situation.
# Posted By yacoubean | 9/27/06 5:22 AM
BlogCFC was created by Raymond Camden. This blog is running version 5.9. Contact Blog Owner