An interesting perspective on the difference between a programmer and a manager.
So hereâ€™s my theory: Managers must work shallow and wide, while programmers must work narrow and deep. People who are naturally tuned to one particular method of work will not only enjoy their jobs a lot more, but be better at them. Iâ€™m a deep guy, I should be doing deep work.
I prefer a slightly different theory.
Producers are the people who really do the work. They learn the hard stuff, they put it into practise, they take pride in their work and they concentrate on the here and now in terms of what they are doing. The “here and now” is defined as the product they are working on and isn’t meant to imply a blinkered approach, just that the concerns of other projects are not primary.
Managers need to do something that Producers do not. They need to manage resources: people, money, time. Depending on the amount of resources to be managed this may preclude them from also being producers. Managers have to not only look after the deadlines of a project and the money taken to build it up but also ensure that the producers are content. Yes, surprise surprise, managers exist to keep producers happy and not the other way round. Joel Spolsky of Fog Creek Software wrote about the Developer Abstraction Layer.
Everything we do comes down to providing a non-leaky abstraction for the programmers so that they can create great code and that code can get into the hands of customers who benefit from it.
In a small company, like a tech startup, those who are managers are often also producers. If they’re smart they’ll hire an Administrator early on, not to provide instruction but to handle the day to day running. To make sure people get paid on time, to make sure there’s coffee in the kitchen and that the toaster works. This was something that was completely lost on a previous business partner of mine. Their opinion was “Make em work harder” whereas my attitude was “Make it a nice place to work and make them proud of their work”.
Management’s primary responsibility to create the illusion that a software company can be run by writing code, because that’s what programmers do. And while it would be great to have programmers who are also great at sales, graphic design, system administration, and cooking, it’s unrealistic. Like teaching a pig to sing, it wastes your time and it annoys the pig.
Let’s dispense with the idea that management are “above” the producers and we’ll start to understand why it’s usually a bad idea to promote high performing producers into a management position. Why not keep them doing what they enjoy and just reward them better? Some companies have given some lip services to this idea via positions such as Technical Specialists and Software Architects but these positions are few and far between.
Similarly the producers have to realise that there’s a whole support infrastructure that has to go hand in hand with keeping them employed. Just because the 10 code-gurus in your team create all the code you sell, it doesn’t mean they shouldn’t be aware that everyone has to be rewarded. This includes the managers, the admins, the cooks, the cleaners, the sales folk and the guy who comes in to water the faux plants. The producers are best doing what they do best: writing code, editing movies, recording tracks, building widgets. Everyone else is there to help them focus on that task but again the people cannot be made to feel like subordinates.
In my jobs I’ve constantly had to work with primadonnas. Producers who were convinced that the world revolved around them, managers who believed the producers were only there to provide them with cronies, administrators who were grumpy when you asked them to do their jobs and sales folk who thought the customer was stupid. We are all part of the same machine and it’s as important for the producer to realise that he’d be unclogging toilets and fixing chairs rather than coding or building if not for the managers and administrators as it is for managers and admins to realise they’d be useless without the help of this support infrastructure.