In mid-2016 I became tech lead of the TweetDeck team at Twitter, so I spent some time thinking about what I expect from a lead and, using that list and other brilliant resources, the behaviours and attributes I hope to exhibit.
After that came tech lead (or maybe product manager?) of the GraphQL team at Twitter, with my name on some other internal projects in a leadership role. The teams are bigger; so is the scope for success or failure. This post was edited in 2018 to reflect that change.
This post is a sort of check-list: I return to it periodically to make sure that I have recently paid some attention to everything on the list.
I’m now a Principal Software Engineer at Bulb, working on our member-facing products and on security.
What do I want from a lead?
These are things I want or expect from someone I report to or consider a “lead” relative to me:
- Clarity and openness when I ask “why”
- Quantifiable short and long-term goals
- Ownership where necessary with clear responsibilities and expectations
- Team advocacy — selling us and sharing our work
- Documented processes with justification
- Space to become expert
- Humility and willingness to change their mind
How should I behave as a lead?
Given that list, what behaviours should I exhibit? I can’t ask more of people than I am able to do myself.
Within the team…
- Be as clear, explicit and transparent as possible, when appropriate
- Run high-quality, productive meetings with a clear structure — attendees should know what to expect
- Set an example for documenting project management process
- Trust the team to deliver when responsibility and ownership are given
- Be able to explain why about anything, able to say I don’t know, and ready to change my mind
- Advocate for open-source and external sharing
- Challenge the team to solve problems in the way they want
- Encourage quantifiable, short and long-term goals
- Help team-mates with career advancement and growth
- Prioritise unblocking others where I can
- Work hard to prevent interruptions to the team’s flow
Outside of the team…
- Actively communicate with other teams about blockers
- Sell and share the team and their work
- Actively monitor for external changes that may affect the team
And, at all times, optimise for happiness.
Tech Leads and Product Managers
The GraphQL team at Twitter was a product team and I did work that I perceived to be very similar to Product Management. This is what I found myself doing:
- Strategy and vision for the team
- Prioritised backlog for tactical decisions
- Quantifiable short and long-term goals
- Tracking progress for:
- the team
- outsiders
- Communication with:
- stakeholders
- customers
- dependencies
- Team process
- Lightweight, clear, no SPOFs
- Meeting facilitation
Of course, I was also on the hook for some code but where possible I tried not to be on the critical path, or in a position where my unavailability affects others.