Can you learn to program better?

Phil Haack has a post that you should read. There is an interesting quote there:

I am not convinced by the idea that developers are either born with it or they are not. Where’s the empirical evidence to suport these types of claims? Can a programmer move from say the 50th to 90th percentile?

I have a different view of programmers, as you can see below:

MyViewOfProgrammers.png

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:

I’ve worked with developers who have 10, 15, 20 years in the industry and couldn’t code a virtual rat through a maze consisting of two parallel lines.

Print | posted on Thursday, February 01, 2007 6:23 AM

Feedback


Gravatar

#  2/1/2007 9:54 AM Jon Limjap

Well, I'll beg to ask... just what kind of transition charactizes that big leap? And how long does the leap take, e.g., how short is short?

I'm thinking about it a lot because I'm at the leap stage, I think, and I'm scared not to make it through.


Gravatar

#  2/1/2007 4:51 PM goodwill1120

Agree with you. I think I am at that gap too. Hope I am the one who get over there.


Gravatar

#  2/1/2007 5:06 PM Kalpesh

What does it take to make the jump over?
It will be really great to hear that from you

Post that on your blog or email it to me.


Gravatar

#  2/1/2007 9:11 PM Harry

I would say I am in the transition period too. Because of that, I am not qualified to say what will work to get to the 'Great Programmers' level.

However, from observing people I consider 'Greate' and 'OK' programmers, I have my theory about why most programmers didn't make the jump.

The most important fact is that for every improvement they are usually a 'pattern' or 'paradigm' shift, rather than single improvement. What I mean is, there are almost many skills and behaviors you have to learn first before you can be comfortable in the new level.

For instance, everyone knows TDD is good, but not everyone practices it. Some of us trying to do it in our code and found it difficult and don't know whether those tests are useful or not. Only later when we learned more about DDD to make our object model solid, MVP/MVC to make our presentation level untangled, NHibernate to coquer the ORM chasm, we realized that everything kind of make sense to us. But before that, most programmers are just stop trying, claiming there is no difference between good and bad, or just move to management. ;=)

If my theory is true, here are some ways to get to the great level:

1. You can keep trying, and finally get there.
2. You can speed up your learning by invest a lot of money on books, trainings, ... etc to help you get there. (Training, Conference)
3. You can join a strong team, so you can focus on only learning small amound and feeling safe that your team will help on others. (Pair Programming)

In any ways, it's hard if you don't have help (company support, team support, ...). It will even slow your productivity.




Gravatar

#  2/2/2007 12:29 AM Nico

I've just returned to my former job, I was there for a year, and I took a year for study.

These days I've looking my old code, and it's ugly. But even worse are the code of some of my ex-coworkers.

But in the last year I've read a lot of TDD, IoC, MVC, MVP and DDD. I'm using those things in my thesis, and I'm really stating to get them (TDD last :> ). But now I'm fighting every f****g day with my news coworkers and my boss, trying to make them see what I'm NOW seeing.

This is largely the most difficult task.


Any ideas, any help


PD: Next week I start a 1 or 2 project, being the architect. I hope I can use all the new cool stuff in a good way, so I can get some probes to them.

PD2: My english is not best, but trying to improve it :)


Gravatar

# re: Can you learn to program better? 2/3/2007 10:45 PM mawi

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.


Gravatar

# re: Can you learn to program better? 2/3/2007 11:09 PM Ayende Rahien

My thoughts on the subject;
http://www.ayende.com/Blog/archive/2007/02/03/What-can-make-a-great-programmer.aspx


Gravatar

# re: Can you learn to program better? 2/3/2007 11:34 PM Ayende Rahien

@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.

Comments have been closed on this topic.