Can you learn to program better?
Phil Haack has a post that you should read. There is an interesting quote there:
I have a different view of programmers, as you can see below:
The first steps for beginners are relatively easy to start, then there is the first hump, which is usually where the non-programmers quits. Then there is the big hump, which a lot of people simple never cross. This means that a lot of people are stuck on the basic level.
People that do make the jump across, usually have a lot of hard time, but they tend to not stay there for a long time. Either they pass, in which case they are going to be great programmers, or they stays there (or more often, slide back to the start).
I don't believe that it is a matter of To Be or Not To Be, some people have easier time doing it, some people have harder time. I believe that it is the big leap in the middle that not many cross that makes the difference.
At 17, I couldn't get my head around dynamic memory management (in Pascal), at 19, I grokked this stuff without a problem. I can't really say what has changed, though.
Update: This had me in stitches:
Comments
I assume that your "model" as related here is a simplified version of how you conceptualize devs.
Specifically, there are many different skillsets that a programmer can become expert in. Expert proficiency at the toolset one uses is probably at the core, yet there are many others.
Second, I would argue that there are many levels and gaps. I agree with the model, which strikes me as reminiscent of the plateau model that you have with most skills, sports, etc.
I have come across many ok devs, several good devs, some great devs, and perhaps a couple truly awesome devs. I think that you probably get the gap and plateau for each level.
My thoughts on the subject;
http://www.ayende.com/Blog/archive/2007/02/03/What-can-make-a-great-programmer.aspx
@Mawi,
I certainly think that the graph above is a two dimensional model of multi dimensional reality.
Nevertheless, it does represent the average. On general, a great developer in one technology will be able to master another technology much easier than an average developer, assuming same initial skill set between the two devs.
It is just that there is a lot that the great dev can correlate and assume that the average developer will have to be thought.
Understanding the principals is far more important than understanding the mechanics.
Comment preview