If we look at the track record of most software development projects, we can find some rather expensive failures. According to a study by Geneca, 75% of IT professionals believe that their projects are doomed even before they start. Another report by Pulse suggests that compared to 2014, there were fewer software projects that were completed on time, within budget and managed to meet the business intent in 2015. This report showed that “US$122 million was wasted due to poor project performance for every US$1 billion invested”. Statistics from the Standish group further revealed that only 1 out of 3 software projects were completed on time and within budget in the past year. While the concept of ‘failing forward’ (the idea that it is alright to fail as long as we learn from our failures) is becoming quite popular in the software industry, it is becoming more pertinent to ask the question “Are we learning from our failures?”
Software development project failure can be attributed to a number of reasons. In this blog, we take a look at some of these reasons that can not only create huge losses but also have a detrimental impact on the growth curve of an organization.
Incorrect time and budget frames
Software development teams today are faced with the burden of getting the product to the market faster. Unfortunately, most project management teams do so by shrinking deadlines and project management costs. In order to reduce costs, teams often cut corners around their manpower, technology or testing budgets. They do not invest in quality assurance processes in order to roll out the product faster. The project delivery dates are also often set by the business client and not the programmers working on the project. This leads to unnecessary pressure to code fast. There is also the danger of poor design as programmers face pressures of bandwidth to create a good product design that can adapt to changes and iterations fast.
To resolve this problem, the project stakeholders and the client have to work in tandem to decide on realistic project timelines and decide on a budget that is based on the actual project requirements.
Poorly defined project parameters and objectives
Any software project has to be properly aligned to meet a set of business objectives. In order to be successful, software development projects should have clearly chalked out objectives that have to be in line with the business objectives. Gathering information, taking into account user requirements, identifying apt technologies for the project and implementing a well thought-out project plan become imperative for the success of any project. However, as a project progresses, the project milestones can also change. Development teams have to be capable of adapting to these changes and create flexible systems and architectures as the inability to adapt to and incorporate the changes often leads to the development of a redundant product.
One of the biggest contributors to software development project success or failure is communication or the lack of it. For any project to be successful the communication between the business client, the project manager, the development team and the user is critical. A communication breakdown only leads to confusion and complications and causes project delays, budget overruns and ultimately project failure.
As a thumb rule, it is best never to assume anything. Having clear and open channels of communication between the project promoters and developers and having end user involvement becomes essential to create a participative environment that encourages previews and promotes interactions between the invested stakeholders.
Poor documentation and tracking
A sound project management plan requires a solid project tracking and documentation plan. Not doing so only leads to chaos and confusion, which adversely affects the health of a project. Project managers will only be able to identify project loopholes and resource constraints if the project progress is tracked and documented correctly. With proper documentation and tracking, a project manager can identify the exact areas that need improvement, processes that can be streamlined better and identify areas which need better resource utilization.
Strong technical expertise
Having strong technical expertise is essential for a software development project to be successful. A proficient and skilled technical lead is to a project what an architect is to a building. The technical leads of the project not only has to have a deep understanding of the technology aspect of the product but also has to have an understanding of the business objectives and practices. For example, a technical lead designing an eCommerce website should be able to understand the business, how users want to experience the portal, the trends in that segment etc. and to build the system around it. The technical lead also has to be wise enough to make the ‘right’ technology choices. Just because a particular technology is trending does not mean it is well suited for a particular project.
Also, more is not always better. It is better to have a few skilled developers working on a project than 100 average developers who sit and churn out mountains of poor code. In this respect its best to follow what Larry Constantine said – “Hiring people to write code to sell is not the same as hiring people to design and build durable, usable, dependable software.”
Lack of adequate testing
Given the burden of shrinking deadlines, spiralling costs and pressure to ‘go-to-market’ faster, a number of software development projects do not establish strong testing and QA practices. What they don’t seem to realize is that there is a high cost of bugs that emerge from poorly tested software. IBM reported that “the cost to fix an error found after product release was four to five times as much as one uncovered during design, and up to 100 times more than one identified in the maintenance phase.” Those projects that fail to give their testing and QA processes the kind of importance they deserve contribute to a project failure.
Instead of leaving testing to the end of the development process, integrating it with the development cycle can increase the chances of project success considerably.
Clearly, software development projects fail for a number of reasons. To change this, it is essential for all the invested stakeholders to change their approach to the development process. Analysing data on project metrics and making meaningful comparisons between project schedules, allocated resources, the scope of work completed, the project quality and the productivity levels during the project can help in identifying development issues, assess the actual time, resource and budget requirements for the project and understanding the actual reason behind the failure of a project. Or you could take the easier route and just turn the development effort over to someone who has been there and done that – someone like us!