My mother was a keen amateur tennis player in her younger years, so watching the Wimbledon finals on tv was a recurring summer fixture. Not caring much for the game myself, my inquisitive but naïve mind wondered why these top players didn’t have more pronounced muscles on the arm that swings the racket. Isn’t tennis all about hitting a ball very hard? Disclaimer: I was ten years old.
You’d think that athletics is basically legwork, but there’s a limit to how much power you can squeeze out of human muscle tissue — without recourse to illegal substances. All professional athletes train hard, but the winners have also trained smarter. In a slow motion clip of Dafne Schippers’ recent victory on the 200 metres this is explained in detail. Not only did her tall frame enable her to cover the 200 metres in fewer steps but her strong neck and shoulder muscles helped her propel her arms more powerfully, adding extra forward thrust. Apparently the best run with their shoulders as well as their legs.
Extraordinary talent is a lucky cocktail of good genes, a supportive environment and the dogged willpower to practise for the greater good without sure promise of success. Lesser mortals like you and I don’t reach for the stars. We want to suck a little less at coding every year, but there comes a time when every extra hour invested in boosting that skill has diminishing returns. You conclude that you’ve taken this about as far as you can. Maybe you would write better code if you learned a more powerful language?
For years I thought that being a successful developer meant you had to stay hungry for more elegant and powerful ways to code. So I took up Scala and humbly concluded after a while that a lot of it was just TDD for me: Too Damn Difficult. I’m not a computer scientist. Currying and higher kinded types make my brain explode. In the wrong hands these features are a source of needless complication or (worse) another opportunity to show off your coding prowess. I only wanted a superior, less verbose successor to Java that wasn’t straightjacketed by bad decisions of the nineties. The code I see in messy legacy systems doesn’t need cleverer coding. It needs cleaner coding.
Erik Dietrich has an interesting take on the diminishing marginal returns of programming skills and I couldn’t agree more. A lot of the hard stuff, the work where exceptional coding skills really shine, has already been done. There are fewer vacancies to invent neural networks from scratch than there are writing Sharepoint plugins for marketing. Many programming assignments are unchallenging from a technical perspective, and they even make you listen to what the users want. The horror! Few of the projects I have been involved in as a programmer over the last 18 years involved algorithmic brain teasers of the traveling salesman kind. Yet all of them required people skills. There’s not many jobs where you can ensconce yourself in your man cave as the Hollywood stereotype of the lone wolf hacker.
Most developers think they are broadening their horizon enough by learning new languages and frameworks. While that’s useful and necessary, it’s only a narrow horizon. They’re like a tennis player who only trains his right shoulder. In an earlier post I wrote about the glaring cultural divide between older and younger development teams at the Dutch Inland Revenue. I’m sure they all have impressive biceps, while they stumbled on, keeping alive a labyrinth of six hundred applications. Software that apparently was just as communicatively impaired as their makers. Ah well, the system is only responsible for collecting the 260 billion euros needed each year to keep the Dutch public sector running.