Project failure in the software industry
Introduction:
Project failure is a common thing heard in the Software Industry in recent years. It has been observed that almost 50% of the projects in the Industry fail due to many various reasons. Research shows that Project failure is not due to one particular reason but many reasons contributing to it. The Standish Group [1995], found in their survey that of all the projects only 1/6 of the projects were completed on time and within the specified budget. They also found that 1/3 of the projects were cancelled and more than ½ of them were considered challenged. In these cancelled and challenged projects about 189% were over budget, 222% were behind schedule and only 61% of the requirements were met. Factors contributing to project success are to complete it on time, should be under budget and should meet the requirements completely, but generally these don’t meet the expectations which results in project failures. The most common reasons for project failures are lack of user involvement, unrealistic time scale, poorly defined requirements, poor testing, miscommunication and difference of opinion between team members, etc. Since now most of the companies use software for various operations, it is a must for every company to avoid project failures. A huge amount of money is spent on making software, therefore it is important to analyze and understand the reasons behind the various reasons behind project failures. The graph below shows various reasons for failure and the percentage to which each factor contributes.
The above graph and the percentage of failures show that it is normal for a software project to fail due to various reasons. But the point is what we can do to avoid it. For that we need to understand the various reasons for failure and the steps to avoid them.
Reasons for Project Failures:
Vague Requirements:
Requirement gathering is the first step of any project development life cycle. Any project starts with the understanding and analyzing the requirements of the customer. Often the requirements are not clearly specified and the manager assumes the requirements as per his/her understanding and asks the developers to start developing the product which results in not meeting the exact requirements of the stakeholder. Many times the customer, himself/herself is not aware of what they want as keep changing the requirements on regular time intervals which results in delay of product delivery, increased cost and inefficient product. Many times due to time constraint the developers start the project assuming requirements and start developing it, thinking that the requirements will be fulfilled once we start developing which may result in incomplete project and increase in cost or even delay in completion of project. Hence it is very important to understand the requirements of the customer and make a proper software requirement document and then start the project development.
Consequences:
The result of vague requirements is severe. This will cause an increase in cost, inefficient product and a lot of rework. The developers will have to spend a lot of time and put in extra hours of work to make the necessary changes as the product developed is not as expected.
Suggestion:
To avoid this situation of vague requirements which may lead to project failure, I suggest that the project manager should meet the customer to get the exact requirements of the project. The Manager should make sure that all the requirements are properly documented so that the developers know the exact requirements which will help them to know what the goals to achieve are. The Manager should also regularly meet the developers and make sure that all the requirements are clear as they come and everyone has understood the requirements document. The requirement analyses and developing a project development life cycle should be given enough time before the actual development starts.
Unrealistic Time Scale:
Poor schedule estimation is another reasons for project failure. Many project managers understand the need to deliver the projects fast due to which they set unrealistic schedule to make sure the project is produced quickly without knowing the amount of work that needs to be done. Due to which they make superficial design and start coding to make the product as quickly as possible thinking that sooner the coding starts, faster the product is finished. Many times the managers are also pressurized by the stakeholders regarding the project deadlines. The Project Managers many times don’t even work together with the stakeholders in defining a realistic schedule and decide on a proper deadline for the completion of the project. But this is the most common mistake made by the project managers. As a result of this unrealistic time scale the final product is either faulty or does not meet the user requirements or delay in delivery of project resulting in increase of the product development cost.
Consequences:
The result of unrealistic time scale is increase in cost and time to deliver. Since the schedule is unrealistic the manager will make a working model and ask the programmers to start coding quickly, which will result in low quality of work by the coders as they are under great pressure and the final product delivered will not meet the expectations of the stakeholder. This will cause the project to fail and cause waste of resources and money put in the project.
Suggestion:
Since unrealistic time scale being a common mistake made by the project manager, it can lead to heavy losses. This mistake should be taken care of by making a proper project plan and setting realistic deadlines. This plan and deadlines should be decided based on the amount of work to be done and the size of the team working on the project so as to avoid unnecessary pressure on the team. This will give enough time to work on each and every module properly and fulfill all the requirements properly rather than just complete the project within the given time. More importantly the stakeholders should be provided all the required data and estimated time of completion. They should also be updated at regular intervals to make sure that the work in on the estimated time.
Poor Communication:
Poor Communication is the third reason for project failure. Due to poor communication between the managers and developers, the developers are not aware of the work to be done by them, which may result in delay. As this important information is not shared between team members, the progress of the project is also not known. Trying to avoid communication between team members to avoid conflicting views between them may result in project failure. Sometimes the programmers are not allowed to give their opinion about the improvement of the project which is also a reason for project failure. This kind of poor communication between the manager and the team members hinders the progress of the project. This kind of poor communication should be avoided and the manager should take the necessary steps to overcome this problem for the success of the project.
Consequences:
The impact of this reason for project failure is very severe. It will affect the cost of development, affect the schedule and functionality. If the communication is poor it may lead to inefficient product development.
Suggestion:
Communication is very important between the team members, the management and the stakeholders for the project success. Since poor communication can lead to severe losses to a project I would suggest that manager should regularly communicate with the team regarding the project progress. This will help the manager to keep a track on the ongoing progress and also make sure that the team has understood all the requirements properly and avoid conflicting views between the members. And all the members will know their role in the project thus avoiding unnecessary work. Communication with the stakeholder will also help the stakeholder to know about the progress of the project and to know if the project is going as per the requirements.
Scope Creep:
Scope Creep gives the overall view of the final system to be delivered. Scope creep happens due to increase in the scope of the project during development. Often it is seen that the manager or the customer wants to add more functionality to the system while it is being developed. Like if a student record system is developed for the subjects taken and scores of the students by semester. But then the customer wants to add personal details and fees structure for each course. This will increase the scope of the system as the new functionality is required to be added along with the old requirements. This will affect the schedule of the project. Many times it happens that the customer might change the requirement at regular intervals or might require change as they are not comfortable with the existing system resulting in scope creep.
Consequence:
The consequence of this is very severe. As the requirements of the system change it will increase the cost of development and even affect the project schedule.
Suggestion:
Scope creep should be avoided as it may lead to major project failure or unnecessary delay in the project deliverable. This can be avoided by getting all the requirements from the user at the start of the project and even the priority in which the requirements need to be fulfilled. The cost and the time of delivery should be documented as per the present requirements. So any change will affect the cost and time should be told to the customer and everything should be documented.
Inappropriate Staffing:
Inappropriate staffing is another reason for project failure. The manager needs to find the right people for the job. Many times there are programmers who lack the required experience in the technology and are not qualified enough for that job. It also happens that the managers hired or allocated to a project don’t have enough experience in handling such a huge task or don’t have enough technical knowledge. These programmers and managers are hired simply to keep the cost of development low. So it is very important to get the right set of people to work on the project, who are experienced enough and can work well in a team for project to be successful. Many times it may happen that a member of the team or a high level manager might leave the job, which may affect the project schedule. Many times it happens that resources are not allocated properly while shows inefficiency in work, thus delaying the project schedule. This problem has been a major problem with all the companies.
Consequences:
This will have an impact on the project schedule as every time new resources are allocated, it will consume time to understand and complete task.
Suggestion:
To overcome the problem of inappropriate staffing the management must hire the right set of people for the required task who are efficient enough for the job. They must have a well balanced team and people who work well as a team and appreciate each other to achieve the bigger goal of successful project completion.
Lack of User Involvement:
User involvement is very important for any project to succeed. If the user is not involved in the project development by continuously communicating with the project manager, it may result in a project failure. Many times it happens that the user doesn’t know how to use the system as the user is not much involved in the working of the system. The developers get the requirements from the user but the users are not actively participating in the design phase, requirement analysis phase, testing phase or the users are changing the requirements which may lead to delay in the project schedule and might not meet all the user requirements. Many times it is seen that the user will specify the requirements and then wait for the final product. Due to this the users sometimes don’t get the expected functionality or they might not be familiar with the system which may result in a lot of time wasted in learning the system.
Consequence:
The consequence of this is medium effect. There can be a lot of change in the functionality as the user is not aware of the system working till the end. It may also increase the cost of the project and schedule as the user will take a lot of time to get familiar with the system.
Suggestion:
To overcome this problem of lack of user involvement, the user should actively participate in all the phases of project development. The user should be eager to learn the system before it is put live and hence should be trained to use the system. This will help the user to get familiar with the system and will also be able to test the system for all the features that are expected of the system.
Poor Planning:
Planning is the most important part of any project. If the project is well planned it will be completed on time and within schedule, resulting in success with all the requirements full filled. Project plan defines the objectives of the project and the goals to be achieved. The project plan contains the amount of resources required, the cost of development and the deliverable schedule. It helps in knowing what is to be done and what resources are required in which area of the project. Sometimes it is seen that the manager doesn’t have much time to make a project plan due to time constrain from the senior management due to which implementation starts before the project plan is completed. This will hinder the project schedule as the flow of project development will not be clear. Many times it happens that project activities are dependent upon the previous activities completion but in case of poor planning this will get affected. This will result in the increase in the project development cost and increase the deliverable schedule.
Consequences:
The effect of poor planning is very severe. It will have an impact on the project development cost, incomplete requirements and will also affect the schedule.
Suggestion:
To avoid the problem of poor planning, the management should make sure that the project is well planned with all the resources, phases of development, cost estimation and the schedule of delivery before the implementation starts. Then at regular intervals it should be check if everything is going as planned, so that any kind of problem can be taken care of right away before it’s too late.
Poor Testing:
Poor testing plays an important role in project being a failure. Developers do test the project after the coding is done but it is the duty of the user to do an acceptance test to know if the system meets the requirements. But sometimes this testing fails as the requirements are poor enough to be tested. The user is unaware of the importance of this testing. It also happens that the user is not trained enough to test the system resulting in a poor test. Many times it is seen that the development phase takes so long that there is no time for testing, due to which it is avoided. So the user should be encouraged to do the acceptance testing so that the user is comfortable with the developed system.
Consequences:
The result of poor testing is that not very heavy. If the testing fails, then the development team will have to do a lot of rework on the failed areas. This will increase the cost and delay in project deliverable time.
Suggestion:
To make sure that testing is done properly the project should be well designed and planned. If the project is to be delivered in modules, then every module should be tested which is very useful as all the functionality is checked at the end of each module. This help in avoiding the entire system test at the end of the project, since most of the modules are tested as they were completed. Then the user should be trained to use the system so that they can do a proper test of the system. This can help in overcoming the problem of poor testing.
View Point:
The analyses shown above are based on my research about various reasons for project failure and their consequences. From my research on the above I analyzed and suggested that all of the above reasons are important and should be taken in to consideration during the life of project development as they have equal effect on success of a project or its failure. I think that most projects fail due to vague requirements, poor planning and inappropriate staffing.
Making sure that all the requirements are properly gathered is the first step in any project development process. If the requirements are not properly gathered then it may lead to problems down the line during development. I have observed that many times due to time constraint or not clear requirements the development phase is started considering that once a working model is ready then all the left out requirements can be handled but this is the biggest mistake made as it will require a lot of rework and increase the cost of development. Many times vague requirements force the developers to make a functionality that is actually not required thus wasting of time and resources results in a lot of rework.
Poor planning is also a factor for project failures. Due to vague requirements the planning done is also poor resulting in project failure. Planning phase comes after requirements gathering phase. In this phase all the details about the project development, the resources required, the cost of development, the time schedule of deliverable project parts or whole are decided. This phase takes a good amount of time as the whole project development is planned in this phase, so if the planning is poor, it may lead the project down the hill instead of up. So during the planning phase all the aspects of development should be taken into consideration by the developers and managers.
Another problem which is faced by most of the companies is of inappropriate staffing. A project team should have the right combination of people. People, who are experienced, can work well in a team. Generally managers try to cut the cost of development by hiring people who are less experienced with the kind of project to be developed and even inexperience in using the technology being used. This will affect the project schedule. Many times it happens that a manager or team member leaves the project due to work pressure as they are kept to do parts in many projects. Due to this the project is delayed and a lot of time is lost in training the new member. So managers should chose the right people for the team and also the members should be dedicated to a particular project.
Many times I have seen that there are dependencies between teams during a project development. Like now a days there is outsourcing where in the design and testing is done by one team and the coding is sent to another team. So whenever there is a change in the functionality or the design the coding team seating elsewhere are given the changes resulting in a lot of rework which relatively affects the project schedule. Many times there is miscommunication between the teams working in different modules so changes in one module is not conveyed to the other resulting in errors during the testing phase. So there should be proper communication between teams and regular updates should be given to all the teams working on the project to avoid any error at later stage of the project. And other than these all the other factors should be taken into consideration by the management for a successful project.
Lessons Learnt:
From my research on project failures I learnt that project management is the most important aspect for any projects success. From research on this topic I learnt that over the years this problem has haunted the software industry but still the management has not learnt from the previous mistakes. All the reasons shown above are very critical and can lead to project failure if not handled with care. Manager must also focus on the team development for any project as it the overall team effort that makes the project successful and not an individual.
Conclusion:
The research gives an insight into various reasons of software project failure. These reasons have been experienced by every manager in the industry and so now companies have started focusing on proper management of the projects.
References:
- http://www.coleyconsulting.co.uk/failure.htm
- http://ezinearticles.com/?Causes-Of-Software-Project-Failure&id=453814
- http://www.ibm.com/developerworks/rational/library/feb06/marasco/
- http://www.docstoc.com/docs/24462435/Why-Projects-Fail-Graph
- http://www.projectsmart.co.uk/why-software-projects-fail.html
- http://www.projectperfect.com.au/info_it_projects_fail.php
- http://ezinearticles.com/?Causes-Of-Software-Project-Failure&id=453814
- http://74.125.155.132/search?q=cache:rpsupt-SPl0J:www.tier1performance.com/content/features/mets_files/MajorCausesofSoftwareProjectFailures.pdf+reasons+for+software+project+failure&cd=3&hl=en&ct=clnk&gl=us
- http://www.computerworld.com/s/article/71209/Why_Projects_Fail
- http://knapton.blogspot.com/2007/05/why-do-software-projects-fail.html
- http://www.adaptivepartners.com/projfailb.htm
- http://portal.acm.org.libaccess.sjlibrary.org/citation.cfm?id=1370099.1370100&coll=portal&dl=ACM&CFID=12421101&CFTOKEN=86551462