The Software Expert
I just read an excellent blog by Kathy Sierra called How to be an Expert that resonanted very strongly with my experiences. But what does it mean for software?
Over the years I have worked professionally as a musician, a scientist, hardware engineer and programmer, and my hobbies include martial arts such as karate and Ju Jitsu.
In each of these fields I was lucky enough to be surrounded by some extraordinarily talented practioners.
Both my parents were/are musicians, through whom I met pianists that played at Carnegie hall, jazz and session musicians that have played with some of the greats.
As a scientist I worked in two very differently organised and run reasearch labs, both of which had world-renowned professors that had made significant break-throughs in their fields.
In martial arts, I trained with Wayne Otto for 10 years, one of Britain’s greatest but sadly, unknown athletes. My teachers, Stephen Chan and Roy Hobbs are also extraordinarily talented and respected world-wide.
The martial arts and musical fields taught me a great deal about the amateur. They were easy to spot since they tended to have the latest, shiniest instruments or the most expensive belts and gi.
Quite often they would ask “How does [the expert] do that?” I would respond “Well, you see how he is practising that single technique, slowly and carefully for 2 hours… after that he’ll do weight training, running, etc. etc. ...”, or “He practises all his scales and technical exercises 2 hours a day”. Quite often, their response would be “But he is so good, why does he need to do those basic things?”. Sigh …
The amateur is looking for shortcuts, the magic secret knowledge the expert must have and if they knew it too then they will become masters. But the glaringly obvious magic ingredient is bloody hard work on the fundamentals!
And so to software development …
Martial-arts and music have a huge advantage over software: it is immediately self-evident if a practitioner is good or not. Software takes months or years to write with the causes of success or failure poorly understood and often mired in politics (or childish tantrums as I prefer to call it).
Companies engaged in building software often do not recognise that being a good programmer typically takes a decade to achieve, and to be a master even longer. I overheard a manager talking recently in which he stated, “I don’t believe you need good software developers to write software, its far more important that they understand the business.”. This, when his project is collapsing about him with users screaming about the poor performance and bugs. But its ok, the developers really understand the business!
There is a belief in the corporate world that the quality of software is more about the management of the development process than the people doing the work. Yet, the best software built today has not come about by careful management but as a result of the expertise of developers.
Developers are after all, actually doing the work of actually building the product. The thing that gets shipped. The thing that makes the company money. It really does matter, that those developers are experts.
Here’s my version of Kathy’s graph:
As a manager, what are you doing to encourage the growth of experts in your company? As a developer, what are you doing to make yourself an expert? Are you looking for magic secrets? Or are you learning new languages, techniques, theories, and putting them into practice?