What are the differences between a team leader and a team manager in a software developer's team? I currently work in a team that is lead by a team leader and I heard discussions about his coding capabilities. I know that a team manager's attributes don't involve any coding.
The team leader should be able to do your job, better than you can do it. Well, usually. There can be a team member who is excellent at his job and has no interest in leading a team, so someone else would be the team leader, still with excellent technical capabilities.
The team manager organises the team. He needs to be excellent at organising things. He doesn't need to be able to write any code at all. If your team leader cannot code then maybe he should be the team manager.
It is possible that there is a developer who is better at software development than the team leader; such a developer would be expected to fully support the team leader. (Helping to make the best possible decisions would be supporting the team leader; openly criticizing wouldn't. From the team leader's point of view, not knowing that someone else is a better developer and refusing to listen to them is also bad).
Based on my research and some people's experience I've come to following conclusion:
- Team Manager: Some or all team members are direct reports of the team manager. The team manager is responsible for vacation requests, annual reviews, any HR-based intervention, and hopefully career management/mentoring activities. The team manager probably has veto power over most anything, but should rarely exercise it. In the absence of a ScrumMaster, the manager also likely takes on many of the facilitative roles and ensures important stakeholders aren't being ignored (but does not become the conduit for those stakeholders).
- Team Lead: This is generally the senior or most respected individual contributor of the team. There's an implicit understanding that the team will generally support decisions made by the team lead, and the lead will also take on much responsibility for the technical training and development of the team.
Most importantly, spend some time with the people around you and understand what they believe their role and your role are all about.