The Goal of This Post
This post is a synthesis from the book The Manager’s Path, by Camille Fournier. Camille packs a ton of insights along the journey from individual contribution to leadership. This post focuses on the path of becoming, being, and thriving as a Tech Lead (Technical Leader). I hope you enjoy!
The Main Roles of a Tech Lead
Your highest priority as a tech lead is taking a wide view of the work so that you keep the project moving. How do you go from organizing and planning the code you need to write on your own to organizing and leading the overall project?
Role: Systems Architect and Business Analyst
- In the systems architect and business analyst roles, you identify the critical systems that need to change and the critical features that need to be built in order to deliver upcoming projects. The goal here is to provide some structure for basing estimates and ordering work.
- This role requires you to have a good sense of the overall architecture of your systems and a solid understanding of how to design complex software. It probably also requires you to be able to understand business requirements and translate them into software.
Role: Project Planner
- Project planners break work down into rough deliverables.
- You’re learning to find efficient ways of breaking down the work so that the team can work quickly.
- Part of the challenge here is getting as much productive work done in parallel as possible.
- Finding places to apply agreed-upon abstractions to enable parallel work is key.
Role: Software Developer and Team Leader
- Raise issues early. Communicate the obstacle first.
- Collaborate, and compromise with your product manager.
- Enlist the help of your engineering manager.
- As a large project nears its delivery date, look for opportunities to delegate work.
Software developers and team leaders write code, communicate challenges, and delegate.
On The Value of Planning
Ultimately, the value of planning isn’t that you execute the plan perfectly, that you catch every detail beforehand, or that you predict the future; it’s that you enforce the self-discipline to think about the project in some depth before diving in and seeing what happens. A degree of forethought, in places where you can reasonably make predictions and plans, is the goal.
On Managing a Project
Project management is the act of breaking a complex end goal down into smaller pieces, putting those pieces in roughly the most effective order they should be done, identifying which pieces can be done in parallel and which must be done in sequence, and attempting to tease out the unknowns of the project that may cause it to slow down or fail completely. You are addressing uncertainty, trying to find the unknowns, and recognizing that you are going to make mistakes in the process and miss some unknowns despite your best efforts.
1- Break down the work.
- Start with the biggest pieces, then break the big pieces down into smaller pieces, then break those down into even smaller pieces.
2- Prioritize and sequence.
- Get the big stuff broken down, and then turn your attention to the ordering of the work.
- What can start immediately?
3- Push through the details and the unknowns.
- Work through the unknowns until you really feel that there is no more value to be gained in spending time on them.
4- Adjust the plan as you go.
- A good planning process helps you know approximately how far the project has come, and approximately how far it is from completion.
- As things slip keep everyone apprised of the status.
- Clearly point to the milestones that have been hit and outline the expected remaining work.
5- Use the insights gained in the planning process to manage requirements changes.
- If requirements start to change mid-flight, take those insights and apply them to the changes. If the changes add significant risk to the project, necessitate a bunch of new planning, or simply require a lot of additional work, be clear about the cost of those changes. If you’re working toward a hard deadline, knowing roughly the effort required will help you prioritize, cut, and simplify work to get the best compromise of features, quality, and delivery date.
6- Revisit the details as you get close to completion.
- Run a premortem exercise. Go through all the things that could fail on the launch.
- Decide where the line for “good enough” is, socialize it, and commit to it.
- Focus the team on the most important final details.
- Make a launch plan; make a rollback plan.
- At the end of it, don’t forget to celebrate!
How to be a Great Tech Lead
Your highest priority as a tech lead is taking a wide view of the work so that you keep the project moving. How do you go from organizing and planning the code you need to write on your own to organizing and leading the overall project?
1- Understand The Architecture
- Take the time to understand the architecture you are supporting.
- Learn it. Get a sense for it. Visualize it.
- Understand its connections, where the data lives, how it flows between systems.
- Understand how it reflects the products it is supporting, where the core logic for those products lives.
2- Be a Team Player
- If you’re doing all of the interesting work yourself, stop.
- Look at the tricky, boring , or annoying areas of technical need and see if you can unstick those areas.
- Encourage others on your team to learn the entire system.
- Give them chances to stretch themselves
3- Lead Technical Decisions
- Determine which decisions must be made by you, which decisions should be delegated to others with more expertise, and which decisions require the whole team to resolve.
- Make it clear what the matter under discussion is, and communicate the outcome.
4- Communicate | Practice your writing and speaking skills.
- Write design documents and get feedback on them from better writers.
- Write blog posts for your tech blog or your personal blog.
- Speak in team meetings, speak at meetups, and get practice standing up in front of an audience.
5- Communicate | Don’t forget to listen.
- Give others a chance to speak, and hear what they say.
- Practice repeating things back to people to ensure you understand them.
- Learn how to hear what someone says and rephrase it in your own words.
Final Thoughts
Being a tech lead is an exercise in influencing without authority.
The book does a great job at explaining how the role of the Tech Lead moves from individual contribution to taking on the responsibility for collective success. Understanding the big picture of the systems, thinking through the fuzzy parts of a project, facilitating key discussions, and enabling peers and junior team members… All of these boil down to helping others succeed.
—
I greatly enjoyed this part of the book, rich of stories and techniques to thrive as a Tech Lead. All content credit goes to the author. I’ve simply shared the bits I’ve enjoyed the most and found most useful.
Cheers ’till next time!
Alberto