I just saw Jeff Atwood’s article on the subject of programmer experience.
Programmer Experience
Jeff questions the correlation between a programmer’s experience and their programming ability, he also talks about company’s who won’t hire anyone without experience in the exact system they need the developer to work on.
Software development is a funny thing - while there is definitely technical knowledge involved, there is also a fair bit of “secret sauce” required to get any non-triivial project off the ground.
When you get past a certain (very small) size, the structure and design decisions you’ve made when first writing your code make a big difference. So although a novice programmer may be able to write a function that opens a window. They will most likely drown if they try to write even a simple text editor.
The best example of this is with 3d games - getting a spinning cube to display is relatively simple. But writing a 3d game requires quite a bit of design skill.
It’s in this facet of programming that experience and “gut” feelings become very useful. A programmer without a certain level of experience will most probably not be able to design a large system on his/her first try.
Another aspect of this is that of good judgement - there are some people who just have a knack of consistently making the right decisions. In my book this attribute is much more important than years of experience or any other measurable factor. What troubles me, is that I don’t know if you can really tell something like this from a resume.
Relevant Experience
I’m of the opinion that a reasonably experienced programmer - one whose smart, knows a couple of programming languages, and has done a couple of reasonably sized projects. Is capable of becoming productive in most environments fairly quickly.
Therefore, I think any company limiting itself to people with “5 years experience in XML” are needlessly narrowing their pool of candidates.
By and large, the only real exception I can see to this is when a company needs someone to develop a system now [as in yesterday], and so can’t afford the 3 months or so it would take for a new developer to learn the environment. It’s important to note however, that even a programmer with loads of experience in the specific field is likely to take a while to come to terms with an existing codebase, so the perceived win may be smaller than what one would think.

{ 5 } Comments
One negative side effect of experience is the assumption that “I’ve already done that and I know it should be done”, when in fact the new problem is critically different from the old problem. Some people tend to develop this bias more than others, but I don’t think it can be completely avoided.
I don’t know whether this effect has “commercial significance” comparable to the problems caused by lack of experience. Maybe I’m overestimating the importance of this because generic rule-based judgment (as opposed to problem-specific logical arguments) really, really bugs me
Another problem with having lots of experience is the loss of drive. “C’mon, I’ve been through this a zillion times already…”
Oops. I meant “… know /how/ it should be done”.
I guess the thing I’m always most concerned with is companies screening people who they don’t think are appropriate based on “too little” experience or experience in doing things other than the exact area the job entails.
As to negative aspects of people with lots of experience. I think you have to call them in for an interview to tell. There are people with an amazing amount of experience who are very flexible and always into learning new things. And there are those with little experience who have one way of doing thing which you can’t budge them from.
These are definitely things to look out for in an interview - but for that you have to call them in, and not trash their resume because they lack 5 years of experience with XML.
Having worked with extremely clever unexperienced programmers - I have to say that general programming experience is priceless - and it would take someone fresh out of the academy at least a couple of years and some motivation to get his coding skills slick enough.
That being said - Specific knowledge in a technology (e.g. XML) is a silly requirement. I always feel awkward to write my technology list (ODBC, XML, COM, DCOM….) - how irrelevant is this - heh?
Lets take something extreme. A new position for someone writing RT software is open. You have on one hand an extremely clever, experienced programmer who only worked on WIN32 applications - doing some complicated stuff - but no RT.
On the other hand you have an extremely clever 24 year old software engineer fresh out of the uni - who did basic and advanced courses on RT systems, and already read the books you were going to give him to read when he started working.
All other things being equal - who would you prefer?
Itai: I was actually referring to 5 years of experience vs 1 year of experience. And not complete newbie vs old hand.
I think the most important thing is not to screen resumes just based on someone not having the exact experience you need for the job, but reading between the lines and taking into consideration that specialized experience isn’t always that valuable.
As to the question you pose: I think I’d interview them both and see how they are in person.
Is the Windows programmer aware that there’s life outside of WinAPI? Is he interested in software? Does he actively learn new technologies?
It’s nice that the new graduate read the book, but does he understand the material? Does he have any interesting ideas on solving real world problems in RT systems? Does he have sufficient experience to write a shipeable RT software? Is he aware of pitfalls he might run into when developing an RT system?
I guess there is a case for or against both, but I’d definitely interview both of them.
Post a Comment