Wednesday, August 06, 2008

Elitist or Optimist

The last few entries have focused more on the industry and leadership than usual. You might find that odd, but the reality is, I write about what I'm doing. When I'm coding in Ruby, you get Ruby entries. When I'm coding in Flex, you get Flex entries. Lately, I've spent more time shaping teams, processes, and individuals -- thus the posts of that nature.

A Scotch Drinker feels I've become Elitist.

I like scotch and scotch drinkers in general, so I gave his/hers entry some thought. You should read the entry if you care, I'm not going to summarize it. But, here's a few quick responses.
  • There's no question that I wouldn't have reached my position so quickly if the competition wasn't so weak. That's not a good thing.
  • I dropped out of college, to say that I'm implying formal education is required is amusing. In fact, no where in my list of things I look for in a colleague do I mention education. I want talented colleagues, nothing more, nothing less.
  • There are plenty of crappy jobs. You know what happens to them when you give them to good developers, they get automated or removed. Giving crappy jobs to crappy programmers is an answer, but not the best one.
While I don't agree with the content of the post, the premise might still be correct.
Elitism is the belief or attitude that those individuals who are considered members of the elite — a select group of people with outstanding personal abilities, intellect, wealth, specialized training or experience, or other distinctive attributes — are those whose views on a matter are to be taken the most seriously or carry the most weight... -- Wikipedia
I can see where the scotch drinker is coming from. My minimum set of requirements might seem like I'm describing the elite. On the other hand, they might just be a good set of minimum requirements.

I think the difference is, I'm not saying we should fire all but a select group or that a select group should run the show. I'm suggesting that the current minimum requirements for being a programmer are disappointingly low and the products that those programmers produce are often terrible.

If you prefer, here's a more politically correct assertion: Any Net Negative Producing Programmer (NNPP) should find a new profession.

Removing the NNPPs doesn't mean that 50% of your colleagues should move on. My last client, TrafficBroker, didn't employ a single programmer that couldn't pass my requirements. They have no need to get rid of anyone. Conversely, my last full time job before ThoughtWorks was staffed with about 80% NNPPs. You're ratio will probably vary, 50% is based on working for ~10 different companies in the last 5 years and discussing my experiences with many friends from ThougthWorks.

As Josh Graham already pointed out, I'm not the first to say this. Yet, I still feel like it's worth brining up. I knew it would generate responses such as the one from scotch drinker, but it's worth taking some criticism. I hope my entry inspires a few more people to be more vocal with the unacceptable state of certain things in our industry.

As an industry we can do better. Every NNPP that finds a new profession helps our industry improve. I'm not looking for a software development elite community. I'm looking for a productive community. That's why my blog posts and presentations range drastically from very beginner to very advanced. I'll write anything that I think is helpful. But, NNPPs are uninterested or unable to improve, and I can't help them.

