Large software project

Today, most software projects are large, complex and project team usually consists of many people with different roles and responsibilities. With this structure, developers may feel uncomfortable and difficult to adjust. The first is the lack of understanding of what others are doing. For the team to be effective, all team members need to understand all the roles, responsibilities and authorities within the project's development process. By clearly understand them, they can avoid conflict which often happen in large project. The second is the issue with teamwork and soft-skills. Effective communication, listening, encouragement, and the suppression of “individual egos” are examples of the “soft skills” that are needed for the team to be effective. Lack of these skills often leads to ineffective decision, ineffective meetings, and more personal conflicts. The third difficulty is not following the project's defined process. Even many projects do have training on process but unless there is a clear direction and strong monitoring mechanism in place, team members may do things based on their own experiences rather than follow a process defined by the project manager.

In the past, when projects are small, maybe five to twenty people, developers have their own ways of doing works through “informal” individual process. After they are done, their works are subjected to reviews and tests until they are accepted by the customer. As long as they get their works done, project manager does not care about how they get their works done or what process they are following. In a large project, sometime hundreds of people are involved, the sequence of development changes. The process to create software must be defined and assigned as the development now involves so many people with a lot of works must be integrated. Project manager can not afford to allow people do whatever they want or follow whatever process that they like, it will be chaotic.

The team must understand the project's defined process as their works must be integrated based on an architecture. For example, the team must agree on the certain design characteristics as guidance to individuals doing their own works. The teams and individuals iteratively refine and agree to the content as it is being created. The result is a collaboration with shared responsibilities of the product. Basically, the work sequence is reversed with the review occurring prior to the individual creation. In this type of work, a collaborative environment that enables everyone to have immediate access to the work products as they are being created is required to effectively implement large project as many works are concurring. This is why large project is difficult as it requires a lot of planning, coordination with roles and responsibilities clearly identified before the project even starts.

A project structure must be based on a precise division of team member's roles and responsibilities to create a productive work climate; avoids costly duplication of effort; improves communication among participants; encourages autonomy on the part of participants in the execution of their responsibilities. Basically, role is a position in the project team structure. A role correspond to a set of responsibilities. Several participants can play a single role and a single participant can play several roles. This normally depends on the scope of the project. Responsibility is the activities undertaken by a participant in a specific area. It imply a decision-making power and an obligation to assume the consequences of one’s decisions. A clear assignment of roles and responsibilities is necessary to ensure that each team member in the project knows exactly what is expected of them and other team members.

For better effectiveness, each team must have specific objectives with consensus decision-making procedures. The teams must receive training several weeks before the project starts and the training must clearly explain the sequence of works, the overall architecture and monitoring mechanisms. Of course, not everybody will agree with the way the project is being organized so there will be challenge and this is where the skill of the project manager and system architect are needed to handle this kind of situation. Some technical leaders may question the domain of its empowerment. It is normal for the initial domain to be incompletely defined. Sometimes technical leader will make a decision outside of its domain or someone not on the team may make a decision within the domain. In either case, care must be taken to explain the basis for changing the decision to make sure that the team and project approach is not undermined.

Project communication is the timely collection, dissemination and disposition of project information. Communication provides the critical links among people, and the exchange of ideas and information (i.e. instructions, messages, status reports, policies, etc.) between the individuals that are necessary for the execution of the project. Everyone involved in the project sends and receives information, and they must understand how the communications in which they are involved affect the project as a whole. Project managers must work at building effective communication with project team members and upper management. They must determine the communication and informational needs of project participants, and implement the tools to capture information, and to facilitate the access and distribution of relevant project information, horizontally as well as vertically within the organization. Determining the correct content (e.g. an executive summary, an outlined or detailed content), and mode of distribution to a single team member on the one hand and to all team members on the other hand is essential to the success of the project.

Sources

  • Blogs of Prof. John Vu, Carnegie Mellon University