Some time ago a friend of mine has asked me to share an opinion on how to be a technical lead. He is a strong developer in another area of influence, who started considering a career growth.
Frankly, trough five years of experience I strive to think that I still don’t have an objective vision. Nonetheless, at least I can share my own humble opinion on how I understand the role and give you advice on what helped me personally (not to fail). All written below is strongly opinionated, so alternative visions are welcomed.
It worth mention that being a lead is usually a project role. And depending or your specialization or project needs you can be responsible for different (but usually crucial) parts.
But what is the difference between tech and team leads?
It's hard to answer this question. Usually, it depends on a company scale and a variety of questions to solve. In mid-size and large companies the role of a tech lead will be taken by the most experienced developer in a team, while a team lead is usually a manager’s role.
In our case, as a technical lead, you’re becoming responsible for such aspects of a work as:
This may sound scary for people without experience, but usually, most of the work is (or can be) distributed in time. It also becomes less stressful with time and pretty similar to micro-tasks you handle during the day.
Albeit is might be not the worst idea to review some projects, in particular, I would want to believe that Customer Name is the last thing that influences a result. Instead, it makes more sense to highlight different inputs that affect scenarios you’ll apply during your work:
Effective work requires to balance all inputs above.
You might be curious why I did not include such a thing as a Scope of Work
. The short answer - I consider that amount of work is always bigger than a timeline of a project, whether it a technical debt of features. Like 120%
. But we’ll return to this later, to understand why this happens (as it should).
One of the things that might be prioritized in your timeline as soon as you join a team - to build the team’s development core. A Babylon hasn’t built by one person, and this software won’t be too. There are two standard ways to invite people to a team:
So be ready, it might take a while. Regarding hiring, there is usually a dedicated person in a company to communicate with developers in a market, so the most important thing that belongs to you is interviews. There is a substantial question though: how many workforces your team would need? In this case, a work with estimations will be involved (whether done by you or an Architect / Manager).
There are other things that should be done before the hiring, such as a proper technology choice. It may significantly affect a number / diversity of people hired.
The good part here is that while you’re setting up a team, already joined members can start working on application setup and prepare an extensible application framework, based on early inputs and your experience.
It is crucial to be in time with stable and reusable solutions, a wrong choice may lead to a massive refactoring of an application.
Over time, your focus on planning and architecture may be shifted to development as well, to help the team to deliver faster, be hands-on and monitor source code (to prevent code smells).
In theory, this phase is the most stable one.
So many if
’s. But there is at least one thing among them in common: all points above are increasing your backlog, by adding new features or technical issues to fix.
During this period, you need to balance between code reliability, backlog, and delivery, and the complexity of this activity is dependent on how well you know your team.
Handling a backlog makes a lot of sense during an active development phase. Ideally, backlog should not be items left there for months. In your power to select a proper time and developer to handle the technical debt, even with a standard features first
approach.
In this phase, the application appears to be in production already or going to be soon. It means that stabilization is more important than usual. You behaved during the process rather good if
However, it’s good to mention about motivation here. Some people lose focus and willing to work once the application leaves development
phase. Even leaders. So if a project is your child - don’t leave too fast. You still need to make sure everything works smoothly.
Nonetheless, if you join a team that missed their tech lead recently - you might be in a difficult situation. But there is a thing: there are no bad projects, so keep calm. Next things might help you:
Few people think that project in a support phase is a good opportunity to keep skills in a good shape. I am one of those. All you need is to determine what pieces of the application are bad parts and require replacing, and where the application is in good shape.
There is no single recipe on how to become an effective technical lead in a short time. You’ll need to try anyway and learn from your mistakes sometimes. At least I can share some Q&A with to support you:
Good luck!