February 7, 2008
I recently received an email from Andrew Stuart of the Australian firm Flat Rate Recruitment. Andrew related their technical phone screen process, which is apparently quite similar to the one outlined in Getting the Interview Phone Screen Right. I'm glad to hear it works. A proper phone screen is critical. I completely agree with Andrew: you should be 95% certain that a candidate would be a great hire before they ever set foot in an interview room. Anything less is a colossal waste of everyone's time.
But there's one aspect of the recruiting process that often goes awry, even with a great phone screen in place. Andrew presented an excellent anecdote in his email that explains it better than I can:
I had a client building an advanced security application. I sent them person after person and they kept knocking them back. The reason was almost always because the person "didn't have enough low level coding experience." The people I sent had done things like design and develop operating systems, advanced memory managers and other highly sophisticated applications. But my client wasn't interested. They required previous hands on low level coding experience in a particular discipline. Eventually I got an application from a very bright software engineer who almost single-handedly wrote a classic computer emulator, but had little or no low level coding experience in the particular discipline they required.
I told the client, "I have a great guy here who has no experience doing low level coding and I think you should hire him." They were extremely skeptical. I pushed hard to get an interview. "Look, this guy is a superb software engineer who doesn't have low level coding experience in the particular discipline you require now, but if you employ him, within 3-6 months you will have a superb software engineer who does have the low level coding experience you're looking for."
They interviewed him and gave him the job. Within a matter of weeks it was clear he was the smartest programmer in the company. He quickly mastered their low level coding and his learning went well beyond that of the other coders in the company. Every time I talk to that client he raves on about this employee, who is now the technical backbone of the company. That company no longer focuses its recruitment on candidates that exactly match previous experience with the required technologies. Instead they focus on finding and employing the smartest and most passionate engineers.
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.
Somehow, they've forgetten that what software developers do best is learn. Employers should be loooking for passionate, driven, flexible self-educators who have a proven ability to code in whatever language -- and serving them up interesting projects they can engage with.
It's been shown time and time again that there is no correlation between years of experience and skill in programming. After about six to twelve months working in any particular technology stack, you either get it or you don't. No matter how many years of "experience" another programmer has under their belt, there's about even odds that they have no idea what they're doing. This is why working programmers quickly learn to view their peers with a degree of world-weary skepticism. Perhaps it's the only rational response when the disconnect between experience and skill is so pervasive in the field of software engineering.
With that in mind, do you really want to work for a company that still doggedly pursues the years of experience myth in their hiring practices? Unlikely.
Which leads me to my point: Requiring X years of experience on platform Y in your job posting is, well, ignorant. As long as applicants have 6 months to a year of experience, consider it a moot point for comparison. Focus on other things instead that'll make much more of a difference. Platform experience is merely a baseline, not a differentiator of real importance.
In turn that means you as an applicant can use requirements like "3-5 years doing this technology" as a gauge of how clued-in the company hiring is. The higher their requirements for years of service in a given technology, the more likely that they're looking for all the wrong things in their applicants, and thus likely that the rest of the team will be stooges picked for the wrong reasons.
I'm not saying experience doesn't matter in software development. It does. But consider the entire range of a developer's experience, and realize that time invested does not automatically equal skill. Otherwise, you may be rejecting superb software engineers simply because they lack "(n) years of experience" in your narrow little technological niche-- and that's a damn shame.
Posted by Jeff Atwood
I have been told "not enough experience" (in terms of years) so many times... It's pretty frustrating. OR I hae been skipped over for people with no experience, that's equally frustrating.
I should clarify by "no" I mean, someone who had never programmed in css/xhtml had gotten a job instead of me because they were 'cheaper'.
I interviewed for a Business Analyst position once where the interviewer (a QA guy) thought I was more of a "systems analyst". I thought he was more of an, well, anyways.
Been doing this long enough to get employed as a BA, SA, developer, project manager, etc.
People _love_ to pigeon-hole.
I'll take the type of personality and aptitude over total years almost anytime.
Ha! My thoughts exactly!
Many developers claim to have 8, 15, or whatever years of experience, but what experience? The quality and intensity of experience or huge factors too!
I often compete in interviews with people who have maybe a couple more years than I do. I ask them: "How many years have you been driving?"... "Oh, then if you take a rally, or a formula 1 drive who has driven 2 years less than you, you must be a better driver, yes?"... that pretty much closes the case
I remember reading The Mythical Man-Month, in which Fred Brooks talked about the "first project" rule, whereby every developer/programmer who works in industry messes up on the first big project they are part of. This is due, normally, to lack of experience in cross-team communication, etc. Such communication skills can only come from time working as part of a software team. Thereby he suggests only hiring for reasonably senior project positions someone who has prior "experience", at least as part of a working team, if not part of a software team. But you are right that actual programming skill is more important than experience with an actual technology/language.
I always look for people experienced with a way of thinking, not for a specific skill.
These recruitment related posts are very interesting. I totally have to agree with the point that the years don't matter much, but only when talking about people with "natural" talent.
If you have a person who isn't talented, he will need a longer time to learn a tech, and I think sometimes such years are posted in job offers exactly to make such people not submit their resumes etc., while a brilliant programmer will know he will do well. Of course, the company might refuse to interview them without the experience, but like said, then the company is probably not that worthwhile.
There is one thing I think years help in, though. That is the speed you can pick up new things. The longer you've been programming, the easier new stuff will come to you in my opinion.
Oh and Jeff, please please PLEASE... FIX THE FONT.
It's horribly ugly in every other browser than Internet Explorer here with Win XP. I know you like IE, but not everyone uses it.
It's actually quite weird that the font is bad, I would expect someone like you to actually spend a bit of time... you know, testing that it actually looks good in other browsers too.
re: Font -- it looks fine with FF on W2K, but yes, bad with FF on XP.
Oh and Jeff, please please PLEASE... FIX THE FONT. It's horribly ugly in every other browser than Internet Explorer here with Win XP. I know you like IE, but not everyone uses it.
Short answer: Turn on ClearType. http://support.microsoft.com/kb/306527
Long answer: If you can't or won't turn on ClearType, remove the "C" fonts from your system (Calibri, Consolas, etc) that were installed with Office 2007. They are designed for CT and will look horrible forever on your system until you enable CT. Once you remove these fonts, the CSS stylesheet falls back to Tahoma.
You really, very seriously, need to get a "format for print" or "print" button. A blog without one is half-assed at best.
I agree entirely, I recently found out, I got my last job because I managed to get into a recruitment site by faking the GoogleBot UserAgent, because I was not part of the site, my employer found this to be a nice trait and employed me. He only told me this, a year after working for him, I thought it was for my good looks!
excellent article! And it gives me some hope. I'm just about to begin my final year of my degree and I was (a little) worried that it'd be hard to find a half decent job.
I'm not expecting to jump into the deep end or anything, but it's inspiring to hear that not EVERYONE looks for experience. I like to think I'm a little ahead of the pack (and by no way am I at the lead) because of the way I tackle a problem - and the way I learn the required technologies.
One year to go - and there's some light at the end of the tunnel.
I cannot agree more. The rule "you either get it or don't" should be one of the Ten Commandments of programming.
I might be wrong but in the UK you can no longer ask for x amount of years any more as it is seen as discriminating.
That is so lame. Discrimination is the point. Next you won't be able to discriminate between a lazy person and a non lazy.. oh wait...
The most extreme example of this is when companies ask for more years experience than a technology has existed for - for example 10 years .NET and C# experience.
This reminds me of an advert for a Java position I saw back in 1999. They asked for 5 years experience - even though Java was only released 4 years earlier.
I guess they were hoping James Gosling would apply.
Its like when you got a new client and a new big project. What if all our clients would require that we had 3 years experience of their internal structure, programs and tools? We would be out of work in no time.
Our customers expect us to quick pick up what they want to be done, understand the whole concept, implement our own knowledge over their needs and come out with a great plan to make it happen.
We do it every time, thats our job. Quick learning and understanding the customers need.
So that is what is important to look for when hiring.
I believe the cases of "X years experience for technology Y", when Y has only been around for X-1 year, translates to "We have a H-1B visa applicant we want to hire, and his resume says X year experience"
I had boss once we did something similar, but his big thing was "Years of experience IN THE INDUSTRY". In his mind, I would have been better off getting a computer operator job right out of high school and worked my way up to programmer, instead of wasting time going to college getting a Comp Sci degree. That way I would have had 4 more years "in the industry".
Aptitude, desire to learn, and ego in check are what you should be looking for. Sometimes it's those who have the most experience in one stack who are the least flexible, as they tend to view things through their "year of experience" filter.
In my previous job I turned down more developers who had experience in the technology stack we were using than I hired. My aim was simple, hire highly competent developers who showed that spark and aptitude for development.
The result was a very competent and highly motivated technical team.
Only once did I let my standards drop due to pressures from higher management that "we need more resources right now", in that instance he lasted 2 weeks before handing his notice in.
You didn't mention the hilarious cases where they want more years of experience then the Technology has existed. (e.g. postings in 2003 for developers with 5 years of C# experience.) I'd guess there are probably now postings for 5 years of experience using LINQ.
I agree, what software programmers do best is learn. I've fixed code in languages I didn't even understand. Not that I recommend it.
Once you know 2 or 3 languages, you can blow through a new language in no time. It's the programming techniques that matter. Unfamiliarity with a language might slow you down, but not as much as bad technique. And it's easier for a good programmer to learn a new language than someone who is familiar with a language to learn how to be a good programmer. Way WAY easier.
And I love the job listings like:
Required - 10+ years experience in administrating Windows 2k/2k3 networks
Good post Jeff. Couldn't agree with you more.
Here in Sweden it's been like that for quite a while; companies seeking years of experience with this and that. Seems like 2007 was the turning point though. All of a sudden, the software industry realized that they actually needed to hire again.
Whilst I mostly agree, worth noting that there are some areas where experience is relevant.
I'm recruiting heavily for my team, to do web based application development. This boils down to data in and out of a database with occasional re-shaping and a load of business rules validation. So it's not /hard/ stuff.
I've rejected great candidates with years writing Sound Card Device Drivers because they have /never/ worked on end-user software. This is for candidates coming in at a senior level in the team. They need to know about HCI to work on the product, they need to know about web development.
But I don't care if it's in Java, Microsoft things or PHP. But they need to understand how to specify, design and develop software based on people. Something they /can/ learn, but, not as quickly as just switching from ANSI C with Assembler to C#.NET. ANd to take a senior role in the team, they have to have those other skills already.
I might be wrong but in the UK you can no longer ask for x amount of years any more as it is seen as discriminating.
I've been told this is true by recruitment agencies. We can't ask for x years of experience as it discriminates against people starting out. We can't even ask for graduates as that discriminates against the under 21s.
So what do you do if you need someone with proven experience doing something you can't say a simple academic qualification covers? And, we can't even require a degree in the stuff either! So technically, a 16 year old with no GCSEs can't be screened out by our advertising...
It's very hard to be able to legally advertise for required attributes of employees! We require a certain amount of history as a permanent UK resident for MOD Security Clearance. But we can't advertise a need for that residency, can't hire them because they can't be cleared, can't do the job without clearance.
- "Years of Experience" is one of those "buzzwords" headhunters look for, but doesn't know how to work for it.
- "Years of experience" (quantity), DOES MATTER, BUT QUALITY, ALSO.
Many developers posted comments about Programming Languages. We are not in the 80's anymore. We work with Development Tools (Programming Languages + Libraries + Development Environments + else) !!!
That's why it's not so easy to learn a new Development Tool (Programming Language), anymore.
Well done Jeff ! Passion drives everything.
This article is for you Mr. T !!! :)
Too often, big companies are blinded by years of experience of a candidate without looking at their real potential.
But fortunately, between you and me Jeff, it's easy to recognize someone who is passionate about his work, right ? I doubt that this passionate behavior can be "faked" by candidate : you can tell if someone is passionate by the way they talk and even their body language. This is my 2 cents.
Keep up the excellent work Jeff !
I might be wrong but in the UK you can no longer ask for x amount of years any more as it is seen as discriminating.
That is true - in fact I blogged about it recently. And whilst Jeff's argument may hold for coders, it's a bit murkier when you are trying to hire team leads and other senior roles, many of which in my opinion DO need some experience in the field before being really effective. I wouldn't want someone fresh out of college with no commercial projects under his belt running a multi-million dollar project.
A very wise boss of mine told me 15 year ago to hire on "bandwidth" not skills. We did alot of controls work - a high bandwidth controller could handle a variety of inputs: you get the analogy by now. I've used that philosophy ever since and it's NEVER failed me. Of course it's not the only criteria: personality is big. Does the individual's personality fit the organizations? Can they get along, work as part of the team?
I've hired 20-30 people on the last 15 years, on these criteria alone (and gotten hired by others using them twice). NOT ONCE has it gone wrong. I've watched skills hires go wrong constantly.
Every hire is an investment - Make sure you're investing for the long haul, not just this quarter.
I've seen this phenomenon happen in front of my eyes. I was hired as a contractor about the same time a fresh out of college guy was. I took him under my wing - he lacked confidence in his abilities. I could see he was smart and motivated so I knew I wasn't wasting my time.
12 months later when I left he was the best programmer at the company and there were plenty of very "experienced" programmers there.
I hire by talent first, makeup (passion, character, etc) second, and experience third. Unless it's a short term contractor and then all I care about is whether they can do the specific job I'm looking for.
Hey Now Jeff,
I like these posts recently regarding screening resumes such as the phone interview N years of experience. As always I've learned quite a bit. The entire range of a devs experience is important like you stated.
Coding Horror Fan,
I have to agree on the years of experience thing. However, it brings up a tangential thought: what do you folks think about job posting copy? Do you not mention technologies and years of experience?
This comes from trying to treat people like computers.
If (Resume A matches Job Requirements B) Accept(); Else Reject();
...I'd go a bit further with this: any position which HAS a "laundry list" of qualifications is probably being handled by an H/R manager, not a tech guy - the tech guy wrote the laundry list probably as a guide to the H/R weasel, but the H/R weasel takes it too literally (not knowing any better).
This is a sure sign of a company which has a serious disconnect between internal needs and external people - avoid this and you'll be better off!
I remember a few years back i was looking for a new job, and saw many job postings for .Net that wanted 5+ years experience. At that time .Net had been around for 3 tops. I had between 6 months and a year experience w/.Net, and ~3 years experience total. I still sent them my resume, but typically never heard back. cest le vie.
I think the issue is that some HR types don't really get it when it comes to the software industry, and try to force us into their mold. I know I've had a problem where we were getting crap applications, so I looked at our postings, taken it back to my bosses for a wtf discussion. They looked at the posting and said that's not what they were wanting, no wonder the applicants didn't match what we were looking for. It gets even worse when HR filters the resumes for you :(
Regarding Job Adverts in the UK, yes you can't advertise for age,sex ,race, nationality or religion, and this includes unobvious filters like x+ years of experience, Degree in... Etc. that require a certain age because a school leaver could not have done it yet.
But you can put in the advert MOD Security Clearance is required since that is a requirement and anyone can theoretically get clearance?
The disaster known as "Microsoft Vista" explained. "Yea, I can learn. I can make Windows more secure" ... "yea, I can learn. I can make Vista pretty" ... "yea, I can do Windows applications. I can learn" ... "Hey, guys!!! Check this out!!!!" (shoots his USB rocket launcher ...)
I have to include a comment for those of us who have been stay-at-home moms.
While staying at home for 5-years, I kept my resume filled with "part-time" computer training at the local school, and learning web site design (take a peek) I still "get it".
These weren't in my field of software engineering but showed I knew how to adapt. Now I'm two years back into the field a job I love again in...software engineering thanks to a guy who "took a chance on me", after all I didn't have direct experience in the field lately.
This week, I just got our second USB port (via a USB to SPI port into the uC) to communicate this week with our product! I never had any direct experience in that! (I guess breast feeding didn't drain the brain after all).
Coding Horror Fan
I find the exact opposite to be true when it comes to IT system/network administration. Too many companies are stuck in the, 'How many certs does this candidate have?' game. Experience doesn't seem to count. So you wind up playing the game to get your foot in the door, but then you get to work with a bunch of mindless morons that 'learn quickly' and take tests well. Because the rest of your company doesn't understand IT, they all assume your team knows what it's doing. You end running herd on everyone else to keep the entire team from getting fired. Of course, you don't get extra credit for this, as everyone else on your team takes credit for all your work and knowlege.
This is a refreshing post, when I look at posting on Monster I see all of this nonsense. They ask for every acronym on the planet. Even when I look at the postings for my own job I honestly don't recognize most of the "technologies". My favorites though are when companies list their propriety technology/system/whatever as a requirement.
So, I do agree with your point. However, I do imagine that its difficult to find people based on this ambiguous qualities.
This is particularly frustrating for those of us who would like a new job or would like to work on a different project. Unfortunately, people want to pigeonhole you into a particular technology/language/skillset. It drives me bonkers that I might have to continue to rehash most of the same skills in every project. It gets to the point at times where I volunteer or do some part-time paid work just to be exposed to radically different technologies than those at work.
US recruiters are bad about this. If they don't know what checkbox to check to send you off to their client who has a project in technology X, they don't know how to evaluate you, because, of course, they don't actually know anything about IT at all, other than acronymns.
What makes it worse is the huge percentage of job postings by recruitment agencies. I know there are many jobs interviews I would do well in and jobs where I would learn the required technologies once I work with them, but without the recruiters being able to check the checkbox, I'll never get to the interview in the first place.
The right way is commonly referred to as the "best athlete" recruiting approach.
Ask a basketball coach, and he'll tell you, "You can't teach tall."
"Sometimes, it's the person's capacity/willingness to learn that's more important than the things they already know."
That was my original response to your phone interview post. It's good to see that you've added to your original point of view. Looking solely at an applicant's experience is a very narrow, one-dimensional position. As you point out, if that's the case I don't want to work in that organization anyway. Programming is very multi-dimensional. The programming interview process should reflect that.
these have been some great posts. good insight into HR, etc.
can we get some programming posts? :-) it's been a while.
Why ask for 10 years experience? In short, you ask for 8 years of old knowledge, only the 2 latest are fresh knowledge on new techniques.
But on the other hand, experience is important in many cases, with much experience you have already done your share of errors and hopefully learned a lot by doing them and you have a large bag of useful tricks that can be a big benefit and time saver in a project.
So combine seniors and juniors in the project to have a perfect mix of experience and drive can be a good practice.
But you can put in the advert MOD Security Clearance is required since that is a requirement and anyone can theoretically get clearance?
You wouldn't want to /require/ MOD Security Clearance as hardly anyone has it, and people can't get it themselves (has to be appropriately sponsored). But, you can't put no criminal record, nor can you put must have 5 years uk residency, to screen out people who aren't going to pass the vetting.
If you are really interested in learning how to hire people, I would suggest learning about the field of Industrial Psychology, a large chunk of which is focused on how to recruit, select, hire and retain people. Hiring based on abilities (raw talent, so to speak) has been well-known in this field for decades. It's when people try to hire based on their own personal pet theories about "what makes a good candidate" (especially when individual hiring managers do this) that you increase risk unnecessarily.
Loved this post. Hated your phone interview post!!!!
I couldn't agree more. I often laugh at job postings that say things like "8-10 years of .NET experience required."
I remember seeing one job posting "requiring" 5 years .NET experience in 2004.
How can they expect you to have experience in a technology from several years before its release?
I totally agree. Maybe software engineering is an art and us developers are artists (http://www.code-muse.com/blog/?p=20)... However, whatever metaphor you want to use for developing software (be it engineering, art, or rock climbing), the most simple way to put it is that it requires hard work. In the sense, that most of the time programming is a tough job requiring a fair amount of using your brain, and with a lot of passion, your mind is at its best.
You know, I have to say, part of this is up to the interviewee as well. Simply saying "I don't know" when asked a question about a technology you aren't familiar with is a great way to sink yourself. If a developer is looking for a particular tech that you don't know, my strategy has always been to be up front, and say "I don't know it off hand, but I can buy a book and learn it fairly quick."
This happened to me during an interview for Relic. They wanted STL experience, but I told them straight up, I'm not directly familiar with the STL, but I can buy a book and learn it without significantly hindering my ability.
Not only did the interviews continue, but they eventually made me an offer (which, ironically, I refused).
But if you can reach a point where you are talking with a live person, if you know you can do the job, then there's no reason you shouldn't be able to talk yourself in to it.
Some people work for 5 years and gain 5 years of experience. Some people work for the same 5 years and gain 1 year of experience 5 times.
Re: MOD clearance
You can't even ask someone if they have it since having it is classified! You have to say "Work of a confidentail nature in the national interest". But you would only know that if you had been told when you got it .....
You also used to have to be a British citizen AND your parents had to be British citizens. The job ads would say this and then underneath have the usual, 'The MOD is an equal opportunity employe'
You CAN ask for years of experience - the discrimination thing is just moronic HR ass-covering and Daily Mail 'Political corectness gone mad' stories. Asking for 10years experience for a senior post is NOT the same as saying 'under 50s only' on a job ad.
MSFT hiring mantra is "Hire for the company, not the job."
We all seem to be in agreement here (I also hire based on smarts and personality rather than specific experience), but I don't think it's that simple, for three reasons:
1. Different areas frequently require different modes of thinking, and that mental shift may take longer than six months. For example, most of the rules of thumb that people use for GUI programming are close to worthless for embedded programming.
2. I've met people for whom I think they have forgotten more about a certain area of expertise than I will learn in a lifetime. I'm fairly sure I'll never be as good a server programmer as Chris Brumme, or as good database guy as the late Jim Gray.
3. The areas where guys like us can hit the ground running are those areas which are not very deep. If I show you an application I expect you should be able to deconstruct it in your mind and understand how it works. But what about domains like crypto or image, video and sound recognition? We'd be bloody clueless.
And i'd think, that is a singular german problem, Unfortunately it is a global Problem
Agreed - especially for programming. Managers and business analysts, though, I would agree need experience dealing with clients, employees, and company politics.
Because it is the managers doing the hiring they think that the rule applies for everyone.
Desire always is better than experience.
There are some kinds of experience that is helpful, regardless of how great the developer.
I've learned far more from failures than I do from successes. Success may or may not be repeatable, but learning from failure means you won't make those mistakes again.
For example, most typical junior level developers don't understand the risks involved with rewriting code. Sometimes those risks are worth the reward, but often they are not... leading to extended testing and validation cycles that wouldn't be necessary if you had left some older, and perhaps less elegant code intact.
Years of experience with a given technology is far less useful than years of experience overall.
So, it sounds like, the entire gist here is simply "hire really smart and passionate" people.
Sounds like good advice for any intellectual job whatsoever.
What if they never coded at all (and are super smart)? I mean being able to code even a little is already "experience". Plenty of smart kids go from zero to making good programs in just a few months.
Jeff, thanks for these awesome posts!
I agree. I hate the “grocery list” of skills people list for job postings. Sometimes the list will have so many “required” skills listed, that no one will meet the requirements.
As a developer who's also trying to hire, I've found that there is a sweet spot number of years that tells you he's serious about the profession as well as not too inured in a particular methodology so that he can adapt to a new challenge/environment/project.
And if you're reading this post because you're looking for a new challenge as a developer, please feel free to contact me andy (at) whereandy (dot) com.
The one caveat I would make is that if someone has, say C/C++ experience and you're hiring them for a .NET/Java job, I want someone who will be humble enough to know that they are in a new environment, and they have things to learn. Else they'll waste days re-implementing DateTime or something.
Smart is good, "know-it-all" is bad.
NOT EVEN WRONG
I have to disturb this self congratulatory orgy of back patting, because you couldn't possibly be more wrong. I'd say you're dangerously wrong, because your contributing to the perpetual youth culture that is software developments biggest millstone.
The fundamental problem with your analysis is you're comparing apples and oranges. A smart person is going to outperform an idiot with ten years drooling experience, but that's not the real issue. Is a smart person with 3 months experience going to outperform a smart person with ten years experience?
As much as the kiddies here might like to believe they're special, analysis of congitive development shows it takes ten years to truly master a discipline. When I hit the workforce, I was a lot more productive than most other developers. It would be easy to believe that I was a guru, but the reality is it had a lot more to do with an extensive background in solving logic problems and programming since my early teens than innate aptitude.
The fact is the programmer I am today is several orders of magnitude better than the programmer I was ten years ago, even though I was already pretty good. The reality is the more problems you face over time, the more you build your development skills and intuition.
Breadth of experience DOES matter and that takes time.
This almost seems like a worthwhile blog, but I'm afraid I only read bloggers with five or more years of experience so that I can be sure I'm getting the best advice.
Yes Jeff, you are right there is specific experience and there is generic experience. I believe that having 2 - 3 yrs under me after leaving school and working full time I can tackle just about any issue thrown at me. However that being said my experience in design and the best practices is still growing. Sure I am reading and studying books from all the greats and reading great blogs. However I am still no where near the level of some of my colleagues who have been doing this for 10 + years. So I do believe that while specific experience isn't all that important general experience is, because I am not ready to lead a huge software project yet or tackle some hugely complex issue. However in another 7 years I'll be 30 or so and probably will have had the experience and the learning opportunities to provide me with that experience. So I am experienced I've got a long way to go I believe.
Please, Please, Please, all readers there, forward a link to this excellent entry to your HR and hiring departments!
As an independent consultant for the past 10+ years, I find it amazing how many companies still run the years experience check-list.
You have it right, Jeff -- I don't waste my time with these companies. I would much rather work for a company willing to listen to how I have applied my programming skill to develop real-world applications or solve complex problems. Not only that, it is much more rewarding to work for the companies who DO get it that software development is a constant learning process.
The ability to pick up a new technology is obvious if you read any good developer's resume.
Whether or not this is true is somewhat irrelevant. What matters is convincing the employer this is true.
It sucks but it's true. Lets see some more articles on persuading.. maybe?
I agree, but I have to live in the real world. I used to focus on learning more of the kinds of things that apply to programming in general rather than the specifics of my stack. Now I realize that it would've been much more valuable for my career to just focus on the stack.
I'm not now (don't even have a CS degree) nor will I ever be (I don't have any time to work on side projects) good enough to just float in on my credentials. The stack is the only choice for me.
There is also another type of experience that people look for. "Recent Experience". And that was one of the reasons my application was not even considered for the position. I quit my previous software development job to pursue M.S (Computer Science). Since my experience was about 1.5 years old, the company said I did not have 'recent experience'. What can I say to that?
You nailed it. I keep coming here through DZone but I'm subscribing to your blog right now.
Great post -- I was just thinking about this very subject this morning, planning on writing about it, and then you beat me to the punch! Quit being so damn prolific and timely, dude. I'm starting to feel like Scott Hanselman over here! ;)
Couldn't agree more, though. Obviously, coders need to be able to code -- a few folks here apparently missed that one. But at a certain point, it's true -- you either get it or you don't. For me, the aha moment (having come up in the world of managed code) was understanding how memory and processors worked. Once I got tha stuff, and how my languages were shielding it from me, the world got a whole lot clearer, and learning new stuff a good deal easier.
I agree to a point. Clearly a good developer should be able to learn new skills fairly quickly, so qualities like talent and aptitude are usually more important than experience, especially when you are dealing with experience in some specific technology (like low level TCP/IP coding).
However, with a more general skill like Java programming (or programming in general) there is a big difference between 6 months of experience and 6 years of experience. I have been a professional Java developer for 3 years now and I can tell you I know a lot more today than I did two and a half years ago. And I expect to know even more three years from now. Problems that used to take me a week to debug I can now fix in a few hours. I attribute most of that to my experience.
Yes, a good developer should be able to learn a lot in 6 months, but they should be able to learn much more if they are given more time. The idea that after working with something for a few months they will know everything about it is just plain false. And several links to blog entries dwelling on anecdotal evidence and misused statistics certainly does not make it any less false.
I agree. In march of last year I landed my first job as a software engineer for a small company. Before that I was self-employed for about 1 year, and prior to that I pretty much taught myself how to program and did it for the sport of it for about 5 years. I stretched the truth a little bit on my resume to get my foot in the door, but the bottom-line was I could back up this projection of myself because I was confident I had the skills required to hold down the job, and be successful in this career move.
It did take me about 5-6 interviews before I got a job but my current boss seemed to grasp the idea, and he was wise enough to recognize that although my experience seemed to lack on paper that I was still the man for the position. And I'm grateful for that.
So now I'm involved in helping this small company grow which is quite challenging and good experience. The company has been around for a long time and it seems like they have kind of hit a brick wall for awhile and I can see why. I don't agree with many of there practices. My boss tends to go off on tangents and doesn't have the knowledge for efficient decision making at times, which does lead to some bad software design. Upper management overwhelms the under-sized under-trained staff with ridiculous deadlines because they don't understand the means to reach the end. And it really does take time for me to make my mark. Make them feel confident in my judgment and understand better ways of doing things. But it's almost been a year now and I'm beginning to make some important changes in the development cycle, software design and deployment which are crucial if this company is every going to 'grow up'.
Another binary post by Jeff where two different concepts are placed in two very distinct piles: oranges here, apples there.
That you "get it" is not sufficient for employment, nor to value what you are worth. I want to hire people who "get it" but don't have to look at the refs and specs every time they need to do something; I'd rather have someone who "gets it", but has enough experience for what he gets to reach the keyboard effortlessly. You won't get a new hire who "gets it" after 6 months in the AS/400 world; nor in assembler; nor in security, nor in a myriad of places where just being at ease with the structure of a language is not sufficient, experience must be gained.
Oversimplification challenges truth, and binary thinking does it to an caricatural degree.
I have a theory that where this happens, there is also a political structure within the company too. If a person is so adamant on getting so specific in thier requirements like stated in your post, then they really don't have a clue what it means to be a programmer.
I simply avoid those contracts all together.
I worked for years with Mom and Pop outfits doing basic graphic design and a little web programming before I got my first real programming job. Most places I went into an interview with looked at what I was currently doing and turned their nose up at me because I didn't do "REAL WORLD" programming. Never mind that I could pass their phone screens and employment tests. The years of experience killed me every time. But being a glutton for punishment after my 60th interview I found someone to take a chance on me and I've never looked back.
i couldn't agree more with this post.You nailed it on point
I agree with Louis. There is no magic formula to hiring someone. It's a risk every time. I've had a few work out very well, and others limp along for years. Experience is only one small part of many things to consider. One guys resume' listing for the jobs held in the last five years ran two pages. This might work if you are looking for someone to jump from one task to another, but the job I was hiring for took six months to a year to get up to speed. One guy I did hire stayed quit at lunch on the third day. He was qualified, seemed to be a quick study, but didn't stay (never did find out exactly why). Or the guy who worried incessantly about the cost of a method call, and therefore wrote methods that stretched 10 pages at the minimum. Or the person who thought I was sabotaging him because I only needed a few minutes to find the error in his code.
Like I said, some have worked out well. The last person I hired before leaving my last job found a brilliant solution to a problem I had been struggling with for months. And he kept them coming.
I have wondered if the same criteria of X number of years goes into jobs ads for CEOs, company presidents, and the like.
In the software world, many (not all, but many) of the jobs are still roughly ‘state-of-the-art’ kind of positions. Like the companies asking for “x years of experience” in a technology that is only “x-1 years old”, to ask for specific skills sets when building a new, bleeding edge product is small-minded thinking that is doomed to yield sub par results. Yet it happens all the time.
I have worked in high tech for + 20 years. As soon as I “figure out” a product, I am bored and want a new challenge. And I know lots of people like me – we work for the intellectual challenge. (And the cash, of course, but also for the intellectual challenge…:-). Calls from recruiters asking me about my experience with “x” or “y” product (because they saw it on my resume from years ago) don’t get returned.
Proven ability to learn and interest in working on new product are critical skills for working on “new” software.
Formal education teaches you how to do things.
Practical experience teaches you how NOT to do things.
Both have alot of value.
I've had the dubious experience of having to explain to a recruiter that the stated skill requirements indicate the composition of the TEAM that would be required to build the desired system, and I helped him break the 'laundry list' up into pools of expertise that go together - not that I got any of the jobs that we created descriptions for!
Thank God at least a couple of wise people took the time to point out the awful flaws in this post.
Peter Norvig disagrees with you, Jeff. See a href="http://norvig.com/21-days.html"Teach Yourself Programming In Ten Years/a. Smart, fast learning people are no substitute for real experience.
Also, attempting to comment on your weblog regularly results in errors revealing the crappy implementation beneath:
An error occurred:
Rebuild failed: Renaming tempfile 'C:\codinghorror\blog\archives\001054.html.new' failed: Renaming 'C:\codinghorror\blog\archives\001054.html.new' to 'C:\codinghorror\blog\archives\001054.html' failed: Permission denied
sometimes the year of experience matrix is skeewed to hire a specifc person they want. They have to do that as they are required to let people bid on teh positiona nnd realy they already have a person working in that area and want to renew that project. They than come a a trix that would like reward their preferred candiate the highest point!
Definitely appitude to learn and wilingness to work hard and with due cre is most important as programmer. willinges to stick to spec is critical as programmer. END user interface Design is vastly diffferenet from system or embedded programming.
I have a linkedin endorsement from the author of an OReilly book about a prominent web framework. I contracted for him in 2006 in our metro area where he is also a CTO for a small/medium sized company, and he recommends me for *any* project.
Last year however some company turned me down because I didn't have enough *recent* experience (it had been a year) with the web framework in question. Their loss.
I'd go further - having many years' experience in a single technology often means that the developer has reached that point where they nolonger want to learn anything new.
"10 years MFC" really means "can't or won't learn .NET"
I've noticed that many developers, after a few years reach a certain technology, and then stop learning - they become expert in it, and any new languages/frameworks/environments are "too slow", "unsupported", "no benefits".
Do you know anyone who still uses Visual Studio 6 because they say VS2005-2008 are too slow? They've got stuck at that stage. Know someone who learnt .NET/WinForms but not .NET 3.5? Stuck again. Those people may be smart, they may have many years' development experience, but if you need them to re-train, you have a struggle on your hands.
Sometimes of course, it's not the developer's fault: many companies hire someone new for any new projects, and the developers on their old MFC application are "too valuable" to move on to another project.
I think companies should state, "must NOT have 3-5 years experience with X". Anybody who's worked with some technology for 3-5 years is probably bored of it and will not be motivated to do their best. They won't be learning anything new, they'll just be doing what they were already doing for that 3-5 years that's listed on their resume.
I agree, in a job posting I was interested in last year, I pointed out to a hiring manager that the job they had open required someone with four years experience in WPF. I also pointed out that they were limiting themselves to only people that worked for Microsoft and had access to WPF long before it was publicly released. Needless to say they corrected this error. The hiring person probably didn't know the technology but only knew the acronym and that it was for developing "cool windows UIs like on the Mac".
Jeff, you may have a point since after 10+ years of coding my code still looks like crap...however, it doesn't account for how my 10 year old code looks even worse. /Mats
It's certainly true that 10 more years won't make a good programmer out of a bad talent.
But, the reverse is true. 10 more years of experience WILL make a better programmer out of a great talent. Sometimes a MUCH better programmer.
Generally I've heard it said that it takes 15 years to master any kind of fundamental craft, be it programming, carpentry, motor mechanics, or something else. I think that's pretty much true.
(Also, it's been claimed that most people can only learn one such craft properly throughout the span of a lifetime. I also believe that to be true... even though it's an entirely different issue altogether.)