Architecture-Centric Software Project Management: An Introduction
For architecture-centric software project management, the project manager works closely with a chief architect and uses and contributes to many of the artifacts that result from high-level architecture design. This chapter gives an overview of all the main activities that a project manager practicing an architecture-centric approach will be involved in.
1.1 What Is Project Management?
Project managers are involved in four primary activities:
For software management, although these activities overlap a lot, they follow somewhat the sequence in which I present them. Projects are usually planned at their beginning. I envision a high-level design phase of a project, when much of the project planning is done while the architecture is being designed. Planning will also occur again prior to every increment of development. I prefer to keep the increments shorter than eight weeks in duration.
Organizing is also done early in a project. The project team organization needs to be set up and the roles of the team members defined. In some cases, a project manager may be responsible for recruiting and selecting the members of the project team. In other cases, technical staff may be assigned to the project, and the project manager must then allocate the development team roles.
The project manager is responsible for implementing the project in accordance with the plans that have been developed. Often, the project manager will need to react to unforeseen situations, since plans are rarely implemented exactly as conceived earlier in the project. How the project manager reacts to these situations, the decisions that are made, the replanning that is done, and so on will affect the outcome of the project.
The project manager must measure the progress of the project and the characteristics of the product as it is being developed. He or she will also measure the performance of the project team, its members, and the effectiveness of the product they produced, both during and after the project is completed.
There are obviously many other tasks a project manager must be involved in, such as leading, controlling, setting customer expectations, innovating, deciding, directing, and mentoring, Some of these are described in more detail in Chapter 8. The planning, organizing, implementing, and measuring (POIM) definition of what a project manager does is simple to remember, and it functions as a convenient summary of major project management tasks.
How you spend your time will determine to a large extent how successful you are as a project manager. There is never enough time to get everything done, and you will need to carefully determine priorities among tasks to provide a successful balance. For example, in my experience, developing quarterly status reports has low priority, since very few people take time to read them. Their value is often limited, since you are reading about something in the past that you cannot affect. However, though writing quarterly reports is a requirement for many project managers, I myself try to spend as little time as possible writing them. Recognize the important action items, do those first, and push other, lower-priority tasks to the bottom of your personal queue. You will also have to balance the mix among the actions required of you by your development project and those demanded by your personal (non-work-related) life.
Good software project managers usually have a balanced mix of technical and people-handling skills. People management skills are often characterized in terms of communication, vision, leadership, empathy, teaching, charisma, and so on. These skills are often harder to learn than are technical skills. This book may not make you a better communicator, for example, but it can provide tips as to what types of information are important to communicate to the development team. Technical skills can often be augmented by a strong chief architect. Thus, people management skills are somewhat of a prerequisite for software project managers. Many of these skills have nothing to do with software architecture. They can also be developed outside of the project team and the work environment. I encourage new software project managers to build their people management skills at every possible opportunity. This could be done in other environments, such as while managing the company softball team or organizing an external speaker series, with less risk than in development projects.