At this point in my career, after going through a variety of experiences, I have no doubt that managing a project properly is essential to its success. It may sound obvious that I have to say this, but I fear that some very poor managers get by because they have an outstanding team at their disposal, without realizing that they are getting in the team’s way instead of making its work easier.
If you think managing means giving orders, cracking the whip, and squeezing everything you can out of your team without caring about its working conditions, you are badly mistaken: people will run away from you, and projects will go badly and progress in fits and starts. Yet this attitude is common in some corporate environments and is even encouraged.
But here I am talking about managing in order to achieve excellent results and build good software products.
What does a manager do, essentially? There is nothing more to it than making the work easier for the team they lead and guiding it with the right attitudes and responsibilities.
And it is not easy—not at all.
As I said, a bad manager with a very good team can ruin a project, but the reverse is also true: no matter how good a manager is, or how well they scored on a PMP certification or something similar, if they have a team whose members lack technical ability, commitment, and motivation, and have trouble working together, we already know what the outcome will be.
In my opinion, managing a software project to success calls for more people skills than technical skills. It is like a puzzle whose pieces have to fit together properly for everything to work reasonably well. I am talking about software development projects, although what follows applies to other kinds of projects too.
Project management has a few essential elements that, taken together, make success almost certain. A good manager has and makes effective use of the following skills.
Planning
A manager has to plan realistically, maintaining the delicate balance between meeting the dates agreed with the client and avoiding excessive pressure and poor working conditions for the team, which tend to produce lower-quality code.
Managers should devote some of their time to planning. There is a personal-development principle that strikes me because it seems absent from our daily work: the more and better you plan, the less time it takes to get things done.
Nothing should be done unless it has been planned in advance. The alternative is working without order, improvising, and failing to distinguish the urgent from the important.
Organization
Obviously, a manager organizes. But organizing does not mean giving orders to do this or that. It means matching the tasks to the nature of the team that will carry them out. To do that, you have to know the people you work with: their weaknesses and strengths, their preferences and technical interests. I would even say you need to know them to some extent on a personal level, so you can understand each person’s situation and judge who is best placed to handle particular tasks.
Organization works both top-down and bottom-up. You also need to coordinate the work’s outcomes and deliveries with the client, and manage problems and incidents.
Good organization enables the team to work properly, with the right tools and without obstacles. It also makes work more productive.
Staffing
Building a team is genuinely difficult, and sometimes you find that other people in the organization have already assigned one in advance. It is essential to have a cohesive team that is committed to the project.
A good manager can spot negative team dynamics and address them at their root, even when that means making difficult decisions.
Delegation
If, like me, you have spent many years on the technical side of the job and gradually taken on management responsibilities, you know how hard it can be to delegate—especially if you think you know how to do the tasks you need to assign to someone else. Still, delegation is essential if you are to focus properly on your other management duties. A project can fail because its manager does not know how to delegate or is unwilling to do so.
Here is my take on it: a manager who works twelve hours a day, lives under stress, and has too many things depending on them simply is not delegating.
Ideally, you should have people on your team who you know will do things much better than you.
Balancing technical work with management duties can be tricky. Personally, I try to combine the two and stay very active in new development, design decisions, and so on.
Oversight
I do not like the word control. If you have a team whose most important working principle is trust, then there is no need to control people: they should be responsible and know what they need to do each day. Nevertheless, you do need to oversee the work and stay informed about how tasks are progressing, and that is something you have to do continuously. If things are going off track, the manager must make the right decisions to keep the project from being put at risk.
Transparency
A good manager knows how to communicate effectively and must clearly report the project’s status both to the rest of the organization (executives, directors, and others) and to the end client. They must also keep their team properly informed about certain decisions and explain why one approach or another was chosen.
Finally, the good news about all of the above is that these skills can be learned.
I would go so far as to say that a good manager working in a growing organization also spends some of their time teaching the skills they have acquired to people whose attitude suggests they may take on management responsibilities in the future.