I’ve been thinking about practice lately—and about growth. Here are some thoughts:
Programming is a complicated job. Many people see it as a craft, and as craftsmen, programmers must spend countless hours honing their skills and improving their expertise to reach a level to compete at the level they desire to be at. For example:
So if you’re shooting for your “A” game, you need to practice, right?.
But there’s a problem too. If anyone has an issue with repetitiveness, it must be programmers. We have actually been taught that the sole purpose for our job is to reduce repetitiveness. So where does that leave practice and doing things multiple times?
A lot of the programmers I know, who are really good, attribute their success to the fact that they spend hours at home every night building cool stuff or researching—I think the same could be said of artists and writers as well.
This is great, but let’s consider the following quote by Geoffrey Colvin (emphasis added).
For example: Simply hitting a bucket of balls is not deliberate practice, which is why most golfers don’t get better. Hitting an eight-iron 300 times with a goal of leaving the ball within 20 feet of the pin 80 percent of the time, continually observing results and making appropriate adjustments, and doing that for hours every day – that’s deliberate practice.
So let’s make an assumption—perhaps an incorrect one, but bear with me.
Most programmers are not deliberate about what they practice or how they grow. They do not set clear goals, they do not continually measure results, however they are spending the necessary time.
Why are we just like the golfers?—”simply hitting a bucket of balls.”
Here are some possible solutions. Certainly not an exhaustive list, but something to get started with.
And although I don’t follow my own advice fully yet, I’ve determined to move forward with some of my own goals: