The roles and positions of the Team Lead and the Project Manager in the Software Industry can seem similar, if not outright the same. This is particularly true for an aspiring software developer who has recently been promoted to a position of a Team Lead or a Project Manager, and who is thrown into the fire trying to figure out what his new roles are.
The goal of this blog post is to, based on my professional experience, explain the difference between these two roles, and to help software developers that recently took up these roles as part of their career advancement, and who have found themselves confused about what their responsibilities in this new role are.
First, we will tackle the Team Lead role, viewed by most to be “a level below” the Project Manager position, or at least a stepping stone to it. While that does have some merit, and indeed, some people who were Software Developer Team Leads do become Project Managers, I want to object to the notion that the Team Lead is “a level below” the Project Manager. That would imply that the Team Lead and the Project Manager are mutually exclusive, that they are steps on the career ladder. If you want to be a Project Manager, you can no longer be a Team Lead. In my opinion, that is incorrect.
In fact, I would go as far as to say that the Team Lead position does not exist. You do not apply for the position of (only) a Team Lead at a software engendered company. You apply for the position of a Software Developer or a Project Manager.
The Team Lead is a role that is added to your current position, be it a Software Developer or a Project Manager. It can even be added to other positions, such as a Marketing Manager, which would mean that you are a Team Lead in the marketing department.
Team Lead Traits
So now that we have defined that the Team Lead is an extension of one’s current position, let us see what the Team Lead actually does. Since this is first and foremost a software development blog, I will focus on the Software Developer Team Lead, but this applies, with certain variations, to other positions as well.
First of all, a Team Lead needs to be in a team, and have team members. This is obvious, but still important to the state, because a Team Lead is nothing without team members. This means that you, as a Team Lead, have people who will come up to you first in case they have questions, the person whose feedback they will value, and people who will look up to you.
Software Developer Team Leads are usually the ones who voice the concerns of the team to the project manager, the product owner, or anyone whom the team wants to talk to. This means that the Team Lead is the spokesperson for the team to the other parties. They are the one who passes on information from the developers to stakeholders, in such a way that the stakeholders can understand clearly what the developers want. The information needs to be passed without losing the intended message in the software developer’s technical jargon, which is usually foreign to stakeholders.
The Team Lead also needs to maintain a positive team spirit. This means that the morale and motivation of the team members should be kept at a level where the team members can trust each other, motivate each other, and where team members are not afraid to ask for help. Cultivating a culture in which people greet each other every morning and every evening, and creating a positive atmosphere within the team are key components to achieving this trust.
I do not mean that everyone must be friends in the team and that they must hang out outside of work. What I mean is that everyone in your team should be friendly to one another, and ask for help without worrying if the other person will be condescending to them. Also, having a few team members who crack jokes is also good, as long as they keep it to a level where the jokes come naturally,(nothing is more obvious than a forced joke made only for the sake of boosting the team morale), and the team is not offended by the joke.
An important part of creating and maintaining a healthy team spirit where people trust each other is incorporating the process of giving feedback. You, as a Team Lead, should be monitoring the progress your team members make, and provide feedback based on that progress.
This is important for two reasons. One, teammates want to advance and improve themselves. This gives them something to strive for in the workplace. To do that, they need honest feedback about their work and performance, as well as what they can improve. Two, it forces you to think about your teammates and evaluate them not only for the purpose of giving them a raise or a promotion but to help them develop further and pursue their personal goals. I know this sounds cliché, but helping your teammates grow professionally is an amazing reward of itself for the Team Lead.
There is a lot to cover when it comes to giving feedback, a great deal of details I can write about (for a future blog post), but here I will write down the essence of what constitutes good feedback:
- Make them frequent – at least once every two weeks, if not once every week. This way the teammate knows if they are on the right track. If it’s less frequent, the teammate might think that you have forgotten about them.
- When complimenting or critiquing certain tasks or results, do it immediately – giving feedback on a specific task one or two weeks later is ineffective. The teammate will, for example, not think of the compliment or critique as something that they did, but as something indicating how you feel about them as a person.
- Open and close with positive feedback – if there is any negative feedback, put it between the positive things you have to say – make a compliment sandwich of sorts. That way, they will not be disheartened by the negative feedback, but instead, see it as a means of improving themselves so that they receive more positive feedback in the future.
Technical Traits and Code Review
A Software Developer Team Lead should have technical expertise in the programming language, framework and design patterns, at least in those that the project uses. This is needed in order for the Team Lead to give feedback and guide team members in resolving issues during development, in using the framework or designing a pattern correctly, and most importantly, in conducting Code Reviews properly.
Code Reviews are an essential part of good software development. They are used to uncover issues before they appear in a staging or production environment, to discuss the code in order to improve the technical knowledge of the person who wrote the code, and at times, to improve the knowledge of the person who is reviewing the code.
The Team Lead should encourage code reviews in the team. If the team does not perform code reviews, the Team Lead is the one who can easily establish them as standard practice, because of his or her influence on the team. The Team Lead, or at least a senior developer, should be the one reviewing the code. This will greatly help junior developers in improving their technical expertise.
How to become a Team Lead?
Honestly, the best way to become a Team Lead in your team is to naturally become one, without officially getting the title. What this means is that there is no higher-up introducing you to the team as a Team Lead, slapping the title next to your name on the company website and expecting the team to suddenly accept you as a Team Lead.
Instead, let it happen organically. Depending on how your company is structured, there is no need for an official title at all. Rather, the “promotion” should be such that the teammates naturally look up to you and ask for advice and feedback and see you as a person promoting trust and honest feedback. Ideally, after a period of time, you will look at your team dynamic and find that you have become a Team Lead without any ceremony.
In summary, strive for building a trusting and honest environment and let the progress to Team Lead happen spontaneously.
In contrast to the Team Lead, the Project Manager is an actual position. You are not a Software Developer and a Project Manager at the same time, although you can be a Project Manager who has previously been a Software Developer. This certainly helps in understanding the technical side of the project and being respected by the software developers working on the project.
To put it simply, the Project Manager is responsible for defining the tasks that are needed in order to complete a software feature, with subtasks if needed, consulting the software team if there are any uncertainties regarding the tasks. Monitoring progress and reporting the status to the stakeholders is also part of the job. They are also responsible of managing various estimates in the project, (the topic of how useful estimates are is a different matter, but the fact is that they do exist and are, for now, necessary in enterprise projects).
Another important aspect is the issue and risk management. Issue management is crucial because issues usually occur when a customer has noticed the issues, and it is up to you to collect them, sort them by priority, and assign them, as well as notify the customers of the progress. It might seem trivial, but proper issue management is key to keeping a good relationship with the customer.
Risk management can be seen as managing the possibility of issues occurring before they actually occur. It involves documenting any noticed risks that can cause issues down the line, and categorizing the risks as fixable, avoidable, or something that can inevitably happen and that the team can prepare for. This is important to either stop issues before they happen, or prepare for managing potential future issues once they occur.
These are some of the responsibilities of the Project Manager, ones that I found to be the most important. I will talk about other responsibilities in future posts.
Can a Project Manager be a Team Lead?
Absolutely! As defined before, a Project Manager is a position, and a Team Lead is a role. One does not cancel out the other. In fact, at the time of writing this blog post, I am both a Project Manager and a Team Lead in the company I work for.
The Project Manager is responsible of managing and assigning tasks, managing issues and risks, and at the same time, the manager can be a voice for the team to the stakeholders, and make sure that a healthy environment is formed. This can lead to tasks being completed with regards to the quality standards the team has set for itself, and in the timeframe defined by the project. What’s more, since they are leading the team, they know how to best assign the tasks to the team members.
In this blog post, we have looked into the basic traits and techniques that a Team Lead and a Project Manager should know. We have also answered the question if a Project Manager can be a Team Lead at the same time. I hope this has helped you to find out if these roles and positions are for you in your further professional development.
Milan Kosanović is a software developer with over 4 years of experience. He started his career in company Vega IT Sourcing, where he works to this day. In the beginning, he was working on a smaller project, but after that, he put several enterprise projects under his belt. At the moment he works as Project Manager and Team Lead.
Read more from the author here.