For many of us developers, the team leader is a role filled with an air of mystery: we all know that you need to have a lot of experience to become one, but many juniors and even some seniors don’t realize what it actually takes. Right now I am leading a small team and undergoing special training to become a fully operative and efficient team leader.
I started as a freelancer, working on small projects, communicating directly with the client, focusing on my code, maybe handling some git issues now and then. At this stage I did not have a leadership role, I was just a developer doing my best. After a while I joined a company in Chile in which I followed the same structure, since I was assigned to small maintenance jobs. However, as the trust in my work grew, I was assigned to a bigger project with two of the senior developers as my leaders and role models, my first real world experience with a leadership position.
They were both so different to each other. One is a developer that graduated from the same college as mine (small world). She is the definition of a workaholic, producing from morning to late in the night. I have never met someone as trustworthy as her, she moves the world itself to help you in everything you need, even if she has tons of work. If I had to describe her in one word it would be hardworking. The other leader is a developer we all know at some time in our lives, that guy that deeply enjoys code, it is his hobby and passion, he just loves what he does, and by result he is a genius.
As a team leader you don’t have to know everything, you could even be in the lead position of several developers that are far better than yourself. Your role is not to write the best code (and maybe you don’t code at all), your job is to guide 2 or 20 developers to do their job the best they can. The leaders on my project got me up to speed in less than a few hours: with a couple of meetings, they showed me how the flow of the application worked how should I tinker with it.
My next project was a dashboard generator for companies, a way to easily create visualizations with data. This project was built in Angular 4 (something I had never looked at) and my new leader had worked with it since the first version. He had another project to work with, so he just taught me how to architecture the solution, which services to use, how to communicate between the pages and so on, checking my code from time to time and showing me the best way to handle each situation. That’s when I learned about the second role of a leader.
When you become a team leader you are assigned several junior developers, and to just lead them is not enough: one of your most important roles is to teach them everything you know if not more.
After finishing the dashboard project, I had such a deep knowledge of Angular that I competed with some of the senior developers. Later I was assigned to a project of my own, which grew and eventually required two additional developers, and they decided to put me in charge. After some meetings and failed demos, I had to fill three more important roles.
When you become a team leader, it is your job to make the team succeed. If something happens, even if it’s directly the fault of one of the developers under your command, it is your fault. The client and your boss will make you responsible and you have to take it as a champ, since it was your job that everything worked as expected.
If one of the developers under your command does something wrong, it’s your job to correct them if necessary. It is your responsibility to decide how to fix the current situation and make the team learn how to be better. Keep in mind that you are also learning how to do the best job, and I have seen many senior leaders still struggling with the problem of how to help a junior to correct its current path. We are all always learning.
Sometimes, a client asks for far too much: in those cases you have to take care of your team, argue with the client or your boss to change the scope. If this is not possible, is not just a matter of assigning the task and signing out while your team is still working. You have to stay with them, help them whatever you can, even if you are not coding. This makes a big difference for any developer.
This role is one of the most important ones. We are in a field where technology grows faster than any of us can see, and there will be always someone that knows a new framework, language that works better for the case you are currently working with. A huge part of your job is also learning from the developers under your command, listening to their suggestions and concerns, in that way you feed yourself and keep the team growing.
As I learn with each passing day I realize the importance of this role I was assigned to. A good team leader can not only make its team work, he can organize a group of developers to make them give their best (ORGANIZER), keep the team synchronized and in a good direction (DECISION MAKER), handle the development time (SCHEDULER), manage the communication with the client and other teams involved and translate the information to their team members (TRANSLATOR) and more.