When developers are promoted into a position leading the team, a different skillset is needed. According to Patrick Kua, author of the book, Talking with Tech Leads, technical leaders have to be able to delegate, facilitate, communicate and manage risks to help the team move towards a common technical vision.
Patrick Kua will give a talk titled, The Geek‘s Guide to Leading Teams at the OOP 2015 conference. InfoQ will be covering this conference with write-ups, Q&As and articles.
InfoQ interviewed Patrick about the need for technical leaders, differences between the Scrum master and Tech Lead roles, leadership skills and what technical leaders can do to support people in developing their skills and abilities.
InfoQ: Can you share your thoughts on why we need Technical Leaders?
Patrick: Software is now more pervasive than ever before, and will continue to grow. The scale of software is also now very different, requiring more software developers to work together. Technical Leaders are more important today than ever before to help software developers work towards the same goals.
There are many types of Technical Leaders, each operating at different levels of the organisation. You have the CTO, responsible for an entire IT organisation but often far removed from the day-to-day writing of code due to the size of the organisation. In contrast you have the Tech Lead role, who is responsible for leading a team of developers. As an industry, I feel we need to help support these Tech Leads because they are the most difficult to grow but have a significant impact on the effectiveness of teams of developers.
For example, I have seen many situations where developers argue with each other and progress stops because they could not find a way forward. An essential part of the Tech Lead role is finding a way to continue to move towards a Technical Vision, which the Tech Lead is responsible for.
Developers often find the transition to a Tech Lead difficult because the skills that make an effective software developer are different from the skills that make an effective Tech Lead.
InfoQ: In your opinion is the role of a Scrum master in an agile team similar to a Tech Lead role?
Patrick: ScrumMasters and Tech Leads share some similar traits: they should be able to facilitate situations and are looking to help the team move forward in their goals. However their responsibilities are extremely different. Where ScrumMasters only exist on teams that adopt Scrum, Tech Leads exist in all sorts of other environments - agile teams that do not use Scrum, and in teams that would not be considered agile.
In my opinion, it is essential that effective Tech Leads write code, and remain technical where I do not see that as a required skill for ScrumMasters. I have seen many successful ScrumMasters working on agile teams that have no background writing code. I have not yet seen a successful Tech Lead who was not previously a developer.
Other key responsibilities that are unique for the Tech Lead include identifying and managing technical risk, working closely with business people to create and support technical solutions to business problems and to work with the team to establish and work towards a Technical Vision.
InfoQ: Can you explain why you think that Tech Leads should also write code?
Patrick: To be an effective leader, Tech Leads need the respect of their team. One of the most effective ways of building trust with developers is to demonstrate competence and writing code with the team is a good way of doing this.
A key responsibility for the Tech Lead is to help the team move towards a Technical Vision. Another good reason for the Tech Lead to code is to better understand when the Technical Vision needs to change, or how the can better meet the Technical Vision based on the tools they are using. Trying to understand the true impact without a good understanding of what code looks like is impossible if the Tech Lead cannot write and read code.
One of the biggest challenges for a Tech Lead is finding a good balance between time writing code and the other responsibilities that must be fulfilled.
InfoQ: What kinds of leadership skills do technical leaders need? How can they develop those skills?
Patrick: Any leadership skill will be useful to Tech Leads because they are also a leader. I see some key leadership skills for a Tech Lead including: delegation, facilitation, communication and good risk management.
Delegation is probably one of the most difficult, but still important skills for a Tech Lead to build as it requires transitioning from a “doing it all” mindset to “doing just enough” mindset. Developers are used to having control over the design and code, and this is often an uncomfortable experience for developers moving into the Tech Lead role.
Facilitation is a key skill in resolving conflicts and finding the best solution from many options. It is particularly important because in many environments, it is the loudest and longest speaking voices that often win. Unfortunately when one loud and long-speaking voice dominates, it often leads to suboptimal solutions and resentment from other team members.
A Tech Lead is often involved in meetings with non-technical people and a Tech Lead must be able to effectively communicate with them. This often means explaining technical concepts using completely different strategies such as avoiding tool or product names and the use of metaphors and diagrams to explain technical ideas in non-technical ways.
A Tech Lead must also ensure the team has the same understanding of the Technical Vision. Drawing effective diagrams and careful listening for misunderstandings or discrepancies are key communication skills that will make a Tech Lead effective.
One positive side to these sorts of skills is that there are many books and external training courses to build awareness. The difficult part is turning this knowledge into experienced skills. For that, I would recommend finding a leadership coach or someone who can regularly give you feedback and suggestions on how to approach leadership problems, such as another Tech Lead!
InfoQ: What can technical leaders do to support people in developing their skills and abilities? Do you have examples of this?
Patrick: An effective Tech Lead should keep regular contact with their team members to understand both what their current skills are in addition to what skills they would like to develop. One very good way of doing this is to have regular one-on-one sessions with each team member to discuss their goals and interests.
A Tech Lead can then better support people in developing their skills by connecting them with opportunities that they may not know of. For example, a Tech Lead may know of an external training course, or a conference that may be relevant to a skill someone would like to develop and support them with that.
Another way a Tech Lead can help people develop their skills is to give them an opportunity to try something new out and to create an environment where they can “fail safely.” A real example might be that a developer takes on a new task they do not have skill in, but it is not a time-critical task which means there is some time for learning. At the same time, the Tech Lead may have identified someone else who already has the skill that the developer can go to when they need help either inside the team, or inside the organisation. A Tech Lead can provide an even safer environment by regularly checking in on progress to see if they need help and providing new options to try if the developer has arrived at a roadblock.