Wednesday, January 11 2006

an overwhelming percentage of software developers imagine themselves to be far above the norm - they themselves conveniently fit that top 2% echelon, they believe

Several readers have emailed to ask how my "Optimal Software Development Processes and Practices" entry -- which was surprisingly well received -- compared to several better-known software development guideline papers. For instance Joel Spolsky's superlative "The Joel Test: 12 Steps To Better Code".

"Read them all and then adopt what sounds right to you," I replied.

IMG_3307

To expand upon my answer a bit, my entry is a listing of high-level management practices that apply to virtually any team involved in virtually any type of software project. If you have accountable software developers; you're focused on solving the right problem, using the right platform, tools, and technologies (given that they've done the research, and they're not tied up having camelCase/PascalCase wars, developing a redundant GFA Basic solution for the Atari ST); you have a history of accurate, detailed time information to draw upon for estimates and to really know the capacity of your team -- which usually indicates a grizzled, experienced management that is more attuned with reality than is the norm; you have full transparency of how the project is progressing and what is getting done; then you have a much better probability of success.

Yet these basics -- these core fundamentals -- are sadly missing from many software development teams.

It is, however, fairly typical of papers of this genre to look for something seemingly unique -- some sort of hook -- that'll grab the masses as the silver bullet. One which they can quickly implement in their process (for instance a poorly used and abused bug tracking application, or a hashed out daily build script that has been failing for months but no one has noticed because it has no utility, or partnering up developers in pair programming, or implementing code reviews, or pursuing test-driven development) and claim success. "We score a 9! Awesome!" they gloat, high fiving and then returning to the continuing cycle of project failures.

One common silver-bullet hook these days is the classic "only hire the best!" mantra, and I thought it worthy of special mention.

"Only hire the 2% of software developers!" these advice papers crow. "We ensure that our software is top notch by rigorously putting our interviewees through 19 interviews, by asking clever brain-teasers from How Would You Move Mount Fuji, and then by having them design and implement an embedded operating system on a whiteboard!" This is usually accompanied by a "how to spot a great developer!" listing which could better be described as "How the author would find themselves in a pile of applicants".

This arrogance isn't limited to the authors of such silver-bullet recommendations, though. In conversations and forum threads discussing such a top X% recommendation, one quickly comes to realize that an overwhelming percentage of software developers imagine themselves to be far above the norm -- they themselves conveniently fit that top 2% echelon, they believe, so of course they agree: Let the banks and the IT shops take the other 98% (the duds), because the top 2% are too busy making webmail interfaces and bug tracking applications (as ridiculous as that sounds).

The problem with such a "only hire the best!" proclamation, however, is that it's meaningless from the start -- How do you select the top X%, given that the number of attributes of a software development team member is virtually infinite? How do you quantify prospective talent universally like this given that what really matters to you varies dramatically based upon what you're developing, what fit the developer will be in a team, and how you're going to manage them?

If you're a poor manager and you fail to utilize a talent properly, or if you choose the wrong talent for a particular position, it can be an absolute disaster, or at least a non-optimal situation.

The top 2% in one realm was the bottom 2% in the other.

To draw from personal observations, I've known some remarkably intelligent developers who would absolutely storm a path of success in one type of project, in one type of role, basically designing, implementing, and delivering a remarkable project almost single-handedly. Yet they would wallow fruitlessly for months when put on another project. Whether it was because they had no motivation or passion for the new project, or that they simply couldn't adapt to the new requirements -- which is remarkably common. Great developers, young and old, often have a niche where they are remarkably strong, outside of which they falter -- the results were the same: A great developer was being wasted on a project that didn't leverage their strengths, and a project had a deadweight superstar that couldn't catch on. The top 2% in one realm was the bottom 2% in the other.

There are many projects and situations in which John Carmack and Linus Torvalds would be complete disasters.

There are many who'll disagree with me. "That's hogwash!" they'll say. "I can do anything well, it's just that IIS is a piece of crap, and the MSDN documentation is all wrong, and Microsoft is evil, and there's this strange behaviour with the MSXML Library -- that wouldn't happen on Linux! -- and that really screwed up my timeline, and....". Sure.

Of course this could be countered by claiming that the "top 2%" refers to whatever pet dogma the speaker subscribes to. "The top 2% writes test cases before writing code, comments all code (in RoR of course), and does their timesheets by 4:30pm every day".

And thus it is explained how every developer can claim to be the top 2%, and how every elite-herder can claim to hire only the top 2%: They simply adapt the meaning to describe whatever practices they adhere to, whatever techniques they use, and their personal skillset, or by simply describing the candidates who made themselves available to them, and who accepted the position.

In that way we can all be #1.

   

Reader Comments

