Project Goals

Most software engineers want their project to be successful but do not know how. One technique that I teach them is to define a priority goal at the start of the project and continually review the progress toward the goal during the project.

Typically, software project have three common goals: Deliver the product on time, complete all required functions, and have low defects (High quality). In my experience, it is difficult to meet all three goals so I advise people to identify one as the top priority to work on. This will help them to stay focus rather than spend too much effort on something they can not control. To deliver what the customer considers the most important is what success means to software project and in order to do that, project manager must ask the customer which is the highest priority.

Many people do not agree with me that they have one top priority so let me explain this in a simple case study: Assume that its is three weeks before the scheduled delivery date but the defect count is high and the last function is not quite finished yet. What would you do? If you decide to deliver the software at the scheduled date then do you think the customer is happy with the unfinished product and high defect count? If you choose to deliver the product as soon as all functions are completed then do you think the customer is happy when the product is late although it meets all functionality? If you decide to add few more weeks to fix all the defects and functionality then do you think the customer would be happy if the delivery is late even the product has high quality?

The main idea here is the success of software project is a perception dictated by the customer so you must ask the customer. Communication is very important in software business and it is important to ask them: Do all defects need to be fixed, or are there critical defects to be fixed before the delivery date? Do all the proposed functions need to be completed, or are there most important ones that need to be implemented before the delivery date? And is the delivery date depending on those particular functions? When prioritization is unclear, it’s time to ask questions-because when project priorities change, everything changes. The key to project success is to recognize which goal is the top priority from the customer point of view.

Most university professors only teach students that the successful factor is low defects (high quality) and focus on teaching more testing. Although quality is important but I think it is not adequate to define project success based on quality alone. Today we are living in a highly competitive market, sometime to have the product on the market first is a strategic advantage (For example Microsoft chooses this strategy because when they put a new product on the market, they want to capture the entire market so no one can create a similar product or compete with them, although the product still have defects but they fix defects later).

In the market economy, customers will buy the first products available on the market because they like the new technology and want to get their hands on it. As long as the product does something well, they will be happy. As long as the defects do not get in the way they can live with a few smaller defects.

My conclusion on software success is the ability to ask the customer which goal is the top priority then makes plan to achieve it.

Sources

  • Blogs of Prof. John Vu, Carnegie Mellon University