On Leadership
My leadership style boils down to three deceptively simple practices: hiring the right people, giving them what they need, and getting out of the way.
Hiring the right people
If I am going hiking, I don’t want the person who has memorized all the different hardening grades in the alloys of his pocket knife. I want the person who could start a fire in the dark in four different ways with nothing but a rock and pinecone. And in two more ways if the pinecone is wet.
Apply that to software and you have a surprisingly powerful recruiting method. Personally, in 10 years of hiring, I have not regretted a single hiring decision I made in this way.
(This is not the article to get into the details of hiring developers, but if you are interested, feel free to ask me. You may regret asking though – I can talk for hours about recruiting.)
Giving them what they need
Par for the course is powerful hardware, choose-your-own-keyboard, and the occasional conference ticket; but two essential things that top developers need to be both happy and highly productive, is clear direction and trust.
Once developers understand the “why” behind a high level requirement and are trusted with the details, they are free to explore and implement new and creative solutions. Such solutions may arrive at the goal in unconventional ways, but they almost always arrive both faster and better than anticipated by stakeholders or architects.
Getting out of the way
Obviously, don’t micromanage, but take it a step further and eliminate any and all interruptions and dependencies that get in the way of the work or pull the developer out of their productive ‘flow’. By my count, even the smallest interruption costs at least 30 minutes of productivity, in part due to the context switch itself but mainly from the process of slowly getting back into the flow of coding.
As for dependencies, any process that requires getting a response from a person outside the immediate team introduces a perfect storm of context switching, busy-waiting, and in some case even anxiety; these are people who may very well have spent 10,000 hours learning to code alone in front of a computer: a lot of them don’t like talking to people, let alone people they don’t know.
Finally, hands-off management is not ears-off management. Every team has needs which evolve over time, and as a leader your job is to listen and provide, whether that means coaching them, buying them nerf guns, or fighting off stakeholders when they come bearing gifts of this week’s feature creep (and it is always feature creep).