I agree 100%. The arrogance in this industry is out of control. The top 2% is a myth, and even if it existed, you certainly don't need them to write web apps, or even to have sucess. Way to hit the nail on the head, Dennis.
Phil @ 1/12/2006 6:48:29 AM
I agree fully too. The top 2% they get with that kind of tests may be the top 2% academically, but not necessarily the top 2% best engineers.
jorgen @ 1/12/2006 7:08:09 AM
Awesome article Dennis! You're so right.

Maybe there is an amazing superset that can do exceedingly well on *any* kind of project, but they probably retired at the ripe-old-age of 29.

I think I've found a new substitute for that other less-humble feed.
Ryan Elisei @ 1/12/2006 8:14:37 AM
Not sure how to qualify top 2%, but bottom 80% is easy to spot, and they will NEVER be top 2% in anything. You guys must have been hanging around good teams exclusively if you don't recognize this. I mean, 80% of developers in large corporation is plain deadwood - how else would you explain Senior Scheduling analyst that spends 2 months of dedicated time to develop algorithm to execute job "every first Monday of the month"? It happened to me...
Zeljko @ 1/12/2006 8:19:26 AM
This is ridiculous. The subject is something I would point any aspiring tech student to recognize before entertaining any thoughts towards a potential career path. Consider professional sports. There is very little space for star players, yet a large percentage of the general public would love to be in their place. Highly exclusive.

Now allegedly, there is tremendous demand and starvation for quality high tech employees. There is very little supply of good reliable engineers in the Unites States. I studied with many of the top ones, and out of those, very few I'd say belonged there and were highly competent and passionate about the work (passion is especially rare I'd say). Yet, even for those that do fill in the description of the top 2% - there is this great insurmountable force field arranged to prevent people from obtaining these jobs, which, allegedly, are in such great need for talent. Huge gap for talent, yet extreme exclusion against competent candidates and a universally unwelcoming attitude against all prospective entrants to the field (no wonder women are so scarce in the technologies!). In my current workplace they had a vacancy for over a year! It boggles my mind how they could not find a single good entry level candidate in all that time. There is something weird that does not map correctly in my head btwn talent in "the real world" and the academic world. (even applicants from MIT were ignored). It is a great contradiction. I would not recommend ANYONE to go into this field of computer science. I love it and cannot see myself doing anything else, but I tell you if I did not get so much internal satisfaction through it, I would kill myself instantly - because externally you have EVERYthing imaginable set up as a force field against you to prevent you from succeeding. (and couple this fact with the great inexplicable mentality that jobs are booming and people are in demand).

The top 2% of the real world business execution of information technology and computer science development is a sham arranged by an incompetent elite. So in a way, I do agree with the author, but overall I find it to be worse than he describes. For example, if I read another mindless "life is good" blog entry about someone working at Google or Bucksnort Labs or wherever, finding it so great to be among all these above average people, like being back in college (out of one death camp and into another), I think I'll erupt framing debris from all orifices.

I don't know how this comment got so long, maybe I'm just a little bitter already (at only the age of 24).
vanjulio @ 1/12/2006 8:20:04 AM
<i>For example, if I read another mindless "life is good" blog entry about someone working at Google or Bucksnort Labs or wherever, finding it so great to be among all these above average people, like being back in college (out of one death camp and into another), I think I'll erupt framing debris from all orifices.</i>

[Laughs!] That was beautiful, man.
Shane Celis @ 1/12/2006 10:10:11 AM
Dennis this is a great little essay. Keep 'em coming.
@ 1/12/2006 3:10:00 PM
Nice one Dennis
Nige @ 1/12/2006 9:18:13 PM
There might not be a top 2% but there are people who are just "better" at programming computers than everyone else.

These people are usually in niches though, meaning Bob is really good at c++ or Tom is really great at php... but I have met some of those people. There are not a lot of them.

Managers who claim the "top 2%" mantra might think they are hiring the top 2%. And maybe in that local geographic area they are.

In the end it is hard to say what makes someone great at what they do, but when you see it you know it and when you dont you know that too.
tonetheman @ 1/13/2006 6:53:37 AM

Add Comment

Name *:

Email Address:

(your email address is not displayed)
Website:

Comment *:



About the Author
Dennis Forbes Dennis Forbes is a Toronto-based software architect. While focused primarily on the .NET and SQL Server worlds, Dennis frequently ventures outside of this comfort zone into game development and image processing. He has been published in several industry magazines, has been quoted in the Wall Street Journal and has been interviewed by NPR.

He is a vice president and lead software architect at an innovative New York City hedge fund back-office services firm.

Dennis has been working on solutions for the financial, telecommunications, and power generation markets for over 15 years.





 

Dennis Forbes