What does the phrase "a manager" really mean anyway? It means different things to different people, and it is often overused for anything that isn't an analyst-level position! So, as common as the term is, it's worthwhile for you to define what the phrase "a manager" really means, especially in the context of software development.
A simple distinction that I have used to illustrate the difference between an analyst and a manager is that while an analyst identifies, collects, and analyzes information, a manager uses this analysis and makes decisions. Or more accurately, a manager is responsible and accountable for the decisions they make.
The structure of software companies is now enormously diverse and varies a lot from one to another, which has an obvious impact on how the manager's role and their responsibilities are defined, which will be unique to each company.
Even within the same company, this is subject to change from time to time, as the company itself changes. Broadly speaking, a manager within software development can be classified into three categories, as we will now discuss.
This role is often a lead developer who also doubles up as the team spokesperson and single point of contact. They'll typically be the most senior and knowledgeable member of a small group of developers, who work on the same project, product, and technology.
There is often a direct link between each developer in the team and their code, which means the team manager has a direct responsibility to ensure the product as a whole works. Usually, the team manager is also asked to fulfill the people management duties, such as performance reviews and appraisals, and day-to-day HR responsibilities.
This person could be either a techie or a non-techie. They will have a good understanding of the requirements, design, code, and end product. They will manage running workshops and huddles to facilitate better overall teamwork and delivery. This role may include setting up visual aids, such as team / project charts or boards.
In a matrix management model, where developers and other experts are temporarily asked to work in project teams, the development manager will not be responsible for HR and people management duties.
This person is most probably a non-techie, but there are exceptions, and this could be a distinct advantage on certain projects. Most importantly, a project manager will be process-focused and output-driven. They will focus on distributing tasks to individuals. Project managers are not expected to jump in to solve technical problems, but they are responsible for ensuring that the proper resources are available, while managing expectations.
Specifically, project managers take part in the project budget, timeline, and risks. They should also be aware of the political landscape and management agenda within the organization and be able to navigate through them.
The project manager ensures that the project follows the required methodology or process framework mandated by the Project Management Office (PMO). Project managers will not have people-management responsibilities for project team members.
As with all roles in today's world of tech, these categories will vary and overlap. They can even be held by the same person, which is becoming an increasingly common trait. They are also constantly evolving, which exemplifies the need to learn and grow continually, regardless of your role or position.
If you are a true Agile practitioner, you may take issue with these three generalized categories, and you'd be right to do so! These three categories are most applicable to an organization that practices the traditional Waterfall model. Without diving into the everlasting Waterfall versus Agile debate, let's just say that these are categories that transcend any methodologies.
Even if they're not referred to by these names, they are the roles that need to be performed, to varying degrees, at various times. For completeness, it is worth noting one role specific to Agile, that of the scrum master.
A scrum master is a role often compared – rightly or wrongly – with that of the project manager. The key difference is that their focus is on facilitation and coaching, instead of organizing and control. This difference here is as much about a mindset than it is a strict practice and is often referred to as being attributes of Servant Leadership.
I believe a good scrum master will show traits of a good project manager at various times, and vice versa. This is especially true in ensuring that there is clear communication at all times and the team stays focused on delivering together.
Yet, as we look back at all these roles, it's worth remembering that with the advent of new disciplines such as big data, blockchain, artificial intelligence, and machine learning, there are new categories and opportunities to move from a developer role into a management position, for example, as an algorithm manager or data manager.