8 ms·
I firmly believe great programmers can be trained, but it's not going to happen after six months. I firmly believe in the 10000 hours rule, and I think it appli
by SoftwareMaven 14y ago
I firmly believe great programmers can be trained, but it's not going to happen after six months. I firmly believe in the 10000 hours rule, and I think it applies here as well, but to become a great programmer, that has to be 10000 hours of:
* writing a lot of code,
* reading other people's code,
* evaluating and re-evaluating the code you've written and read,
* learning and using different paradigms, languages and tools, and
* being mentored by a great programmer who can teach.
And, not surprisingly, these are all things that nearly anybody you consider a "great programmer" would have done to get to that point.
Very few people who are not already inclined towards programming are going to be willing to put that kind of effort in. As a result, while I firmly believe great programmers can be trained, I think there are very few who actually are.
In the end, I'm not even sure that "trained" can even be used as a classifier. I think a better classifier would be "self-selection". So, can a person who has not self-selected to be a programmer become a great programmer? Can a person who has not self-selected to become a basketball player become a Michael Jordan? Genetics may say yes one in a billion times, but most likely not.
It may be easier for programming, thou, because you can spread those 10000 hours out over 15 years while still making a reasonable salary utilizing the mediocre skills you have today. Salary is a strong motivator, but I would be most people are willing to stay at the mediocre level.
- deleted 14y ago[deleted]
- deleted 14y ago[deleted]
- mcartyem 14y agoTwo things people who put 10,000 hours have in common are: - They are naive and believe they can conquer the world - or are discouraged about their original inability and hide it. - They share a sense of destiny in what they do. They can't imagine a world where they wouldn't be working any more in their medium. So if you wanted to predict who will become a great programmer you could look for naivety and commitment. You could look for people who can't tell what they've accomplished. And which continue to obliviously work on (naively ambitious) things only because noone was around to stop them.
- ttty 14y agoInteresting, are you that kind of guy?
- mcartyem 14y agoOn (1) I point out naivety in particular because it's the most transparent and one of the most shocking. It's what you do not expect someone very capable to be. Paradoxical traits of personality in creative people are common. On (2) MacKinnon suggested the successful creative individual had an ongoing belief in the worth of their creative efforts. I don't claim these are the only two things to predict who will become a great programmer. http://arrow.dit.ie/cgi/viewcontent.cgi?article=1005&context=aaschadpart http://arrow.dit.ie/cgi/viewcontent.cgi?article=1005&con...
- Joeri 14y agoIf you spend 10.000 hours playing the same simple tune on a guitar you're not going to be a great musician. Similarly, if you spend 10.000 hours programming the same mediocre kind of code, you will not have become a great programmer. Programming is a craft, and like any craft it requires dedication to the craft to achieve a high level of skill in it. People without a passion for programming are not going to have that dedication, and therefore will not reach a high skill level.
- mikeleeorg 14y agoOne of the assumptions of the 10,000-Hour Rule, as Malcolm Gladwell asserts, is that a person spending 10,000 hours on an activity naturally has a strong proclivity for it. So working off that assumption: IF 10,000 hours = passion AND passion = great at a craft THEN 10,000 hours = great at a craft
- georgemcbay 14y agoThat assumption is obviously wrong when you mix financial compensation into it. I've worked with more than a few programmers who were in it for a paycheck, some of them were perfectly competent at creating code for their little niche (CRUD apps, whatever), but were single-language, single-framework, lots-of-maintenance types of guys. Needless to say, them putting 10,000 hours into programming isn't the same as someone who is really passionate about it. To paraphrase: "Some people put in 10,000 hours, some people put in 1000 hours 10 times".
- SoftwareMaven 14y agoI'm not sure how you could spend 10000 hours programming the same mediocre code if you were actually doing the things I outlined. The whole point of the list is to ensure you aren't spending the time doing that. I can't tell if you are disagreeing with me or not (I think you are), because you've said almost the same things I did. What you call dedication, I call self-selection.