The Two Types of Programmers

Wow - talk about stirring up the hornets nest.

I agree with many of the previous posters that the generalizations are a big steaming pile of crap.

This is pretty much how I shape up:

  1. First Linux install was in 1992 - 0.99 patch level 11 alpha
  2. Don’t know the first thing about compilers, frankly don’t care, either
  3. I’ve heard of Lisp and Haskell
  4. I don’t participate in open source projects
  5. Always try to keep myself up to date with the latest trends, tools, etc.
  6. I’ve never worked in writing internal apps - mine have been out there being used by real people
  7. I don’t just settle for what MS hands to me - I use the best tool for the job
  8. I’ve used Linux, and personally I like what it can deliver
  9. I’ve used a lot of SCM tools (Perforce, VSS, CVS, ClearCase, etc.)
  10. I don’t forget about computers on the weekends

Let’s see - that would put me somewhere between the 20% and 80%. Then again, perhaps I won’t ever make the so-called “top 20%” anyway. In either case, I’m happy. Why? Although I’m not a computer fanatic, it’s been an integral part of my life and I’ve enjoyed it. Hell, I started out on the old Atari 8-bits way back when.

I have a family who would like to see me every once in a while. In addition, I also have hobbies and want to enjoy an active lifestyle where I can actually enjoy myself. Besides, my body would appreciate not sitting down all day (think Carpal Tunnel Syndrome, deteriorating eye sight, weight gain, etc.)

I gave a small presentation the other day about orders (as in associations) in informatics and their control and something that I called global misalignment (where the misalignment is about schools, enterprises, people and the others, or basically what you talked about in your post). Personally I think that we need laws and control to help realign everything and create a climate of understanding that will help build a more regular world in informatics. I think we could compare that goal to what exists currently in engineering, medecine or law.

Some of the comments remind me of a similar reaction to one of Stevey’s posts.

http://steve-yegge.blogspot.com/2006/09/good-agile-bad-agile_27.html

There is a very interesting comment by ‘cwells’ in response to those comments.

“To the people who complained that because they have other priorities besides programming (families, hobbies, etc) they’ve been lumped in a “lesser programmers” category I can only say this: if you have other priorities besides programming, then you are, by definition, a lesser programmer…”

You should read the full comment. Its pretty interesting. In fact, I have bookmarked this portion as one of my favorite quotes in tumblr.

“The hour-a-day jogger isn’t going to make the Olympics. The eight-hour-a-day programmer isn’t going to write Linux.”

(Disclaimer: Just Quoting. Not My Personal Opinion)

one more vot for putting people in boxes.

If i go by the description i’m in the 0% between the 80% and 20%

because I’m definetly not in the top 20% but also very definetly not in the bottom 80% so that’s what boxing gets you.
A very big population is falling in the 0% if I have to go by the comments posted here.

Jeff I think you manage to write for both audiences. I try and write for the 80% because so much of the documentation and articles out there just skip over assumed knowledge and we aren’t going to grow our little community if we don’t bring in new people.

That and I would prefer not to inherit the code from an 80%er

This also goes along the line of having passion for your craft as well.

I think that the 20% obviously have the passion where as the remaining 80% just think of it as a job.

I posted something similar to this about Why Programming is Fun! (http://www.dcs-media.com/desdev/opinion/why-programming-is-fun.aspx). :slight_smile:

Hope I contributed a little thinking to this great post.

Yup, I don’t see myself in either of those two groups.

I know about Linux, have dabbled with it, but in the end it’s too much effort for very little pay off (in terms of work done and productivity) except meaningless bragging rights.

I work on weekends and long hours when needed, read books and blogs about my chosen specialism in my spare time, but I couldn’t give two hoots about the benefits of one compiler over another, or one source control system over another. Use what you feel happy with, what is availble or what gets the job done.

I’m good at my job, like to learn new stuff and keep on the bleeding edge. But I’m also all about getting the job done in the most practical, simple and elegant way I can in the time available.

In the end, I’m a pragmatist. Can I have a special group of my own, please?

Seems like the list of 14 is more useful than a list of two.

I’m going to install linux right now…

What total and utter crap. I’m certainly not an alpha in the 20% but I’m just as certainly not in the 80% vocational. You make the 80% out to be lazy idiots!!! I enjoy programming on weekends…if I have time between family commitments, source control is great (I just hate Perforce which is what we use at my place) I love computers. In what spare time I find, I enjoy learning how to use XNA, I respect and play with Linux occasionally but find no real use for it in my day to day given my job and family needs.

You and this Ben Collins-Sussman seem to think anyone in your “80%” list are stupid lazy idiots just in it for the money. Some of us are to be sure, but many of us are like me…in it for the love of computers but not willing to sacrifice having a life. You need to get off your high horse and stop looking at the world like it’s black and white.

The arrogance in your post today reeks, it’s very disappointing.

Whatever you call the elite and the unwashed masses, I am firmly in the latter category, but I’m not defensive about this. There are far too many innovations at every level of software design for anyone to keep track of more than a handful of them, so the distinction is more accurately “do you know the trendy stuff or not?” than “are you a REAL PROGRAMMER or not?”

I don’t, or am not, and I am fine with that; I was a biology major who stumbled into programming. While I would love to be part of some truly innovative group, I require the stability of a job that will pay my mortgage for the time being.

I don’t think the language or source control choice is what’s important, either; what’s important is whether or not the developer is creating something that really makes a difference to the end user, whoever that may be. Twitter may be entertaining, but I have absolutely zero interest in it, and I am not remotely sad that I didn’t develop it. I am a little sad that I didn’t think of Google Maps.

Is it really so easy to generalize? Also, is being in the so called 80% really that bad?
I’ve been programming since some time now and I feel everyone of us need not be an ‘astronaut’. Also from my own experience and of others I can say that many of us shuffle between these two ‘types’ depending on a lot of factors… especially the work assigned!
An important thing for us to realize is that we work in a “knowledge” industry.

I do believe there are two different types of programmers, but I’d describe it thusly: there are those who decided to do it as a job, and those who were born to do it as their life. The difference is huge, which is to be expected; someone who has programmed for almost their entire lives will, obviously, be better than someone who rocked up to college at 22 and decided he wanted to be in IT for the money.

However I find the other assertions in the quoted sections to be crap. Does coding directly in vi on a Slacwkare distribution somehow make you superior to people who use Visual Studio? Sounds a lot like the “I only write web pages in notepad cause I’m hardcore” bullshit. Anyone using notepad to code is an idiot, and the expressed sentiment is the same as the anti-MS stuff: nothing more than masturbatory arrogance by small minded people.

I do think there is overlap and so the 80/20 split doesn’t hold. Personally I do internal company work, but I also like to dabble with writing compilers, and I was running Linux in the mid-nineties.

The split I see is between people that are interested in the technology and want to do a good job vs. people in the industry that never learn, take the easy way out, and generally just weigh down the rest of us. The number one person on this list is the guy who hates version control. Second guy on the list is the argumentative guy with the associates degree that doesn’t even know enough to know why he’s wrong.

I also want to counter the claim in here that you can’t have a life/can’t talk to girls and be a rock star programmer. Some of the coolest people I have ever met were at a Java conference. Some people are just plain better and can do it all. I am not one of those people :frowning:

What change do you want to effect exactly, Jeff?

Also, where can I find some of your elite 20% code?

I think I spend entirely too much time studying new technology and need to cut back but at least I don’t write lisp compilers. I’ve always thought too much intellect has it downside but few intellectuals will admit to that.

All your math jargon makes me smile, n+1??? I prefer practical matters like a regular expression to strip the styles from a Word document saved as HTML.

“…Anyone using notepad to code is an idiot…”

  • Dave G.

Interesting, apparently the 80% have the same problem as the 20%.

What total and utter crap. All you so called self-appointed ‘alpha’ geeks are nothing more than a bunch of consultants, writers and trainers who haven’t built (and long supported) a system of any size for so long the best you can muster is a rant into the echo chamber that is the blogsphere…‘Why can’t everyone be like us!’.

Please. Most real ‘alpha’ geeks are not writers, trainers, consultants or bloggers (although they do read blogs) and do you know why?..Because they are all too busy writing code and would rather be writing code than anything else. Look closely at the core Windows hackers, Linux hackers etc etc…none of them are looking around and wondering why won’t the unwashed masses follow us! Jeessusss…they are too busy writing code for systems that people actually use.

In my experience, alpha geeks are dangerous on projects that need to be finished on time and budget - the project risks drowning in endless discussions on purity of implementation of a design pattern or some other unimportant stuff that always takes precedence over delivering the project.

I have to agree with the people who call this a crock of arrogant poop, because of the sweeping generalisations.

Firstly I very much doubt that this is an 80/20 split. Do you really believe that one out of every five programmers are trailblazers and trendsetters? 5/95 is more likely.

But more importantly I really don’t understand why Ben and you think that only those trailblazers care about what they do. In my world there is quite a lot of space between “just good enough” and “trailblazing”.

And I’m quite sure that you wouldn’t say a similar thing about another profession. Do you think that your doctor takes less pride in her work because she is not a cutting-edge scientist? Or that your plumber cares less about his craft because he doesn’t spend his weekends playing with pipes and taps?

I am not ashamed to say that I am not a trendsetter or a trailblazer. And I do write internal applications for a bank. And I do not spend my weekends installing Linux. I have other hobbies apart from programming, and I have a family, and - believe it or not - I’d rather spend time with my daughter than install Linux. (I imagine it’s a lot easier to be a trailblazer when you can lock yourself into a room and let your wife take care of house and family - not an option I have.)

But this does not mean I and others like me don’t care about doing our jobs well. Just as Andrew Webb says above, we attend training, we use source control, we keep up with the news, we care about good design, and we do our best to write the best code we can.