All organisations with more than 50 employees will, at some point, require tech leads. Great tech leads can create a harmonious environment, where each team member is encouraged to use his or her strengths to achieve a common goal. Bad tech leads, on the other hand, can demotivate a team by failing to establish a central vision and by hoarding all the interesting work.
Many tech leads find themselves promoted into this role because they were either the most experienced or considered the best developer on the team. However, this may not be the best way to choose tech leads for the team.
Writing code does not develop leadership skills
Developers spend a majority of their time writing code. They read about new tools, algorithms and technologies and structure software to solve business problems, overcoming many technical hurdles in this process. Although developers work within teams, their focus is very much on what they produce at the keyboard.
When a developer is promoted to the tech lead role, he or she must suddenly draw on different skills, which may never have been needed as a developer. In his or her previous role, a developer could easily avoid being pulled into arguments between fellow coders by returning to the safety of his or her keyboard and taking the “it’s not my problem” stance.
A tech lead, however, cannot ignore these disagreements. If they do, the situation may never resolve itself – leading to endless arguments or a codebase that moves in different directions making it more difficult to add features over time.
A developer’s experience crafting code and designing algorithms does not prepare him or her for the unpredictable and highly emotional world of managing people. A tech lead requires skills that include coaching, influencing, facilitating, motivation and delegating, which brings us to another challenge for the expert developer.
The desire to ‘do’ competes with ‘enable’
Expert developers are recognised for their expertise because they have built up their ability to produce well-written code consistently and on a timely basis. They have honed their sense of good and poor code recognition, and are proud to write good code, whilst avoid working with poorly written code.
When the best developer is promoted to a tech lead role, he or she has to oversee and review the code produced by other developers on the team. If the tech lead was previously the best developer on the team, they might perceive the code written by others as suboptimal. They could explain why the code is poorly written, but they might think it faster if they simply rewrite it, or do the task themselves to begin with.
Although the tech lead’s thinking may hold true in the short term, this attitude has other side effects. Given additional responsibilities, the tech lead’s time cannot possibly scale to cover all the work the entire team must produce. Also, it signals to other team members that the tech lead does not trust them, and can have the effect of making other developers feel disempowered.
Though initially difficult, the expert developer promoted to a tech lead role needs to reframe the way that he or she adds value to the team. He or she must stop viewing the solution as writing the best code themselves, and instead take a longer-term view of enabling others in the team, so that they too can write code just as well as they can. With this broader focus, the tech lead can make the team collectively more effective.
Writing code is not the same as designing a system
Developers spend their day designing code to meet some need. However, ‘clean code’ is not valuable until it is deployed and made available to end customers, which requires a different mindset – instead of developing code, developers must develop systems.
In many organisations, developers do not know the configuration of their production environment, making wrong assumptions about the code they write. This is often the difference between a system that works, and a usable and performant system that works.
The ‘works-on-my-machine’ anti-pattern is common for great developers, but tech leads have to think in terms of the overall system, and not just the code.
The good news
Although organisations must be wary about promoting the best expert developers to the tech lead role, not all is lost. Good developers can make great tech leads but organisations must recognise that tech leads also require a set of complementary skills.
The activities and situations most developers work in day-to-day do little to prepare them for leading a team, enabling and encouraging team members, or focusing on the overall system.
Good tech leads require a good amount of technical knowledge, but they do not necessarily need to be the best. They need to be good enough that the team respects the tech lead technically, but they will probably draw more on their leadership skills day-to-day than their technical skills.
Organisations can cultivate the next generation of tech leads by sending potential tech leads on leadership courses and highlighting the skills they must build in their new role.
Sourced from Patrick Kua, ThoughtWorks