I made my jump over to management a number of years ago when I was at a startup. I didn’t understand what I was getting into until years later. Management is rewarding and exhausting. It tests your courage and ability to handle conflict.

Culture & Inspiration

  1. Lead courageously. Address the “elephant” in the room. Say what everyone is thinking, but not saying.
  2. Resist passivity. Have difficult conversations early. It will only get worse otherwise. It’s your job to fix cultural problems.
  3. Check-in with engineers often. Go for a walk, have a coffee with them. Be open and learn about them. Tease out what could be wrong and fix it if you can. 1-on-1’s are important. Do them.
  4. Set the goals, direction and expectations. This is true for engineering problems and engineers. If is your job to define the problem space that needs to solved. Set expectations for your team (current and new hires alike).
  5. Resist the urge to blame others. You own cultural problems. Don’t be part of the problem.

Decision Making

  1. Make sure everyone’s voice is heard. Not everyone is willing to speak up; use your platform to uplift their voice.
  2. Consider all viewpoints, summarize them to keep everyone in sync. Evaluate based on benefits, trade-offs, mitigations and then make your decision.
  3. Once a decision is made, move forward with it. Don’t let the team backpedal, wasting time and energy.
  4. Reopen discussion when new information arises.
  5. Don’t jump to conclusions too quickly. Allow people to speak and be heard.

Servant Leadership

  1. Trust, but verify. Hire excellent people and trust them. Verify over time (quarterly reviews, regular retrospectives).
  2. Deflect noise. Every company has cultural standards that bring noise to an engineer’s work day. Block out that noise to allow them to be as productive as possible.
  3. Enhance signal. Engineers should understand why they are solving particular problems. Show them why those problems matter to the business.
  4. Allow engineers to try and fail. It can be an excellent growth and learning moment.
  5. Know what every engineer is working on and how it all relates to what the business is building. Be a hub of knowledge.
  6. Use open questions to acknowledge effort and offer help (i.e. “What do you need to hit your deadline this week?”).
  7. Hold yourself accountable to helping your team succeed and hold your team accountable to each other. They should be able to trust you and each other.

Realities

  1. Don’t compromise your engineering standards. Your decisions are your responsibilty, not the responsibilty of the people pressuring you into a decision.
  2. People will push your boundaries. Learn when to stand firm and when to sidestep and let go.
  3. Be comfortable in your own skin. You cannot lead others if you cannot lead yourself.
  4. Trust your gut. If something feels wrong, it probably is. Work through your feelings to discover what thinking is making you feel troubled. Evaluate the thinking and fix it if the problem is real.
  5. As a manager, the company comes first, the team second, the individual third. The good of company ultimately provides a living for the team. The wins (and losses) of the team provide growth for the individual.
  6. You aren’t responsible for writing code. Your team is. You’re responsible for helping them succeed at delivering product.
  7. You will still need to read books, articles, and write prototypes in order to keep your technical knowledge up-to-date, but your code will not be deployed to production.