Take the 2-minute tour ×

How useful would it be for a recruiter?

In martial arts there are a minimum number of trainings, not years of practicing, to be evaluated for a higher level. I saw some exceptions but there are rare.

In software, maybe this would be valuable to express experience in particular technologies such as OO, OR/Mappers or specific DBMS.

share|improve this question
“We are what we repeatedly do. Excellence, then, is not an act, but a habit.” - Aristotle –  aSeptik Mar 12 '11 at 3:00

12 Answers 12

up vote 14 down vote accepted

Once you clear 10,000 hours it's all relative

From Malcolm Gladwell's Outliers, it can be shown that 10,000 hours of continuous active learning (about 10 years at 20 hours per week) is required to become an expert in a particular skill.

I'd say that the rule is transportable to programming, even allowing for changes in frameworks and techniques. I'm thinking exposure to design patterns, methodologies and so on.

If you then follow the Dreyfus model of skill acquisition then it seems that the following may hold true (I'm just filling in numbers as I feel - there's no citation):

  • Novice (0-1,000 hours)
  • Advanced beginner (1,000-4,000 hours) - most common
  • Competent (4,000 - 6,000 hours)
  • Proficient (6,000-10,000 hours) - longest period
  • Expert (10,000+ hours)

So to enable you to filter your candidates, perhaps apply these values to each of the levels of experience you require in your top skills (allowing for general overlap due to exposure, e.g. a Spring expert will surely have competent XML).

Now, comes the tricky part - just how are you going to prove that they're telling the truth? Perhaps it's time to break out "Fizz Buzz" and "Guess a number".

share|improve this answer
+1 I read the book and completely forgot that part –  user2567 Feb 13 '11 at 19:53
+1 - but I think these numbers are perhaps a little high. I'd expect that most people would be able to be at least an advanced beginner after say, 3 months full time (40hrs/week) - so about half of this estimate. Say 9-12 months to become "competent". –  TZHX Feb 13 '11 at 19:58
Trouble is, even if they are telling the truth, there is a decisive difference between spending 10,000 hours learning new stuff (doing different projects and solving challenges requiring ever wider and deeper expertise), and spending 10,000 hours repeating the same basic stuff 20 times over. –  Péter Török Feb 13 '11 at 20:00
According to these numbers I should be largely overqualified for most of the jobs on this planet. Yet I somehow feel this is not yet the case... –  user8685 Feb 13 '11 at 20:00
@Pierre, you need to read it for 9999 hours more then :) –  user1249 Feb 13 '11 at 20:10

I once worked with a guy.

His boss told me: "He thinks he has 7 years experience. He does not. He has 1 years experience, 7 times."

The subtle difference is in not learning / growing / thinking more.

There's a big difference between a Pilot and a programmer. A Pilot has to know and memorise procedures, and be able to think in a crisis. A Programmer has to think through complex issues and create new things out of nothing, and do this for between about 2 and 6 hours a day.

You can improve your ability to think by actually doing it, but to claim that "time on job" in a creative business is equivalent to a skill set is a bit of a stretch.

share|improve this answer
Or worse: 1 hour, repeated 10,000 times... –  Mike Woodhouse Feb 14 '11 at 9:30
oh yes, excellent! –  quickly_now Feb 14 '11 at 9:36
@quickly_now... I think you're right on... but I do think the same thing could be said of pilots too. Just because they have a lot of flight time doesn't make them skilled or good at their job. –  Kenneth Mar 11 '11 at 22:34
I think the distinction is moot. If I do the same thing for 7 years I'm sure as hell going to be better at it than I was after one year. –  Jon Hopkins Jun 24 '11 at 15:54
Until you have a crisis. That sorts the men from the boys. –  quickly_now Jun 25 '11 at 4:38

I'd rather say it measures what cannot be expected.

Someone who has worked in the field for 20 years may or may not know a lot of things, but one who has only worked for years or months is guaranteed not to know these things.

You can only verify what is actually known by probing or testing them.

