Software project management is an essential part of software engineering. However, good management won’t guarantee success, but bad management results in project failure. Software managers are responsible for planning and scheduling development. They supervise the work to ensure that it is following the standards and monitor progress to check that the development is on time and within budget. Software engineering is different from other types of engineering in a number of way which particularly makes software engineering difficult.
- Intangible product
- No standard software process
- Large projects are often one-off
- Rapid change in technology
The product is intangible
The project manager of a road transportation project can see the product under development. The effect of missing schedule is visible to the manager. But software is intangible. Managers can neither see software development work nor touch it. This is the difference between hardware and software. Thus software project managers can’t see progress by themselves, rather they rely on others involved in the development to generate a progress report to check and take decisions.
No standard software process
Other engineering disciplines has a long history. The engineering processes are tried and tested. However software processes vary from one organization to another. It is still less predictable that which software process model will cause problems for a particular project and which will benefit. And beside that, there is no standard complete software process. Software requirements are variable and changes in the middle of the project. This affect the development process and can even break a chosen software process.
Large software projects are often one-off
Each software project has something new than the other. Almost always. large software projects are different from previous projects in the same category. This happens more widely when type of the software project is customized software products. Thus even project managers with long experience lists often can’t anticipate problems. One change in requirement makes several ready-to-use modules useless from a similar project.
Rapid change in technology
Software technology changes rapidly. Each technology receives updates almost every month. Each developer carries skills in multiple technology. And when these changes in technology take place, they have to update themselves. Sometimes bigger changes in technology make older projects obsolete or deprecated. Rapid changes in technology also turn a project manager’s experience obsolete. Thus lessons learned in the previous project may become obsolete in the next project.