Pages

Saturday, September 1, 2012

Difference between Software Project Management and Project Management

Few years ago when I taught software project management in Asian, I found that there was confusion between “project management” and “software project management”. Some universities used “Project Management” books which were written for construction industry and other industries but not software. For example, when they estimated efforts, many began with 5% in conceptual and initiating phase, 10% in architect and design phase, 75% in implementation phase, and then 10% on maintenance. This is correct for construction industry. You do not need a lot of people when working with owner to understand requirement needs. Construction planning is mostly logistic and administration works. You do not need a lot of people during architecture and design phases. The architect designs the construction with a small team and when the architecture plan is complete, it never changes. The major efforts happen during construction phase when you need a lot of workers to build the house. There will be some small efforts in the maintenance phase (Painting and cosmetic decoration).

In software project, the most important phases are the first two. Planning is critical and architect and design are essential. Since software requirements often change, often late in the project; team members must involve early to understand the business needs, analyze and verify requirements to reduce the risk of requirements change. The effort needed should be at least 20% in requirements phase, 20% in planning phase, and 20% in architect and design phase. By having at least 60% of team members involve in the project early, the team can work with customers to collect requirements then breakdowns requirements into smaller components where they can estimate more accurately. Knowing the effort and time required to implement, they can plan the project accordingly. The team organizes these components according to architecture so in the end they all fit correctly. Only when these works are done the team could design each component in more detail. By doing most of the work earlier and make sure that all requirements are accounted for; construction and testing would be easier. Software project does not fail because developers cannot code; it often fails because of bad requirements, bad planning, and bad project management.

Because of the confusion about “project management” and “software project management”, some managers do not pay enough attention to the early phases of software development resulting in many failure. In some countries, software project management is not taught in undergraduate program so students do not understand the concept and the software project management life cycle. Most project management class is taught in business school where students do not have knowledge of software development. Without proper knowledge of software, without proper software project training, many managers follow the common method of “Code & Fix”. This method ignores requirements and design in favor of a simple way to code first then fixing later. Project planning is done by the project manager without the participation of team members. Without proper knowledge of software, project estimate is based on the schedule given by customer even customer really do not know how long would take to complete the project. The project plan is based on a budget given by manager without proper estimation. When it is approved, it never been updated even requirements have changed. The team spends most efforts on coding and fixing. The more they fix the more defects they add so they have to fix it again. The cycle of code and fix continues until the end. As a result, software project is costly, does not meet schedule, and often has poor quality. Unfortunately, this method is still being used in many places.

Some students asked me: “Why software differs from non-software project? It is simple, software project deals with “intellectual work” when the other deals with “physical work”. You can look at a physical work like the construction of a house and know that how much it has been completed. For example, 10% or 50% but it is difficult to do that with a product which is still in the mind of developers. A good construction manager know how long it will take to build a house, he can calculate the size, the materials, and the labor efforts. It is difficult to calculate the size and effort of a software project, especially during early phases. That is why it needs a different approach and method to manage software project.

I often ask students: “Can a non-software person (e.g., students from business school) manage a software project? I have written about this topic several times in my blog. I often use it as a topic for discussion in my software project management class and it always create interesting discussions among students.

My question to you: What are you doing on your software projects? I am sure that you do not plan to fail, but if you have failed before, perhaps it is time for you to learn more about software project management or take a professional training course on this topic.

By Prof John Vu
Orignal source : http://johnvublog.com/?p=241

0 comments:

Post a Comment