Managing a team is more than managing individuals. Being a manager is not about having the most technical knowledge.
Stay technical
- you will always have to guide technical decision making
- you must be seen as technically credible
- you need to stay enough in the code to see where the problems are and to evaluate
- if you stop coding too early in the career, you may never achieve sufficient technical knowledge
Debug dysfunctional teams
A dysfunctional team can be characterised as a team where its members are unhappy, they keep quitting, the product manager is frustrated and they keep missing deliverables. They maybe lack energy or enthusiasm.
- if team is not shipping, it might be because of the tools and processes. Remove all the bottlenecks as poor tooling around release, heavily manual testing, features too big.
- « the brilliant jerk » – a move to another team
- the negative person – make it clear the behaviour has to change; if he’s unhappy help him leave the team on good terms; maybe he is not aware of his impact on the team
- unhappiness due to overwork – support the team and help them with the work. Reduce and avoid overwork
- lack of collaboration – gather feedback, create opportunities for them to hang out outside work
Act like a shield ?!
The team should be shield from distraction. Help them understand the key important goals and focus on them (however, let some of the stress reach to the team so they will get some context into what they are dealing with). On the other hand, don’t deny events and communicate information that might neutralise the impact on your team.
Humans need some context into why these goals have been set and what problems should they be working on to solve. They need to understand the consequences.
Take good decisions
- get as much data as possible and create a data-driven team culture
- look into the future and get a sense of where the product roadmap is going
- review your decisions and run retrospectives for the processes
Manage conflicts
When managing conflicts:
- don’t rely on votes
- have clear set of rules to evaluate decisions
- address conflict issues without cultivating dysfunction
- don’t take it out on other teams
- be kind, not nice
- don’t be afraid
- get curious
Advanced project management
You will help set the schedule for the team by estimating whether the team can do certain projects, how much work will be and if you have the right people to complete the work. You need to have a strong sense of the pace of the team.
- there are 13 weeks per quarter, expect only 10 weeks of focused effort on the main projects per team member.
- 20% for generic sustaining engineering work (testing, debugging, dealing with legacy code, etc)
- say no in order to achieve goals
- use doubling rule of software estimation
- don’t be a telephone between the engineers and the rest of the company