Friday, February 2, 2007

The Talent Gap

In the world of developers, there is a talent gap. This is a true statement. However, the same statement is true for any job type of any sort, at all. In fact, I'm going to amend my opening sentence to the following, which will diminish its truth not a bit:

public bool ThereIsATalentGapIn(string jobType){
return true;
}

No matter what type of job or activity you can come up with, there will be some people who are better at it than others. I mean, to pick a really obvious one to use as an analogy, let's take basketball; everybody playing at the pro level is no doubt talented, but certainly they're not equally talented. Spud Webb was a better basketball player than I could ever dream of being, but Isaiah Thomas was better than him, and Michael Jordan was superior to both of them. One could argue how much better Jordan was, but that's a difference of degrees. The point is few would argue that he wasn't better, just as few would argue that all basketball players have the exact same amount of talent. So if we all agree that the fact that there are different levels of talent is self-evident, regardless of how talent is measured, in any given job, a new question comes to mind: Why do developers in particular seem to devote so much time to visibly obsessing over it?

I mean really, it seems like every couple days on one of the dev aggregator sites, someone has posted a new article bitching about all the untalented clods out there, or advising people on how to hire the best talent, or worrying about where all the talent is going, or who's hiring all the talent, or how you can best pamper and retain your talent, or whatever. The dev world zeitgeist betrays an obsession with talent bordering on the mainstream world's obsession with beauty. What's an Idiot to do?

The first thing I should admit to myself is this is basically a post about my inability to not take things personally. I read tech blogs, I hear the complaints about having untalented colleagues, and I feel a little hurt; as I say in my byline, I don't try to code poorly. I really do keep learning and I really do care about doing my job well. I like to design and I like to write code. However, when it comes right down to the basic facts, I just don't have "it," the magical "it" that makes you a monster developer, just like I don't have "it" that makes me a monster basketball player. I mean, I have more "it" at developing than playing basketball, but anyway you get my drift.
Sometimes it seems like the Great Talents just don't want us Idiots around. In concept I can't blame them, I guess, but you know, an Idiot can have his place, especially if he knows he's an Idiot. I've worked on big software projects where I was on a team with a couple Talents and a bunch of idiots. The Talents generally did amazingly difficult things and challenging things and the Idiots got the more basic, line-coding work. And you know what? It worked great. I don't want to make the "sample of one" mistake, so I won't assume our results were typical, but in our case the Idiots knew they were Idiots, and didn't try to go all high-minded or outthink anyone. We stayed within our skill range, did what the specs told us, and kept a low profile. As a result, the Talents got to concentrate more on their high-end stuff and make that work better. Also on this point, I wonder what would happen if there were no idiots. Would all software development suddenly rocket to unprecedented heights of excellence and productivity? Would we reach development nirvana? Would the "oh there are so many untalented hacks out there in software developement, why can't I work with REAL Talents?" blog posts and articles stop? I doubt it. Considering the adaptive nature of the human psyche, I imagine it would be a short time before the talent bar simply got raised, so that instead of people in say the 75th percentile of talent being considered idiots, people in the 80th percentile would get the abuse. Then when they left the industry it would be the 85th percentile, and so on. I think it's just human nature, and the bitching and pontificating and ruminating will continue ad nauseum.

So in conclusion, and to return to my earlier, not rehetorical question, what's an Idiot to do? Personally, because I can only speak for myself, I try to be aware of where I stand in the talent continuum, and decide what I want to do about it, keeping in mind that I'm only going to be able to do so much before I quite frankly run into my own personal talent ceiling. I think it sucks, but that's just life. Hard work will get me to a point, but it'll never make me a naturally gifted developer of the same caliber as the Great Talents. Also, of course, I work hard, and stay as good as I can, recognizing that if I remain mired in line-level work, sooner later I risk being replaced by cheap coders from Russia or something, and that that's just the way it goes. I don't want it to happen, and I'll do everything I can to prevent it from happening via hard work (c.v. above) and education, but as more people get brought into the talent pool, what Talent Percentile I'm in will change constantly.

And lastly, I can stop worrying about my rank in the Talent Pecking Order so damn much. I'm lucky I get to do something I consider fun for a paycheck, and I'll keep at it as long as I can. If I was gonna be a Great Developer it'd already have happened by now, so there's no point in fussing over it. I need to just focus on doing the best I can with what I have, maximizing my talents and minimizing my flaws, and let the chips fall where they may. It's the best I can do.

2 comments:

Anonymous said...

Hey man. I sympathize with you. I'm also an Idiot developer, tying to get along. I like your writing...keep up th good work.

Anonymous said...

I have a few issues with this, but for the most part, I think you are correct.

The first issue I have, is that you don't HAVE to stay in that idiot programmer camp. I've met a lot of the idiot developers and it seems to me that they were like that, not because of a lack of skills, but more of a lack of ambition to actually become better. It's the same philosophy behind the idiot Talent that I see every day too. The idiot Talent are the ones that frequent worsethanfailure.com (formerly the dailywtf.com), and posting "better" solutions than what was posted... All the while critiquing others about how they messed up their solutions and didn't post the most efficient one. I guarantee that most of these "Talents" are sitting at work, drinking cappuccinos and silently snickering at how they would do it "better". The problem with these idiot Talents is that they have stopped learning too. They have found the "best" solutions and now want to stick with those, because... well, how can you get better? This is the same problem with a lot of the idiot developers I have met. They trudge along doing things the way they were shown by some "Talent" and don't even bother to check their work.

The best day in my life is when a "Talent" told me that I did it all wrong because his way was better. We did it his way and I left my way commented out, with a note that specifically said his code would break under a certain condition and mine would not. That condition happened. It wasn't my best day because I got to prove him wrong. It was my best day because I finally taught him that he wasn't as great as he thought he was and he needs to step up his skills a notch, and his ego down a notch.

If you never stop learning, you are the Talent that companies want. Just because you wrote some buggy code doesn't make you an idiot developer. It means that you made a mistake... Talent's do it all the time too. If you want proof, go read the comments on worsethanfailure.com...

By the way, why did you stop writing? I found you today and was impressed.