Thursday, July 2, 2015

Software Engineering: Becoming a Team Lead

Here are some thoughts on team leads and leadership. I have had first time leads ask me questions on the transition and what is important. As a long time lead and now manager, here is some of the advice I give to first time leads.

Leading

A team leads fundamental role is to maintain and improve the performance of the team as a whole.  As an individual contributor you want to maximize the return on investment of your own time.  As a team lead you want to maximize the return on investment of everyone's time that is on the team.  This can often come at the cost of not being able to contribute as much individually.  But that is okay because you responsibility is not just yourself, it's the team as a whole.  It can often take some time to adjust to this kind of work.  You have to retrain your ability to feel productive so that it is based on the performance of the team and not your direct contributions.

The Bigger Picture

A skill that should already be developing as a Senior Engineer is the ability to shift away from just the implementation and design, to understanding the requirements and their origin.  Understanding the business drivers allow a good lead to give alternatives and options that may solve the underlying business problem faster or cheaper, or sometime both.  This can only be done by understanding who the customer is, what the problem is that is being addressed for the customer and the business value.  Understanding the bigger picture leads into areas engineers typically dislike, such as fuzzy requirements, partial/incomplete information and sometimes having to drive consensus and requirements.
  

Communication

Communication is as much about how to communicate as it is what to communicate.  The what may change from job to job, but there should always  be analysis, summarization and the presentation of options, their costs and benefits.  There are questions regarding priority, overall strategy and just making sure that your manager is well informed about what is going on.  

Intra-team communication is just as important as up-down communication.  Making sure everyone on the team is on the same page. Fostering and encouraging collaborative discussions as well as quick daily status standups. This also includes the team's strategy for communicating and interacting with other teams. Making sure that regardless of who on your team someone works with they get the same good customer experience, and same level of communication.

Identifying When to Add New Process or Procedures

Leadership is about widening your lens and taking in all the individual things, the good and the bad, and looking for recurring patterns.  Things that cost time, resources, that impact value and that recur are good candidates for new processes or procedures.  Raising this recurring patterns to management with options for how to solve or mitigate cost is key to being a good lead.

Autonomy

Leaders at every level are given a certain amount of autonomy when it comes to making decisions.  One of the most challenging aspects of becoming a lead is being comfortable making those decisions, as well as understanding where to draw the line.  Mutual agreement with your manager on the boundaries of your autonomy is necessary, and can be done on an as-you-go basis since communicating the decisions you make is still required.  The boundaries of autonomy are also not necessarily static, they can and should evolve over time as experience and managerial rapport increases. The transition if often from asking permission before doing anything, to informing and potentially being overridden. The later is always preferred as long as the lead and the manager are on the same page as far as priorities and goals.