I'm coming up on 15 years of professional career in software (development experience being 25 years or so).
In small projects, a lack of managers can be pretty effective when there is good team cohesion and lack of conflicts over priorities and expectations.
In larger projects and teams, where your team has to interact with other teams and navigate competing pressures within a larger organization, while still delivering on internal goals and keeping turnover reasonable.. managers are crucial.
The best managers make you feel like there is no manager. They run interference for you. They talk to you, understand your individual priorities as a developer (project priorities as well as career priorities), and coalesce that information across their entire team to quietly craft a path forward that preserves cohesion and effectiveness and productivity and happiness. They also communicate progress to higher ups, and interpret (to the executives) the day-to-day operations with relation to broader organizational goals.
Managers are the interface between larger organizational priorities and a team's individuals. For a company, managers serve the role of both implementing policy top-down, as well as understanding operational dynamics from the bottom up and communicating it to the higher-level positions in the org.
They are fundamentally a structural necessity once you step beyond a certain scale of project or product or company.
My personal thoughts on managers used to be closer to yours, but it has evolved over time. These days, I'm more inclined to think that _everyone should get an opportunity to be a manager_. Maybe even a structure where management roles are cycled between different people on the team with a willingness to take on the role. I think more developers need to understand how difficult good management is, and to get a personal exposure to that problem space. I think it would make developers into better developers.. who, rather than reacting blindly to their local perception of the symptoms of management (poor or good), get a firsthand view of the other side, and learn to better interact with it in the future.
> everyone should get an opportunity to be a manager
One way to test drive being a manager: read the Ask A Manager column (https://www.askamanager.org/) for a few days or browse the archives. Read the question submitted by the reader, consider how you would deal that problem, then compare your response with Alison's (and the commentors below.)
Yes, most the problems are not technology or software problems. Some are downright silly. But that's largely true of software development, too.
> The best managers make you feel like there is no manager. They run interference for you.
This is the most important thing, and its hard to recognize as its invisible to the developers. "Do I need a person running interference so I can focus and get stuff done?" is also a useful metric to decide if/when you need a manager.
In small projects, a lack of managers can be pretty effective when there is good team cohesion and lack of conflicts over priorities and expectations.
In larger projects and teams, where your team has to interact with other teams and navigate competing pressures within a larger organization, while still delivering on internal goals and keeping turnover reasonable.. managers are crucial.
The best managers make you feel like there is no manager. They run interference for you. They talk to you, understand your individual priorities as a developer (project priorities as well as career priorities), and coalesce that information across their entire team to quietly craft a path forward that preserves cohesion and effectiveness and productivity and happiness. They also communicate progress to higher ups, and interpret (to the executives) the day-to-day operations with relation to broader organizational goals.
Managers are the interface between larger organizational priorities and a team's individuals. For a company, managers serve the role of both implementing policy top-down, as well as understanding operational dynamics from the bottom up and communicating it to the higher-level positions in the org.
They are fundamentally a structural necessity once you step beyond a certain scale of project or product or company.
My personal thoughts on managers used to be closer to yours, but it has evolved over time. These days, I'm more inclined to think that _everyone should get an opportunity to be a manager_. Maybe even a structure where management roles are cycled between different people on the team with a willingness to take on the role. I think more developers need to understand how difficult good management is, and to get a personal exposure to that problem space. I think it would make developers into better developers.. who, rather than reacting blindly to their local perception of the symptoms of management (poor or good), get a firsthand view of the other side, and learn to better interact with it in the future.