The Years of Experience Myth

Two points directed toward two different replies. They’re back in the comment history a bit, so forgive the need to scroll back.

@Louis - Developers are looking at specs and reference manuals all the time. You are confusing analysis/synthesis with knowledge. A programmer who never reaches for an reference manual or specification is a programmer who is in a knowledge steady-state. And I sincerely doubt they truly have the entirety of a platform memorized at the same time (I know of no one who does this). Admittedly, I forget useful modules and even obscure syntax of the languages I work with, requiring a trip back to the specs from time to time. But common syntax doesn’t take long to pick up unless you approach learning each language as a vacuum. In that case, it might well take more than 6 months, as they will probably treat even the different parts of each language as a complete vacuum as well. So likely that the people you claim to want will only work with a subset of the language and never continuously seek out new and better ways to do things. It shows they wouldn’t thinking about what they are doing; they’ll just be regurgitating code the same way an English student might regurgitate Shakespeare without understanding any of the metaphorical meaning.

@Bill - Peter Norvig does not disagree with him. What Jeff is arguing about here is about forcing years of experience with particular technologies, languages, etc. You’ll note in Norvig’s article he recommends learning at least a half a dozen programming languages. You can’t do that by focussing 95% of your time on one of them. But that’s exactly what the YOE requirement lays down. It doesn’t take long for someone to develop enough knowledge in most languages/frameworks/etc; if it did, what the hell use are they? What takes a long time is taking the knowledge from a particular framework or language, and analyzing it in the context of what other things you know. This is why both Norvig and ESR push for you to learn new languages. Each language will teach you new things about all the languages you use. They expand your theoretical understanding, which you can apply to any framework or language you might work on. At the end of proverbial 10 year journey, you’ll probably know a dozen languages, and several frameworks for each; but the theory you’ve gained, the higher level understanding is what truly brings improvement.

Best,

Ed

I remember looking for jobs right after Java came out (circa 1995).

One opening was for people with 3-5 years of Java programming.

It is only partially true. No doubt good programming knowlege is required. Experience plays a vital role right from programming to delivery of the systems. let me redefine the role of software engineers. Software engineers not only do coding but interacts with team and customer, identify functional issues, think broadly about the functionally or visualize (not logical thinking). You can be a good programmer but experience teaches you to be an effective and cautious programmer.A Web or client server developer will not be effective in doing Embedding programming or algorithmic programming and vice versa. I know many guys who are good at raw programming but sucks at UI design and other things. You need to figure what customer needs and understand the customer are all essential parts of a software engineer. Experience teaches you such things. If you do not learn the customer needs inspite of having sound programming base we are as good as mud. Programming knowledge is important. This is the scenario.
Say i want to hire a programmer there are two candidates
1.who has less experience but has good programming skills say 7 out of 10.
2. who has more experience but he has 5 out of 10. i will take the second guy but if his scale is less than 5 then i will go for first one.

I know some people who are good at a specific language they will do wonders with that language but you cannot expect the same thing from other languages. People are different we cannot really conclude that a good programmer is better than experienced programmer and vice versa. On the contrary both are equally important. To me nothing goes waste if we really learn either from programming or other skills. But one thing is agreed we need to have a decent logic to become a better programmer.

nice article,
check out more here…

http://UpdateStore.com

Candy

Now, try to explain all this to recruiters-who-use-grep, there are plenty of them all over the world.

Recruiters-who-use-grep are ridiculed for good reason by Joel on Software, see his post about “JavaSchools”.

I completely agree with this article. I’m glad to say I’m a large exception to this. I’m a programmer (mostly web stuff) for a large corporation, currently have less than a year of experience, only a high school degree (working on Associate’s), and was congratulated by my boss just today for the work I did on my last project. The only reason he wants me working towards a degree is because the customer won’t like seeing somebody on a project without a degree, and he even seemed to disagree with the idea that the customer would discriminate on something such as degrees or years of experience.

Reminds when I was looking for web work in 1997 – frequently encountering ads for positions requiring “5 years experience” with CGI or HTML. I guess they all wanted Tim Berners-Lee. (The punchline was the usual requirement of “BS in Computer Science” … because marking up HTML is so programmatically demanding?)

