Being a good developer doesn’t necessarily make you a good Tech Lead. This book explores the delicate balance between the technical and non-technical worlds and, with over 35 accounts from Tech Leads, we can better understand some of the challenges faced and lessons learned from tech leadership across our industry.
When I started this book project, I wasn’t sure what sort of responses people would give, nor was I sure if there would be any interest in this topic. As I shared the idea with developers and potential interview candidates, the questions I posed puzzled them because they could not name many books that tackled these important issues.
Many people could reel off books and resources that described how to write better code or how to design and build robust applications. Other people knew of books and resources that taught general leadership, communication, and management theory, but developers and Tech Leads expressed frustration about their generality, lack of context, and not necessarily being entirely relevant to the Tech Lead role.
After reading through the responses in one sitting, I was fascinated by how frequently certain themes emerged and how people would return to the same topics time and time again. In this section, I summarize those recurrent themes and how they shed light on different aspects to the Tech Lead role.
Lessons Learned by First-Time Tech Leads
The transition from a role where you exclusively write code to one where writing code is only a small part is what often takes people by surprise. Here are lessons the First-Time
Tech Leads touched upon:
– Having a broader outlook – Moving beyond the thoughts of a single feature, or code and seeing the whole breadth of the team and business.
– Sensing greater responsibility – The authority that comes with the title requires greater accountability; you are accountable not only for your decisions, but the decisions and actions of each person on the team.
– Guiding the technical vision – The combination of more responsibility and a broader outlook gives rise to concerns when individuals move in different directions. You spend more time providing direction from a technical point of view.
– Coping with less time writing code – You have to redefine how you bring value to the team. You have to look at how you enable others to contribute quality code that requires little rework and delivers to business needs rather than the amount of code or features you deliver.
– Juggling more context switches – The Tech Lead role challenges your time and task-management capabilities as more people will interrupt you for clarification, guidance, and advice. Burning issues draw you away from code-writing, so you need to beware of contributing to the critical path or holding unique knowledge from the team.
– Allowing people to fail – You cannot be everywhere at once and, as much as you want to tell people the traps to avoid, you have to accept that sometimes people learn-best by failing. Instead you ensure failure has a small impact by improving the speed of feedback loops.
– Realizing people aspects are hard – As a developer, you deal with computers for most of the time. You can act grumpily and the computer doesn’t react. You realize that everyone is unique and so reacts differently to your interactions. Suddenly you are responsible for resolving conflicts when, before, you could silently slip away.
Lessons Learned by Practising Tech Leads
The seasoned Tech Lead has worked with several teams, possibly across different organisations. Their commentary often represents wisdom gained from making mistakes and learning from them, having had a chance to apply those lessons in a new context. The lessons learned from Practicing Tech Leads are summarized below.
– Remaining technically grounded – Other developers respect you more if you still write code with the team. Your understanding of the issues also improves if you have contact with the code.
– Finding and developing good people – As a Tech Lead you are responsible for hiring a great team. You cannot rely on hiring people in an ever-changing market and so you need to develop the people in your team and create an environment that encourages learning.
– Listening to the team – As a developer, you probably spend most of your time giving opinions. Your Tech Lead role requires you to now listen to all the opinions and find the best solution within this cacophony.
– Appreciating individual strengths – You will appreciate and sometimes be frustrated by the way people behave differently. You start to recognize different strengths and find ways and situations where people’s these are best applied.
The “Tech” of a Tech Lead
– Guiding the technical solution – A Tech Lead is responsible for everyone sharing the same technical vision. You use architecture diagrams and whiteboard sessions to help build a shared understanding within the team to help align people.
– Harmonizing team direction – Nothing is more destructive in a development team than conflict that resolves itself through the source control system, with different opinions expressed through snide commit messages, or by overwriting someone else’s style. A Tech Lead detects conflicts and differences in direction and facilitates the team to get back on track.
– Managing technical risks – Software has so many potential traps and someone must ensure they don’t get forgotten. Your role as a Tech Lead is to find ways to create visibility and shared understanding of technical risks and to find ways as a group to address them.
– Taking a longer-term view – Developers are more likely to focus on a very narrow view of their feature or contribution. Tech Leads worry more about how the choices of today will turn into the problem areas of tomorrow.
Bridging the Business with Tech
– Building trust – As a developer, you spend most of your time in the details, interacting with people from other parts of the business just enough to work out what you need to build the right feature. As you move into the Tech Lead role, you spend more time building relationships with key business stakeholders; becoming the “go to” person from the technical team.
– Finding time for technology – Bowing to the pressures from the business to add more features is easy. Ensuring that it is done in a sustainable way is one key challenge that the Tech Lead balances. Having a strong trust with the business makes this possible and translating the benefits of investing in technology helps build better understanding.
– Making technology solutions easy to understand – Software is complex in many ways, filled with terminology, constantly changing brands and ideas. As an experienced Tech Lead, you know how to simplify the technical solution and can find analogies or stories to help non-technical people understand the technical landscape enough to help them make better decisions.
– Influencing planning – When you have built strong trust and skill in simplifying technical ideas, you will inevitably be drawn into more future-focused sessions that might involve budgeting or project planning, because people see yours as an important component. You balance this carefully because more time away from the team reduces the freshness of your own information.
– Championing business needs – Sometimes technology teams drift away from understanding end users and the business models that serve them. Tech Leads bring that bigger picture back to the team, and clarify how technical solutions impact end users, and what the business goals are. With this knowledge, the team can make better trade-offs in solution-fidelity once they understand what and how a solution will be used.
– Adapting to new circumstances – From the responses in this book, you can see how many diverse situations Tech Lead may find themselves in and the richness of skills needed to deal with them. You must find ways to build skills you may never have had a chance to develop before.
– Making yourself redundant – Although you may find it easy to play the “Hero Tech Lead” who does everything on their own, it is not sustainable over the long term, nor does it scale to a bigger team. You focus on developing people and finding ways to delegate tasks so that you can spend more time “just being a developer”.
– Using your own strengths – Everyone has their own approach to being a Tech Lead, and when thrust into this role, you spend more time introspecting about what you can offer and apply it generously.
I hope that you have enjoyed reading the stories from the people in my book as much as I enjoyed gathering and reflecting on them. Some people’s stories may have resonated more-strongly than others, and if you find yourself in different circumstances, I would encourage you to read the stories afresh as you may find that someone else’s stories resonate more than they did previously.
I hope my book has helped to give you a clearer understanding of what a Tech Lead role does. The Tech Lead role is very different from that of a developer. You suddenly have to balance depth of technical understanding with the people side and find time to build relationships with the business. You face new challenges building these new skills. You suddenly find yourself responsible for more people than just yourself and you discover that there is rarely any “right” answer when it comes to people.
Fortunately, you are not the first to embark on taking on this role and, with this collection of stories and lessons in hand, you will be better prepared for it.
From “Talking with tech leads” by Patrick Kua