Tuesday, February 12, 2008

The Talented Developer

A recent Coding Horror article talks about the "experience filter" that many hiring managers tend to employ when selecting candidates for a software development position:

This toxic, counterproductive years of experience myth has permeated the software industry for as long as I can remember. Imagine how many brilliant software engineers companies are missing out on because they are completely obsessed with finding people who match-- exactly and to the letter-- some highly specific laundry list of skills.

I'd add that in many cases I've seen, you could also add the "BS in Computer Science" degree requirement to the myth as well.

Now, I don't want to get into a discussion of whether a CS degree is worth it or not: That discussion has been going on for years and there doesn't seem to be any clear answer one way or the other. And with the recent (and very worthwhile) discussions taking place about Computer Science, I don't think the matter will be settled anytime soon.

My point is, much like the The Years of Experience Myth that Coding Horror discusses, there are plenty of great developers out there that get tossed aside because they do not have "BS in Computer Science" stamped on their resume somewhere. And these aren't developers that don't understand data structures, algorithms, or any of your typical Computer Science material, either: Some of them in fact have - many even have quite a bit of - CS education under their belt. But because they don't have that piece of paper that says "Degree" on it, they get dismissed out of hand as being unqualified.

I always get frustrated by this, because it's a sign that the people that make this decision are confusing knowledge with talent.

Of course, trying to define "talent" in and of itself is hard to do...which is probably why some out there mistakenly rely on the knowledge side of the equation to help them get at the people that may have talent: Basically, they're taking a gamble and hoping that it works out in their favor.

And unfortunately this works against far too many talented people out there. I've come across many developers in my career - many with no degree whatsoever - having the ability to work with some of the most amazingly complex systems and concepts you can imagine. They've written some of the best code I could ever hope to work on, and were some of the best people one could ever hope to work with.

I've also run into my fair share of degreed individuals that couldn't program their way out of a paper bag.

My own experience might be anecdotal, but it begs the question: What makes a developer talented?

I've never seen any clear-cut idea of what makes someone "talented" - in this, or any other, field. Is it passion? Probably. Ability to learn? I'm sure that's in there, too. But is there some characteristic that's easily observable in people that can rightfully convey talent one way or the other?

After reading articles like this recent Raganwald post - which is best summed up as "Finding talented developers is pretty damn hard to do" - it seems to me there's no simple answer. And Reg's post makes mention of the fact that you need talented hiring managers in order to find talented developers (and who finds the talented hiring managers? Nice little recursive problem we have there).

Of course, we can all find examples of talented developers out there: Someone like Linus Torvalds (and probably a most of the Linux kernel developers), Matz, John Carmack...and so on. But is there some shared characteristic between them all that you can use to say: "This guy (or gal) has it"?

Whoever figures that out will corner the market on talent, I'm sure.

6 comments:

typical programmer said...

"I always get frustrated by this, because it's a sign that the people that make this decision are confusing knowledge with talent."

It's worse than that. The people making the hiring decisions are often confusing credentials with talent, or résumé writing skills with talent.

A lot of candidates are eliminated in the earliest part of the process, when interviews are scheduled based on buzzwords in a résumé. Worse, this first selection of potential candidates is frequently outsourced or done by receptionists or HR people who only compare the résumé to a list of qualifications.

Eric said...

> Worse, this first selection of potential candidates is frequently outsourced or done by receptionists or HR people who only compare the résumé to a list of qualifications.

So this means that you may actually get the best candidates through your own network of people you trust.

It's like selecting a movie for tonight. I like what John usually likes, so there's a high probability that I will like the movie he's recommended for tonight.

Maybe we can call that the "Movie filter"?

Eric.

Brian C Cunningham said...

"So this means that you may actually get the best candidates through your own network of people you trust."

I've always felt this was the typical way most successful companies have acquired the top talent: by leveraging their existing workforce to find people they know are talented.

It's like the saying goes: "It's not what you know, it's who you know". Although typically used in a derogatory manner, there's actually a lot of truth to it.

And as for the buzzword soup that you have on resumes today: This has evolved to the point now where if you don't include some hefty number of buzzwords, you'll never have any hope of getting your foot in the door, but having them doesn't actually tell you a damn thing about a candidate. How anyone has managed to keep their sanity while combing through the buzzword thicket is beyond me.

Sammy Larbi said...

"Now, I don't want to get into a discussion of whether a CS degree is worth it or not: That discussion has been going on for years and there doesn't seem to be any clear answer one way or the other."

Followed by:

"there are plenty of great developers out there that get tossed aside because they do not have "BS in Computer Science" stamped on their resume somewhere."

I guess that pretty much ends the discussion. =)

The thing is, we're not talking about someone going to a two-day course (or 6 weeks, or whatever) and getting a certificate to prove they attended.

We're talking about someone who had the dedication to stick it out for around 4 years, at least two of which was filled with learning outside of the profession.

A degree is so much more than "Knowledge: check." In fact, I'd argue that all those other benefits are more important and more useful than any "knowledge" you get from the degree (at least as far as CS goes).

I know /I/ wasn't quite prepared for the real world of development as a result of my BS in CS, but I did learn other things that have been more useful to me.

Brian C Cunningham said...

As I said in the post, I'm not going to get into the CS degree discussion - I've heard many a valid point supporting both sides of the argument, and there's really no correct answer: It really comes down to a matter of personal preference.

The point was that talent isn't necessarily a factor of how willing someone is to sit through a class and do coursework, get a degree, take a certification, or what have you. There's some other factor(s) at play that makes someone perform very well in a given career path.

Many people fail to realize that some of the most talented individuals in our industry didn't have their degree when they became successful. Examples: Bill Gates dropped out of Harvard, and Steve Wozniak didn't finish getting his until well after founding Apple.

Plenty of people commit themselves to getting a degree, and it's certainly a commendable achievement...but it's not necessarily and indicator of talent. I've seen proof of that firsthand.

Chris Ammerman said...

> Plenty of people commit themselves to getting a degree, [...] but it's not necessarily and indicator of talent.

What good is talent without commitment? There are lots of really talented developers who nonetheless are completely worthless on a project because they can't focus long enough to get it done and done right.

If someone has the experience to back it up, I see no problem with hiring a developer without a CS ore related degree, and paying them commensurate with their experience.

But if someone doesn't have any degree, they'd better have held at least one long-ish job, to prove that they can stick with something.