More likely: these were non-software shops (like power utilities or magazine publishers) who had HR guidelines for all hires … said guidelines (vintage 1988) probably had listings like “Information Systems Developer III” which was the best job description the HR drones could find for the job … and the guidelines specified “Bachelor’s degree (Computer Science) and 5 years experience with relevant technologies” … thus the ads

No hire ‘cause they don’t want you in “The Club!” It’s exclusive, and where everybody’s supposed to be a demi-god, or a cup-bearer! Can you play by those rules, and master the secret handshake at time of interview? HR has its marching orders. Gotta’ look at your small hiring problem in context. Big Picture is whole economy that’s “trickle-down!” And so-called “job market” reflects exactly that circumstance. “Gatekeepers” - and by their peculiar psychology - are the key players. Can’t change small hiring problem without repainting Big Picture, and with different subject matter, also. This isn’t even “thinking outside the box”. To solve entrenched “hiring problem”, and in any industry necessary to decouple hugely co-dependent demi-gods from their always enabling cup-bearers. Certainly it can be done. Possibly at level of “physician heal thy self” and, however, which is idealistic. There must be “new rules”, therefore, and where there is agreed on “overhaul” of entire economy, as regards the way everything “doesn’t work”. So your small IT hiring problems are non-unique, and you must see a greater need before you can fix those. All respondants who offer their anecdotes, and constructive criticisms, on this blog are half-way there, in my opinion. Draw your own conclusions about all the others.
Tom

So, what’s a new programmer supposed to do? According to:

http://www.computerworld.com/action/article.do?command=viewArticleBasicarticleId=9066659

“In the 2006-'07 academic year, only 8,021 students graduated with computer science degrees from these schools – the lowest number of graduates this decade.”

The same site also has articles talking about how hot the market is for new programmers. Yet, my son, a recent computer science graduate, is having a devil of a time finding entry-level jobs to even APPLY for. Everyone wants years of experience. Where do 10,000 (on average) newly hatched programmers GET those years of experience?

We’re down in Nowheresville, FL. But, as an example, lets take a look at entry-level jobs in Washington state (I hear there’s a software shop or two up there :slight_smile: ). According to

https://fortress.wa.gov/esd/worksource/Employment.aspx?CurrentPage=Employment

there are 31 entry-level “Computer and Mathematical” jobs in all of Washington state (going back about 9 months). Granted, that site is just WA’s “joint venture of organizations dedicated to addressing Washington State’s employment needs.” But, where else should the new computer science graduate look for non-local jobs?

Great post. I’ve refered it on my own blog:
http://marianariva.blogspot.com/2008/11/years-of-experience-myth.html

Best regards from Argentina
Mariana

Bit late to the party but still wanted to relate something I saw a few years ago. I was looking for a job in the US since I had a girlfriend there at that time. This was back in 2004. I found a posting requiring a Java programmer with 10-12 years of experience with Java. I wrote a mail to them recommending they contact James Gosling for the job, since he would be practically the only person qualified for the job. I never heard back.

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.

Of course, it depends entirely on your requirements. Imran had a post about this recently:

http://tickletux.wordpress.com/2007/12/06/recruitment-and-the-mythical-year-of-experience/

I think the point is that when you ask for years experience it should be seen to indicate a certain ability level amongst the general developer population. i.e. if you want a junior programmer who perhaps doesn’t know many languages/to a great depth then maybe 1 year is appropriate. If you want a language specialist then 10 years might be appropriate. The real key thing is to not filter out applicants only because they don’t have the exact number of years. A good developer with 2 years experience might be as good/knowledgeable as an average developer with 10 years. If you don’t apply any baseline ability filter then surely you spend your days going through thousands of CVs.

Joel Spolsky’s been saying this for a while: smart and gets things done.

I’ve interviewed a lot of tech people over the years and haven’t gone wrong with this maxim very often:

10 Years of Experience in [technology]

 is more often than not:

The same 1 Year of Experience in [technology] 10 times over.

Holds true whether you’re a software developer, systems administrator, or a sanitation engineer. Experience means very, very little here.

