A lot has been talked about how to become a great developer. They are all good ideas. I think that as a manager it is our job to grow our team and create great developers. I talked about creating challenges to do this, in a previous post. But what exactly are those challenges?
Here is a summary of what others say:
- Migael posts 15 tips to becoming a better programmer.
- Andrew says that we have to become a software engineer
- Oren Ellenbogen has 10 rules to become a great developer
- Ayende talks about a big leap and then about doing stuff
- Phil talks about programming better
- Jeff says that you have to stop programming and “Learn about your users. Learn about the industry. Learn about your business.”
- Joannes Vermorel talks about being smart and getting things done.
So how as a manager do we create better programmers? I don’t think that having a list of tips is the correct answer, I don’t think that as a manager you should give a list of tips. I think it is deeper and Ayende’s “doing stuff” and Phil “programming better” are on the correct path.
I found a great post on how to become an expert from the Creating Passionate Users blog. (the graph is from that post)
Most of us want to practice the things we’re already good at, and avoid the things we suck at. We stay average or intermediate amateurs forever.
Phils references Scientific Americans “The Expert Mind” Study.
In this study they take chess players and research how to become an expert player. It comes down to the fact that both a professional and a non-professional player do the same amount of analysis (how many future moves are calculated) and they both spend the same amount of time playing – so they practiced the same. It is just that the expert always raised the bar and practiced harder and harder games.
The bottom line, is that we must leave our comfort zone. We are comfortable avoiding the things we suck at. We must tackling those parts. As a manager we must notice the places where developers are avoiding and challenge them to do them.
If they avoid writing the help, they must practice doing it until they get good at it. If they avoid a complex module, they must practice doing just that module. If they avoid helping the QA people, they must start helping the QA people. If they avoid understanding your users, start interacting with the users.
The developer will NOT like this at first, but only by trying, by raising the bar and by practicing will your developers become experts. Even if your developers are satisfied with where they are, as a manager your can’t afford to let them be stuck, you should push them to become experts