Recently I’ve switched from a developer role to hands-on team lead and decided to share my experience while it is still fresh in memory.
“Hands-on” simply means that I still write code ⌨️
This is how I prefer to match roles and responsibilities:
🗡🗡Tech Lead — a person who is responsible for setting tech agenda for the team, has no direct reports, full-time coding. [Tactical hire]
🗡🛡Team Lead — a person who is responsible for tech agenda and long-term team success, has direct reports, part-time coding. [Strategic hire]
🛡🛡Engineering Manager — a person who is responsible for long-term team success, manages direct reports, almost no coding. [Strategic hire]
A tactical hire is a person who gets work done, preferably in silence, networks with others only when its needed. Happy as long as work is relevant and stable.
A strategic hire pushes their own opinion and agenda. Engaged in work, networks with others who do it and tells everyone a preferred way of doing it. People around are pissed off by the annoying intensity of the agenda.
Both tactical and strategic hires are required in any company.
🛡Ready to shield people
You want and are ready to protect your reports.
Your main responsibility would be to work as a shit umbrella, rules are simple: all negative communication and process changes go to you first, then you filter them and take actions accordingly.
You won’t be able to simply cascade shit directly to your reports. Your job is to transform the shit into constructive actions, feedback and growth directions which don’t look like an offence to your reports.
🌱 Enjoy growing people
You enjoy helping people to study and reflect on their work. You will have to identify the personal agenda of your reports and help them achieve it by crushing obstacles.
🤝 Interested in developing soft skills
You realise how soft skills are important in achieving big goals and want to get better at organising people to achieve big goals together.
💰 Getting more money
Typically a team lead role is better paid than a developer role in the same company, but if you need more money a 10–20% raise won’t be a life-changing difference. If this is your only motivation it will be hard to succeed in the role.
🤓Becoming a better programmer
If your passion is solving hard programming challenges but you hit a ceiling and your company expects you to become a Team Lead, just change the company. The more you do the more you are, stick to your passion if you prefer computers to people.
⚔Seizing interesting work
Since you will be a person in charge you can organise work in a way that all interesting coding lands on your desk. This superpower should not be abused, the only excuse for this is that you are both the best person for the job and you have a capacity for this in your schedule. Otherwise, give it to your reports.
😈 Becoming a boss
If you get a job, you become a boss, but it is not a permanent position, remember this. You merely borrowed the title. Luckily in our industry, if you are a bad boss your reports will abandon you very fast, they have plenty of options even if they are mediocre.
If you have lack of control as a developer, then don’t think that taking over communication with your team is going to help you. Micromanagement stalls work, you must promote ownership and autonomy.
Perfect Team Lead is like the Sun. It has huge gravity to pull everyone in the same direction, often giving peers momentum to overtake itself.
Seniority is an absolute blocker for starting a Team Lead path. To understand what it is, you can read this very good explanation of Seniority from Krzysztof Zabłocki.
You must believe that you are a “senior” developer and should have external evidence of this: popular blog, open-source project, mentoring practice. External evidence is not required, but it is rather strange that a Senior person has no contributions to a relevant community.
There are two main areas which will be assessed in an interview for a hands-on Team Lead position.
These are your engineering skills, they are useful for getting the job done, but their primary value is in mentoring, assessing and earning authority of your reports.
Do a self-assessment using Skills Matrix:
And roadmaps for relevant platfroms:
These are your organisation and communication skills. They are required to be successful in the role, so the following areas will be assessed in an interview:
Read this before your interviews ;)
A guide for supervising and leading “cats”:
“Cookbook” style answers to questions about leadership and management:
True stories about software development and management of humans:
Not about meditations ;) Helps with self-discipline and a healthy attitude to life and people:
This is a must-read If you happen to know Russian:
aka Interview process
Answering direct questions is not enough, you have to understand who you are you talking to and their personal aspirations for the person trying to fulfil the role. There are three main groups:
These are developers and potentially QA. These people are choosing their future boss so you have to sell your Hard Skills (I’m one of you guys) and give them an idea about your management style and agenda (I’m your shield).
These are leads of other teams including product managers and UI designers. These people are choosing the facade of the team they will work with. At this stage, you have to equally sell your Soft Skills (My team will help you achieve your goals) and Hard Skills (I can assess the team and code if needed).
Your boss is looking for a very specific person, your task is to understand who this person is and if you are that person. Reverse engineer this by asking about current challenges and problems in the team, the more info you can get the better chances of securing the position.
If you get an offer, it contains boring info about compensation and benefits, which is not what I want to talk about. The important bit is that unlike most of the coding positions you interviewed for, a management role implies that you are offered a certain set of long-term challenges and problems before you joined, such knowledge rarely included in offers for developers since they are not expected to take strategic decisions.
You will be assessed by your progress in achieving these goals and fixing those problems, so if you are indifferent to them, it would be wise to pass on the offer. For example: if your management are performance freaks and don’t care about quality (or the other way around) then it’s a waste of time to join such a company. You have to be eager to fulfil a role.
Start from growing a leader within yourself and the title will follow up.
The quality of a leader is reflected in the standards they set for themselves - Ray Kroc
Thank you to all the good managers I had! Same gratitude goes to the bad ones too, because those bastards taught me what not to do!
Special thanks go to the most humble, helpful and inspiring manager I had — Rafael López Diez.
And thank you for reading 👋
Create your free account to unlock your custom reading experience.