The next question that comes to mind then: do you prefer being a developer or a manager? This is a very interesting one, and I think I could go either way. Being a developer is fun. Developers’ lives allow for a delicate balance of logic and creativity. And because the nature of development is so focused, they can truly become masters, experts of their domains. Developers are like alchemists with some special secret knowledge, who can turn clay into gold with their magic touch. And of course, that earns them lots of respect (and monetary rewards too).
A great technical manager is ideally a former developer, so he/she understands how other fellow developers think and work. This manager knows how to make developers happy and get great results: give them uninterrupted environment, challenging and well-defined tasks, reasonable schedules and timely and clear feedback. Managers interact with other roles in the company, so they get the visibility to everything related to a project, from different people and angles. A manager’s world is not binary: there are complex human interactions, lots of details to weigh and decisions to make. Great managers are like orchestra conductors: they know how to get everyone play their instrument in harmony with others and produce a beautiful tune.
So if both sets of skills are so valuable, can one person be a programmer and a manager at the same time? The answer to this: probably not. You could have a technical manager who spends a small percentage of time on quick one-off coding tasks. Or, you could have a great developer who plays more of a lead role, but stays very close to the code. If you start demanding of someone to be a great developer AND manage the whole process, it is bound to fail at some point. These roles demand different dynamics: development requires a lot of focus, while managers constantly interact with various people and thus get interrupted quite a lot.
So I think these scenarios work well:
– You’re a technical manager who no longer codes or who codes occasionally and on a small scale
– You’re a developer who takes a lead role within the tech team, but not heavily involved in larger project management
Should a CTO code? Be able to – absolutely. Do it as a daily routine task – no. Hire 2 people – a great manager/leader and an awesome developer, and you will win in the long term.