share|improve this answer
@Thorbjørn Ravn Andersen: unfortunately, I don't have the resource to test the 100 candidates I received. I have to create a shorter list. –  user2567 Feb 13 '11 at 19:22
@Pierre, time to open another question with 100 pdfs attached then? –  user1249 Feb 13 '11 at 19:35
Oh, just give me your email :) –  user2567 Feb 13 '11 at 19:39
@Pierre, FIRST agree on the consultancy rate, THEN the email address :) –  user1249 Feb 13 '11 at 19:47
Read each CV VERY QUICKLY. And throw into 2 piles: Junk and Look-Again. You will be amazed how quickly you can do this, and the Junk pile is usually very large. Of your 100, I'd expect 90 to end up there by spending no more than 1 minute on each. Then concentrate on the 10 that are left to look again. –  quickly_now Feb 13 '11 at 21:58

I think that, past a certain point to establish a minimum level of competence, the amount of time one has been programming isn't all that meaningful. I would judge a programmers experience on the projects they've worked on and what they brought to those, not an arbitrary number that is practically impossible to verify.

share|improve this answer

I think that I already posted this (Teach yourself programming in 10 years) somewhere but you should check it out. This article is about that "magical" 10.000 hours and about the efficiency of learning.

share|improve this answer

How many hours of painting does it take to become a professional painter?

How many trainings does it take to become a professional musician?

Programming too is a creative design activity, which is why most metrics are literally useless.

The only thing that can be said, is that with time you become better. Whether any time in the world will suffice for you to become great, is unknown. One can only look at you at any given time and decide whether you're good or not.

share|improve this answer
About that, I read an article where an old quote from The Beatles was used. They explained that their supperiority was due to the fact they were practicing 8h a day. I remembered that because today in a TV show a famous French singer (aubert) told he was practicing as much and that was significant for his success. I conclude talent must be coupled to work to increase signigicantly chances of success. –  user2567 Feb 13 '11 at 19:32
@Pierre, are you familiar with the concept of 10.000 hours of deliberate practice needed to become an expert? –  user1249 Feb 13 '11 at 19:44
Yes more or less, I read an article about that but the values expressed was 10 years of practicing –  user2567 Feb 13 '11 at 19:52
Oh are you refering to what Gary is writing in his answer? –  user2567 Feb 13 '11 at 19:53
@Pierre, somewhat. Not his answer directly, and I disagree on the absolute numbers... –  user1249 Feb 13 '11 at 20:11

Programming languages change. Tools change. Paradigmas change. That limits the value of experience after some years.

That said, most programmers work fulltime, so the number of years is more or less directly proportional to the number of hours spent coding.

share|improve this answer
Same for technology in planes. But I agree is it much slower :) –  user2567 Feb 13 '11 at 19:34
Even switching technologies, the foundation and concepts learned over 10 years are still there, and still apply. Thus, I would not put an experienced pilot and a newbie pilot both entering the cockpit of something they've never flown into the same category. The experienced pilot just knows more about how flight works in general. It's more than just manipulating controls, just like programming is more than just typing something into a keyboard. –  jmort253 Feb 13 '11 at 20:25
jmort is right. Even when I'm programming C# these days, my background experience in Pascal, C, C++, is very useful. Syntax and APIs change, but high level skills like design patterns, good coding practices or understanding the user's perspective don't get obsolete that fast. –  nikie Feb 14 '11 at 9:32
Sure, but after a few years, you have grasped those concepts, haven't you? It's not like a programmer with 20 years of experience gets it that much better than a programmer with 5 years under the hood. –  user281377 Feb 14 '11 at 9:36
When it comes to e.g. software architecture or understanding requirements, grasping the concepts is just the beginner stage. I don't think you can expect any programmer to truly master these skills after just 5 years. You can practice them for decades and still improve upon them. And I definitely know that I am a much better programmer today than I was with only 5 years of experience. I hope to be better still when I have 20 years of experience. –  nikie Feb 14 '11 at 10:53

I think you could compare it as a metric to lines of codes (of a program).

You can't assume too much about the quality of the code (experience in your case) but you can make some assumption about it.

