On experience in programming

There’s a meme going round that it takes 10,000 hours of conscious practice to become expert at something. I’ve got probably about that much in writing Lisp (mostly Emacs-Lisp, some Common Lisp and now a bit of Scheme) and about twice that in writing C, so I’m in a position to comment on the difference between before and after that level of practice. However, my comments on this are subjective and from memory; I’ve not kept a log that will let me give real figures.

There are a couple of specific differences I notice about the code I write now, compared with how I wrote when I was significantly less experienced, and they may affect my main observation, but they’re not the most notable difference.

What really stands out (if my impressions are not deceiving me) is that I have to do a lot less debugging; the proportion of functions I write that work first time is much higher than it was when I was already competent but not as practiced. It’s at a level that I would have probably disbelieved someone claiming, had I heard someone making such a claim `back then’. Also I have meta-knowledge of that at the time of writing the functions: I can tell fairly reliably which functions are going to work first time, and which ones I’m likeliest to have to go back to.

The specific differences, that will have some effect on this, are that I typically divide programs up into smaller separate functions than I did when younger, and that I less often try to do something more efficient than what the language makes natural. Obviously, each of these will be likely to improve how good my code is before debugging, but I don’t think they’re enough to explain it all.

I’d be interested to hear what other experienced programmers have found changes as they get up to that level of experience. (10,000 hours is about 5 years of 40 hours per week, or 7 years of 30 hours per week.)


Post a Comment

Required fields are marked *


%d bloggers like this: