Coaching: why not for programmers?
Driving back from my goalie training session this evening, I got to thinking: why is one-on-one coaching so rare among technical professionals? Professional athletes work with individual coaches, so why not professional programmers?
I am by no means a professional hockey goalie. The rec leagues are my domain, not the NHL. Still, I have a incessant need to improve my skills. I want to be the goalie drinking the victory beer, not the sorrow beer. That’s why I work with a goalie coach. It’s not cheap, but the return on investment is significant.
I get instant feedback. I see how things should be done. I drill movements until they become second-nature. I interact with an expert who can identify my strengths and focus on areas where I need work. I develop good habits. I can’t get away with laziness or errors, because I’m always being watched.
Professional athletes work with coaches all of the time, for similar reasons. Granted, they are able to afford more time with their coaches, but the dynamic is similar.
Programmers, on the other hand, seem to receive little in the way of coaching. College is nice for training, but it works through practice and competition. Does the code do whatever it is well enough to satisfy the automated grading program? Great — you pass.
Industry is no better. There, code reviews are opportunities for evaluation and correction from peers, but they are too time constrained for extensive critiques, and they are certainly not the place for assignment of practice drills. Pair programming has the one-on-one aspect of individual coaching, but the partner is not necessarily an expert and may care little for your individual growth.
Instead of being coached, programmers stumble through years of individual study and marginal projects. Passion and practice seem to make the best coders, with those in the rarefied air being several times more productive than the norm. But are those elites reaching their full potentials? Could the 9-5ers be moved above their plateaus?
Programming should be coachable. It’s art, after all, and artists have long worked with coaches. Musicians, painters, and singers all have coaches (or go through apprenticeships). Photographers subject themselves to critiques. Authors have editors. I will go so far as to consider individual athletes as artists, for — like artists — athletes combine a deep knowledge of the physics of their domain with the creativity necessary to outshine competitors. Similarly, programmers take the rules of code and compose ASCII symphonies, with structure, elegance, patterns, and surprises.
So, then, why is the concept of coaching foreign to the software development profession? Is it a lack of time? Is it arrogance? Is it trust in exploration, forums, and side projects? Are there simply no coaches to be employed?
I’ll concede that coaching does exist in some corners of the programming world. Competitions like the ACM-ICPC tend to have coached programming teams. One might argue that a software project manager is a bit like a coach, too — though in that case, he’d be concerned with the performance of the team, not necessarily the skill development of any individual.
Maybe the professional coders are convinced that individual practice is the only way to get better. Maybe they believe that additional university courses will help them improve sufficiently. Maybe they simply haven’t thought about it.
I have no doubt that an excellent programmer could improve by working with a coach. But it doesn’t happen. Why not?
Recent Comments