Ie you can make some assumption about a guys with 6000h experience vs a 100h even knowing that you know that there is difference in the quality of the experience of the two (you cannot know or estimate it but when comparing magnitude difference, details start to matter less).

You couldn't use it to tell much about say a 6000h vs a 6500h though or even 4000h to 6000h, say. (I'm using arbitrary number here).

share|improve this answer

I'm not even sure if the number of hours a pilot logs is all that informative either.

I mean, someone that flies from Charlotte, NC to Portland Oregon and back (alternating days) will have a lot more logged hours than someone that flies 4 times a day from JFK to Logan. But, I would guess that someone that makes 4 flights a day will gain 4x as much experience as someone that makes one flight a day over a longer distance. Further, the NY to Boston flight will be over a much more congested space at busier airports, resulting in much more experience in tricky situations compared to the less crowded Charlotte, Portland, and big sky airspaces they would be largely flying through.

Likewise, for programmers, i can work 10,000 hours aligning textboxes on a windows form, or I can spend 10,000 doing a variety of tasks with varying levels of complexity.

Hours mean nothing, nor do years.. you can only look at the accomplishments. The only value I see is that someone with 10,000 hours would certainly adequate, or they wouldn't have been able to log that many hours. But number of hours cannot tell you if they're an expert or not.

share|improve this answer
I can confirm flight hours are regulated. –  user2567 Feb 13 '11 at 22:48
I didn't say they weren't regulated. I'm simply saying, flight hours really aren't a measure of how experienced a pilot is at all the things necessary to make them a good pilot (staying awake for 5 hours while the plane needs minimal course changes is not necessarily one of them). –  Erik Funkenbusch Feb 14 '11 at 6:43

For this to really work, programmers would need to maintain a logbook.

Pilots keep meticulous logs of their time in flight and simulation, and count their time 'in type' - 2,000 hours of flying a 747 doesn't immediately qualify you for the A380.

The martial arts training programmes also require some logging (at least, my old Judo training did).

There also needs to be some mechanism to audit the logs - commercial pilots are regularly placed in simulators and tested. Martial artists have to be examined (or compete - which is a harsher judge) in order to level up.

So, for time-logging for developers, we'd need to be able to categorise our time (I have thousands of hours in PHP5, several hundred each in C++ and few others), and be regularly audited (as has been mentioned already, dragging and dropping form elements around in Qt Creator doesn't make you a C++ guru).

All this is a far too complicated for not much gain - so I side with everyone else that says that programmers should be rated on knowledge and achievements that they can point to.

share|improve this answer

I began very basic programming in third grade and have kept up with it for about eleven years now. This means that I already probably had a thousand hours logged by middle school, but a thousand hours of experience back then and a thousand hours now result in totally different levels of learning.

Knowledge and learning seem to follow an exponential curve-- I am able to more easily pick up programming concepts and learn new languages (which helps in an attempt to be language agnostic) than I was eleven years ago. Five years of experience is not half of ten years of experience. Giving a more personal answer to the question "How long have you been programming?" seems to be optimal.

share|improve this answer

I would not express it in hours; - I would express it in lifetime lines of code or years spent coding.

share|improve this answer
I wouldn't express it in either. I'm sure I can write 1-5 lines of code that does the same as someone else's 20-30 lines of code. I've also had the pleasure of working with people that have been coding for 10 years. The problem is that they've been doing the same thing for those 10 years and have no idea how to work with more advanced concepts. –  Adrian J. Moreno Feb 13 '11 at 20:20
Years "spent" coding or years of life "lost" in coding? :) –  user8685 Feb 13 '11 at 20:37
How about the ratio of lines of code vs. user complaints? ;) –  Tobias Cohen Feb 13 '11 at 21:06
Perhaps the moral of the story is using a single metric to describe a system is a bad idea? –  Paul Nathan Feb 13 '11 at 23:09
Maybe the solution is talking about the ratio of lines of code and cakes which were a lie. –  Adam Arold Mar 12 '11 at 12:33

Your Answer

