Recently a colleague of mine asked me what my management philosophy is and I decided to attempt to put it into writing. First a little background, in my almost 10 year career I have lead a team as large as 12 people spanning two continents and as small as one other person (more like an apprentice). These teams have all been software engineering teams working with consumer facing products. I have held many different titles (team lead, lead engineer, software architect) but I was ultimately responsible for the delivery of the product and for growing and developing my team.
My history of being “managed”
I have had many different styles of bosses myself in my career and I try to be an amalgamation of all the different aspects I liked about them. These different experiences have shaped me as a leader.
- Hari taught me the importance of strong technical mentorship (and I was amazed at his ability to remember everything)
- Kevin gave me the freedom to determine my work and acted as a shield against the business
- Steve provided vision about the higher level functions of the company as well as some really practical advice about how to guide people in their careers
What does a leader do?
Using these experiences and also utilizing all I have read this is what I think a leader should do
- Make sure others get an opportunity to speak up
- Provide feedback and foster talent
- Make decisions
- Set expectations
- Take responsibility for team failures
- Build relationships inside and outside the team
- Foster a team culture
I don’t actually manage people
Speaking generally, I am a very hands off kind of boss. I do not micromanage and, for the most part, I am not interested in the fine details of your day to day work. This is partly because of my personality (I am not a very organized person at times) but it also born from a preference to let people to work independently with as much freedom as they can reasonably handle.
One thing, I don’t feel that I manage people. I don’t want to be a manager, I want to be a leader. A manager tells someone what to do and people do it because there is a reporting relationship on paper that says they have to. Managers don’t take big risks, they are driven by rigid deadlines and its a death march to reach them. I have worked for managers and it was not fun. Even when I didn’t have anyone reporting to me I was still in all the Tech leadership meetings because being a leader is a matter of influence not a matter of organization.
I view software engineering as more of a craft than a science and thus the people I work with are craftsmen. My role is more like a master smith that has apprentices and journeymen underneath me. I am not driven by a rigid deadline rather I am focused on people (using charisma to form coalitions and helping my employees get better) as well as taking risks and pushing boundaries in support of a goal. To use yet another analogy, I view myself as a battlefield commander, I am deployed with the units doing the fighting.