I'm not elitist, I'm a silly optimist that thinks a simple blog entry can help change an industry.


  1. Denis2:17 AM

    Don't worry too much about the elitist epithet. These days in the US it is used mostly to shame people whose standards are above mediocrity.

  2. Elite is not a problem, as long as you consider it permeable: You can get into the elite by hard work, education, talented folks to help you or you can drop out of it by laziness, stubbornness, unwillingness to change.

    We do not have any formalized (or at least ritualized) means to bring people up to speed. When you're scanning resumes, it is too often too important what somebody has already done, than how fast/how good he is able to grasp new things. And with overtight schedules, ridiculous expectations about developer productivity we are not fostering an environment where people can grow into their job. Becoming elite is 5% Talent and 95% Sweat - so I think we urgently have to do something to re-educate 50% of our industry.

  3. Expecting high standards is good.

    What are your thoughts on people who are eager to learn but just starting out and may not make the cut?

  4. I agree with stf. There are two senses of elite: privilege and merit. The former is what you want to avoid. The latter is just the labor market at work.

    The only thing I'd add is that the same market that's rewarding the programming elite is clamoring for more programmers than the elite can provide. Maybe the industry can't do better - are you suggesting there are untapped talented programmers out there?

    The work's not going away. Meanwhile, programmers can only be generated so fast, and there wouldn't be such crappy programmers if clients and bosses weren't willing to put up with them; it works both ways. To me, it's more of a question of (A) how do you sell excellent programming to customers who don't care about design, and (B) how do you keep good programmers happy so you can maintain the quality of your organization's offerings and justify your price to clients. There's nothing wrong with crappy programmers if the client is paying what they're worth - the problem is that they're paying way more than they're worth.

    The best thing the software industry can do is be more selective in the work they take on. A bad project with crappy clients is enough to turn even the best programmer into a demoralized hack. People write good code when they care; the industry needs to promote this personal investment in the end product. That's one of the things I love about the Ruby community.

  5. @jasonong,

    If you're junior and have the desire, that's perfect. There's plenty of material to start getting you to the next level. I also suggest finding a mentor, or joining a firm that encourages that kind of thing.


    I think as an industry we've helped create the demand. As a developer who spent the more than half of last 3.5 years being brought in to fix other people's problems, I've seen first hand what NNPPs force good programmers to work on. If the NNPPs were removed, and software was built by skilled developers, it would free other skilled developers to build other software. Instead, most of the good developers I know are fixing other people's mistakes.

    Get rid of the NNPPs, and suddenly the good developers have plenty of cycles to work on building software.

    @ everyone

    Thanks for the comments

    Cheers, Jay

  6. Bravo. You said something that I've been thinking, but haven't been able to put into words very well.

  7. having high expectations from your colleagues isn't a bad thing at all, but reality doesn't support it. that aside, what would you do if you had an eager NNPP on your team? it's one thing to tell NNPPs what they should do (i.e. find another job), but it's another thing to do something about if one is more capable. it's a pity that i won't get a chance to work with you.

  8. I think as an industry we've helped create the demand.

    To a certain extent. We probably differ on how avoidable this is in reality.

  9. @dahlia,

    As I said in the original post, if you're junior all you need is a good mentor to lead you down the right path.

    I can't say it enough. Being NNPP and unwilling/unable to improve is not acceptable. However, being junior and eager is great, it's where I started out.

    Cheers, Jay

  10. Tim Case7:11 AM

    Hi Jay,

    Scotch Drinker's post doesn't even merit a response in my opinion, the post has nothing to do with software and everything to do with his own personal politics. Notice that you could take out the software part of the post and apply it to any domain.

    It's an extremly tired and broken argument that we've heard a lot of in the last eight years, and the problem is that Scotch Drinker doesn't even understand the point that he's trying to make because he doesn't know the difference between "elite" and "elitist". An elite argument says that those who achieve should rise to the top. An elitist argument would be saying that only people with formal traning will be allowed to be software developers, an argment that Scotch Drinker himself says that Jay never made. Jay made an argument that we should work harder and hold ourselves to higher standard, it's elite and not elitist. Scotch Drinker, in his confusion about elitism actually makes an argument for the very thing he professes to be against!

    . The bottom 50% of all programmers make the fun jobs possible.

    WTF??? That's a toxic statement reeking of elitism. It's right wing politics that are the root of Scotch Drinker's analysis and not a genuine desire to see the standards and welfare of the people in software raised to a higher level. These simple minded arguments should be left out of our profession because as we've seen for the last eight years, in the political world they can be used as a battering ram for miserable failures.

  11. As you can see by the comments on this entry, Jay, there are many people who understand your viewpoint, so nevermind the Scotch Drinkers. :-)

    "I'm looking for a productive community. That's why my blog posts and presentations range drastically from very beginner to very advanced. I'll write anything that I think is helpful."

    And thanks for that! What I like best about your blog is exactly what you've identified: it caters to both beginner level as well as advanced. And do note, even advanced folks every now and then need to refresh the basics.

    "I'm not elitist, I'm a silly optimist that thinks a simple blog entry can help change an industry."

    I sure hope it does. :-D And if not, turn it into a book! ;-)

    I believe books like Refactoring and GoF Design Patterns have helped make a dent in the industry. (I hope your Ruby version of Refactoring will contribute further.)

    Hey, ever considered compiling some of your blog posts into a book?

    I, for one, would find it to be a handy reference and it'd be particularly helpful to someone who hasn't been following your blog from way back.

  12. @Aman,

    Blog to book, probably not. But, blog to article and article to book, maybe.

    We'll see how I feel after my first book is released.

    Cheers, Jay

  13. I'll choose Sailor Jerry over Scotch every time :)

    Loving your last few posts.


Note: Only a member of this blog may post a comment.