Great essay by Peter Norvig that begins by talking about the “Learn topic X in Y Days” publishing phenomenon, and counters with how long it really takes.
His recipe for programming success, and his contention that it takes 10 years to get really good at it both make a lot of sense. Since getting my computer science degree from the University of Maryland (in 1996), the things I’ve learned about programming from doing it for a living have really added a lot to my understanding of what I was taught in school.
Working on projects with other programmers is what I enjoy most. I definitely feel like I learn more and accomplish more when I work with a team. Unfortunately, the position I’ve had the past couple of years means that I have to develop everything by myself. I’ve certainly learned a lot from not having other people to depend on, but I think teams develop the best software.
Working on projects after other programmers has been one of the most frustrating parts of my career. Too often, it’s poorly documented and written in an “ensure job security” sort of way. In other words, it’s not written in a way that easily allows someone else to understand it. Programmers only get away with that if they’re working by themselves. More often than not, if I’m confronted with that situation, I’ll rewrite the application instead of spending a lot of effort deciphering the existing code.
Talking to other programmers about programming is something I don’t do enough of. Finding time to read other good code is a challenge (trying to balance full-time work and a part-time MBA program), but I need to do that as well.