The best architectures, requirements, and designs emerge from self-organizing teams.
Some managers feel they need to control every action and decision. By micromanaging every detail, they have a stronger feel for the status of the project. They believe that they know better than the staff on what course to take for every decision. This allows them to write up nice status reports and Gantt Charts and deliver updates to their own managers.
There are many problems with this.
The first mistaken assumption is one of knowledge. The manager is not knee-deep in the code like the engineers are. There is no way the manager can understand the difficulties to come as well as the people who actually have to overcome them. The people with the best information about the challenges ahead are those with the boots on the ground.
The next issue is one of intelligence. Just because someone is a manager does not mean they are the smartest person in the room. Given that you generally want to hire the most intelligent people, it should be a safe assumption that you’ve managed to hire people smarter than you.
Finally, there is the matter of responsibility. When the manager makes all of the decisions, the team feels less responsible for the outcomes. It is much preferable to want the team to own the responsibility for the delivery of the software. This often does not occur when the team is being micromanaged.
Instead, decisions should be made by self-organizing teams. Have the right people come together and come up with a plan of their own. Because they are making the decisions, they will feel more responsible and be more invested in the outcome.
There are some related ideas to this which go beyond management. One of these is never to work alone. Software engineering is a team sport. Developers that work solo fail to benefit from the knowledge of their peers. Their bad decisions are not caught until much later. Always work with others.
When working in teams, remember that everyone is valuable and can contribute. Some teams prefer that only the senior people talk and make decisions. This is a mistake. Just because someone has less experience than others does not mean that they can’t have good ideas.
Empowering others and supporting your co-workers is good leadership. Dictating their every move is not.