On the Skillfulness of Developers (part 1/2)
I’ve looked at alot of resumes recently.
Let me start with an observation: I am amazed at the number of people who think the more technologies and languages they know, the more attractive they become as a developer (or worse still, the better they are as a developer). Adding keywords to the soup that is your resume isn’t beneficial. Although, in a self-defeating way, maybe the type of people who think adding more keywords to their resume deserve to work at the type of employers who agree.
This got me to thinking: along which dimensions are developers skillful, and how are resumes analyzed? I came up with three areas of technical skill. Non-technical issues are left for a different day.
- Expertise — The specific knowledge about the domain in which you are currently working. A programmer with 10 years experience in Java probably has a high Java expertise.
- Aptitude — The ability to find, invent, connect and implement solutions to problems. A high-aptitude programmer is the one who has incredible instincts, always chooses the correct architecture or data-structure, and tracks down bugs no one else can.
- Versatility — The collection of (abstract) algorithms/solutions/concepts you’ve mastered and bring to any given problem. A programmer who has patches in the mainline linux kernel, has worked on several highly-scalable websites, and spent a few years writing highly parallel supercomputing applications would likely be very versatile.
Expertise: The Favored Dimension of Bad Jobs
Expertise is a special kind of experience that’s extremely important in the day to day for a programmer. In fact, of our three dimensions, expertise in the problem at hand is probably the single most important in terms of your daily productivity. So it would make sense that some employers seem to stress this aspect. You need to be an expert at Java to get a Java job, right? And you need to have 5 years of experience in web development to do well at this company. It all makes sense, right? God no. No, it does not, not at all.
I cannot believe how pervasive this logic is. Not long ago the reddit founder mentioned that he often hires people that don’t know the language they use at reddit (Python).
I don’t think we’ve yet hired an employee who knew Python.
Some people found this comment surprising. Too many people. It seems too obvious to me that previous experience in a language is, at best, a small bonus. To some people, however, the idea of getting a job without knowing the language of the company seems sacrilegious (or dangerous, or amazing). I feel sorry for those people.
There are three big problems with valuing expertise highly:
- A lack of relevant expertise can be remedied relatively quickly.
- Expertise will never make up for a lack of other vital programming skills.
- You can’t be an expert on everything.
Lacking expertise is temporary. Very temporary.
An extremely smart developer from a varied background can become functional very, very quickly. He’ll be an expert with Python in no time at all. Yes, there is some learning curve, but unless you plan on getting rid of someone after a month, there’s absolutely no reason to worry about this. A lesser candidate with superior previous experience will be better for, at most, half a year (and that’s being generous). The stronger candidate will be better forever after.
Lack of the other skills is (almost) forever.
Secondly, absolutely no amount of expertise is going to fix someone who lacks either of the other two key qualities. An expert programmer from a narrow background will miss solutions when faced with new problems. An expert programmer who lacks aptitude is, well, an oxymoron. What’s really happened is he’s fooled you with extensive experience but as it turns out, he’s not all that good of a programmer. He has bad instincts and people spend far too much time cleaning up his messes. Ten years of making messes for other people to clean up is not experience we should value.
On “experience-centered” job requirements
Lastly, and maybe most importantly, comes the idea that not everyone can be an expert on everything. A simple thought experiment makes this clear. Somewhere out there is the greatest programmer who is alive today. He is brilliantly well rounded in both technical and non-technical skills. Chances are pretty high this programmer doesn’t have the required set of experience you are looking for. That means your job search process has screened him out. How can we take any approach seriously when it removes the absolute best candidates in such a silly way? Can anyone seriously argue that this guy is an inferior candidate? Shouldn’t we strive for a hiring process that at least grants the best programmer in the world an interview?
If you are one of those places that has hard experience requirements, you had better have a very good reason. Why, as a manager, would you ever devise a system where so many of the best people in a profession can’t get the job you are offering? Especially when the switching costs are so low, when the missing experience is remedied so quickly.
I cannot figure out why people insist on hiring people with 3-5 years experience in their 5 favorite technologies. And for the life of me, I cannot figure out why programmers keep seeking out skills so they can get jobs at those places.
Part 2, next week, on how we as programmers & managers alike get away from this nonsense, towards something more meaningful.
July 13th, 2009 at 1:34 pm
yep. exactly.
July 14th, 2009 at 4:01 am
The problem is with resume filtering by employment agencies and employers. What company today doesn’t use employment agencies (consulting companies) for most of their hiring? And when they search the job boards, they search based on the requirements they received from the employer (which are usually ridiculous). They don’t know anything more, so they simply put the keywords from the list of requirements in their search, and if those keywords aren’t in your resume, your resume won’t show. After 25 years in
software development, I can say without hesitation that the job search has become absurd!
July 14th, 2009 at 7:11 am
I support Dave. I am relatively fresh in software development (just 11 months industry work-ex
. While looking for a job recently, i analyzed – the lesser keywords, the lesser chance of getting jobs. So, if you are working on online systems include everything from XML, HTML, SOAP to SQL and Python. One way this can be explained is that more keywords means more permutations and combinations, and hence higher probability of getting something. However it has a disadvantage. It results in higher volume of garbage results, which you might not be interested in. So, if you are seeking for a very specific job, go for a very specific keywords in your resume.
And yes, a great and careful analysis.
July 14th, 2009 at 8:43 am
I think the reason so many employers seem to seek out the experienced candidates is that the people doing the hiring have no idea how easy it is for someone to learn a new programming language. Managers and HR people who have never written software compare learning a new programming language to learning a new natural language (takes years to master), but the reality is that a new programmer can pick up language basics in less than a week and learn more advanced techniques in just a month or two.
July 14th, 2009 at 9:47 am
I think your perspective is too limited. Nowadays programming is primarily web development which requires a far broader range of experience and expertise than being the master of a programming language. Web development requires a great deal of hard knowledge which you only gain through extensive research and experience. A web developer may be expected to use Photoshop. I’ve even been asked to do marketing because SEO is too technical! Just consider MySQL and all the little pitfalls and gotchas there are to trip you up if you decide to just “pick it up” on the project without having any experience with it. Your skills aren’t going to save you from what you don’t know that screws everything up, like that pesky Byte Order Mark that caused me a world of grief.
July 14th, 2009 at 2:33 pm
While I agree with the idea of hiring programmers with no experience in the programming language of a given project, but the other environment also plays part in terms of coming up to speed. For example, a pure core Java programmer is of no value these days, simply because projects are not done that way. What you have is – Java EE, Spring, EJB, JBoss …. I suppose you get the picture.
I surely like developers that have programmed in various language, but have also programmed the language that I am looking for, because that does bring a wider outlook to the problem at hand.
Your thoughts perhaps are not that applicable to companies hiring contractors, because a company expects a contractor to be productive from day one (forgetting the domain knowledge part), and that puts pressure on the hiring managers to hire people that have at least some experience with the language.
July 14th, 2009 at 3:37 pm
I would agree that my thought process above falls apart for short-term employment like contracting and free-lancing. That’s a different beast, altogether.
July 14th, 2009 at 6:31 pm
” …how are resumes analyzed ..”.
I did not expect ever to read an essay making the points nobody seems to be aware of now. If the other contents at your site compare to this, I have made my day.
1 – “I’ve looked at a lot of resumes recently.”
From the analysis that follows your statement I doubt you read them in or for a HR department. Otherwise, you are the first (or only) intelligent HR “recruiter” I have seen in 40 years. [ Checked your site:about and I doubt you function in a HR department ].
In IT (that is my field of experiences ) , when a job application is not handled DIRECTLY by the IT requester / client and it has to go through any flavor of HR process , the resulting hire is flawed or totally botched.
Grasping the concept of “versatility” is above the head of anyone who decides or ends up “making a career in ‘Personnel’ “. If you factor in the extra layers of ignorance implemented the last few years by the plethora of recruiting agencies, the picture is calamitous.
2 -” .. three big problems with valuing expertise highly ..”.
Your solutions are obvious to you – ever tried conveying this intelligence to “human resourcers”.
3 – Louis says — “That’s a different beast, altogether.”
I do NOT agree with Louis on that one.
Having been employee and self-employed or free-lance, my view is that you just need to employ an excellent free-lance resource to tackle that beast and to accurately handle the needs for “short-term employment like contracting and free- lancing”.—-
I will examplify with two of my experiences : –
3.1- The worst : CTG USA 1987-8 and CTG Belgium 1991 : permanent staff in HR or Sales to “recruit” outsourced consultants : a disaster. —-
3.2 The best : Legent €urope 1994-5 : a free-lancer to recruit outsourced consultant for projects. He knew the sphere : he lived in it.
July 14th, 2009 at 6:45 pm
preach on, brother!