There are three important key factors that can determine the successful of software project: People, Process, and Tools.
Software project needs processes to accomplish development works and tools to support these processes but it is people that do the work by following these processes and using these tools. Therefore, people are responsible for the success or failure of the project.
As project manager, you must keep the people factor in mind. Most problems in software project are people issues not technical. In my 40 years of managing software projects, I never see a project failed because engineers can not program or design, they are all trained to do that, but failed because wrong estimates, changes in requirements, or not well planned schedule.
I believe the project manager’s role is NOT to make people work but to MAKE IT POSSIBLE for people to work. A good manager will hire the right people; make them happy so they don’t want to leave, and supporting them by creating a favorable work environment so they can do their best. When a group of people share the same goal and form a highly motivated team, the entire work environment will change. In a team, interactions are everything and that is why people like to work together, support one another, and put all efforts into works to overcome obstacles.
A person’s behavior is determined by beliefs and values. Beliefs are formed from previous experiences and information received. Values are what an individual considers important. Beliefs combined with values drive the actions of each individual. For example, an engineer may not like code review because he believes that he may look bad in front of his friends because review may identify more of his defects. Probably few years ago, he may have bad experience during a code review.
To influence the behavior of an individual, a good manager must understand the values and beliefs that are causing the behavior of a person then if needed; help correct any beliefs that are based upon false information. A good manager must help people understand priorities by setting up project goals and communicate them clearly to the project team.
From my own experiences, goals that are simple and well written are more likely to get achieved. Manager must let project team know what do he wants from them, how does he measure it, and by what time. It is important that goals are achievable, that mean they are within the control of the team, otherwise they think the goals are impossible and not doing anything about it. There must be an objective way to verify the achievement of the goals. Otherwise the team would have no way to tell that it had actually reached them or not.
I have seen people making mistake by setting goals that are stated in the future tense and let people think they are wishful thinking. For example, with the goal “I will work more,” I can consider the goal reached even if no action is taken, because I can sit in my chair and tell myself that “I will work more.” Notice that because of the future tense, the statement is true because it doe not have to happen today.
However, if the goal is “Due to customer ‘s requirements and critical business issue, People must work 10 hours per day, three times a week until the project is done” then people can not ignore it and tries to make it true. Goals also need to have a date in order to be effective.
Examples
- Reduce code defects 20% by July 1, 2008.
- Improve planning 10% more accurate as compared with last year data in July 2007.
- Increase productivity for coding (lines of code per 40 hours) by 10% each year from now on.
Be sure to keep a balanced on people, process, and tools. If you can not help people to work as a team and do their best then you will not succeed and your project will fail.