Me? I’ve got 20 years in this industry. Maybe only a few of them I’d consider “repeats”. Otherwise, every year I’ve learned something new, mastered a new technology, or did something completely different. When I say I’ve got 20 years, I mean it. I have a lot on my resume, and everything on there I’m prepared to give a 30 minute in-depth lecture on.

I wish my candidates could.

  • If you put down TCP/IP on a resume, you’d sure the hell had better know how to describe a 3-way handshake and discuss – in depth – some techniques to avoid a SYN flood.
  • Saying you understand SQL is the best way of getting me to ask you to design a table to describe a hierarchical structure or give a talk on concurrency.
  • Woe if you put down something as generic as “Unix”. Really? Unix? Tell me about the structure of an i-node, how fork() works, or how making system calls affect scheduling on the architecture of your choice.
  • Oh? You really meant “NFS, but it’s been a while.” Fine. Then let’s discuss file-locking strategies under NFS version 2 or 3, your choice.
  • Both Java and C#? I love exception handling. Which method do you prefer, when and why? Your response had better indicate that you /really/ understand them, and that you’ve wrestled with both of them. Hate one or the other, love them both, you’d better have an opinion.

I don’t care about language syntax (you can always look that up) or the classes you’ve taken (for $300 I can buy a bachelor’s degree, meh). Demonstrate some understanding.

You really, very seriously, need to get a "format for print"
or “print” button. A blog without one is half-assed at best.

Dude, this blog does have a format for print option. It’s available from the “Print” option under the File menu.

Oh wait, haven’t you heard of CSS?

Great article… couldn’t agree any more.

You definately hit the nail on the head and it is kinda funny, because I use to hear the you don’t have the Real life experience when I was orginally looking for a job after college until I was hired to a consultanting company. What I think is so extremely funny and why I feel the years of experience should not be a factor in hiring/recruiting is, because recently we hired a developer who had 10+ years of experience with the language that I do virtually all of my code work in. The developer in question was let go within 2 months, because he was not able to do even the simplest tasks correctly. Unfortunately this developer would work great as a code monkey, but is unable to work as a developer.

experience …hmm, do you want to know where’s the difference between experienced developer and rookie?

rookie will give you faster code, rookie will give you code prepared for majority of future demands right now, may be rookie is even faster then experienced guy

…but experinced guy will give you simple code, more LOC, slower execution BUT code which is easy to understand and easy to maintain.

In other words, from rookie you’ve got super dooper code but and only guy whis is effectively able to maintain this code is your one and only rookie … but he won’t do that because it’s not challenging, it’s boring and first major new feature reqeust will ruin all the magic. From expereinced guy you have a code which is simple, everyone can maintain that code easily, anyone can add new features easily … and the code is based on “what was wrong last time I did it” experience (that’s all the magic of the experienced guy … and that’s what I call The Experience) … and as a bonus usually you have 100 times more accurate time estimations from experienced guy.

That’s basically the whole story.

I want an experienced guy working with 2-3 rookies … it’s like family, children need parents.

So again I have to almost completely disagree with your article (as I did with your interview process ideas), sorry jeff
simon

You’re advice to beware of companies who want “years of experience” is very valuable. After graduating I learned OOP, Software Patterns, and a few frameworks on my own. However, most companies I have worked for have had senior developers who wrote the ‘official’ framework or program using procedural non-sense. When I contributed object oriented solutions, my contributions were redacted and I was told to stick with code that ‘others can understand’. From now on, I will carefully kick their code tires to see if I should waste my time or not. All too often I have been forced to meet unrealistic deadlines or overcome unreasonable expectations due to the ‘senior engineers’ lack of code craftsmanship. Just because the program works does not mean it’s right. When I want to make it better, I’m perceived as a threat. When I play their games it comes back to bite me in the end. Getting stakeholders, who don’t understand software to believe in my craftsmanship is difficult. It seems whoever gets into a company first is automatically perceived as a genius because they made something work that resulted in the sales to get them started. Perhaps a better strategy is to be the first into a company and write the software from the ground up, or just start my own company.