Embarking on a custom software development project can be a risky process. On average, 66% of software projects with budgets over $15 million experience cost overruns, 33% run past schedule, and a further 17% result in a benefits shortfall . Even compared to IT projects as a whole, software projects run the highest risk of overruns in terms of cost and scheduling .
While such statistics can be daunting, they don’t mean that custom software development should be avoided. Cost overrun and failure statistics on projects over $15 million shouldn’t be surprising as these are extremely complex endeavors. Most custom development projects that will add real value to an organization don’t cost anywhere near $15 million and typically fall in the $100K to $1 million range – increasing your chance for success. No matter what size your custom software development project, these statistics should be taken as extra motivation to plan for every potential speed bump for when it occurs.
In order to prevent software project cost overruns, timeline surprises, or even project failures, it is necessary to first understand their causes. Research conducted by the Aalto University Department of Computer Science and Engineering identified the top causes of software project failures as involving four major categories:
In order to combat deficiencies arising in interactions or methods from any of the above categories, the same research highlighted improved social interaction and team understanding of how the work is being conducted as critical for the success of the project .
According to this research, companies would then increase their chances of success while minimizing the potential impact of obstacles by creating more robust plans from the start for the software project. As for any IT projects in custom development, obstacles will always occur. However, the difference between success and failure is how you plan to handle such issues. While robust planning is not quite simple, the key is to include everything in your plan – even the unexpected. But how do you expect the unexpected?
The Nature of the Unknown
In order to eliminate budget and timeline surprises, you must be able to answer the following questions:
- Where can surprises come from?
- What kind of surprises can occur?
- Why do such surprises occur?
This may be easier said than done, but reducing your overall risk is worth the initial extra work. A Harvard Business Review analysis of IT project costs as a whole found that a full one in six large projects studied experienced cost overruns of 200% . To avoid such high cost overruns, the first step is improving communications within your team.
Whether through misunderstandings or miscommunications, surprises can easily pop up that could have been dealt with earlier had they been communicated properly . Such miscommunications can occur between everyone involved in the custom software project. Even if a potential issue is identified early on, it is no guarantee that the necessary communication will occur. Issues can and will surface during software development, and what matters more is how you decide to tackle them together as a team in order to establish transparency and trust.
It should also be recognized that miscommunications could come up despite the best of intentions. Someone can sit on information, hoping to fix problems themselves before they are known. Such actions can easily backfire and potentially leave you with a costly surprise. Still, even newly discovered risks, roadblocks, and misunderstandings could almost always be resolved through communication or re-prioritization.
A further complicating factor to consider is the changing nature of requirements, which can evolve throughout the development project. If a project stretches on for too long, this only increases the risk of requirement change. This means that whether through insufficient communication or lengthy projects, development may need to be adjusted multiple times. With a majority of major risk researchers such as McFarlan, Addison, and Carney ranking requirements-based issues as a top software project risk , keeping the requirements clear and the timeline strict throughout the process is essential for eliminating the impact of potential future surprises.
No Surprises, No Worries
By preparing yourself and setting the groundwork for effective communications, you can establish an understanding between yourself and the development team that will aid you when issues arise. When creating a confident communications environment, the chances further increase that potential issues will be brought up as early as possible, thus making it easier for you to mitigate risk and create effective solutions.
Before you start a custom software development project, you should make use of the resources available to you in order to ensure you start off on the right foot. Drawing on the power of your team and establishing a firm rapport with the development team allows you to not only convey a better idea of your requirements, but also establishes the necessary communications to deal with potential future issues and ensure success.
The Power of Your Team
One of the most valuable sources of information for custom software development projects is your actual team. While the project developers may have a good idea of your requirements, oftentimes it is team input that can unearth hidden needs that were not specified clearly or at all in the overall project plan.
Since custom software is meant to support your company with its unique workflows, planning sessions with the development team should capture not just an overall idea of how your team works, but also the nitty-gritty details.
In order to really identify what your requirements are and how your team works, team interviews can be an extremely helpful method. While interviews do provide only quantitative information, it is their flexible nature that can help the development team obtain a rich collection of information to enhance their understanding of your workflows.
One-on-one interviews can be a powerful tool for the development team to really have a better idea of what the end-users of the system, your team, actually expect the software to do for them. Interviews also allow you to better understand how the development team operates.
Beyond talking to your team, job shadowing is another helpful guide for developers when putting your workflows into code. In this process, a member or members of the custom development team observes first-hand how your team works. This can be done through either on-site visits or custom screen recording tools that can record user actions.
Job shadowing is a common agile development technique that is useful for all sorts of organizations when trying to build a comprehensive picture of their requirements. This type of technique is meant to capture the information that isn't always expressed in interviews. Even intermediate workflow steps that could be easily glossed over in conversation are made known to the development team.
Actions such as cross-referencing address books or other system information when performing seemingly unrelated tasks at first are revealed and can then be included in the final software solution. On the flip side, actions that can seem so obvious that they are easily overlooked in the software are also captured.
Sticking to the Schedule
Requirements can and will probably change with time. Straying far from the budgeted timeline can unfortunately put your software project in limbo, stuck between satisfying your needs and being complete. You can avoid this trap by setting out a completion definition from the start. Once you have identified your requirements, you can focus on a minimum set you need for usability of the solution in your business workflows.
If any new requirements are identified after development begins, follow a triage system. Is the new requirement absolutely necessary to operations? If the system would be useless without it, then it must be included. If however it can wait until a further update or patch, then the priority should be on finishing what the developers already have. A complete product, as soon as possible, leaves both you and the development team with more opportunities to manage costs and introduce new future solutions.
While custom software development projects are all unique, the above suggestions can help you ensure that you keep the process as smooth as possible. Roadblocks may be inevitable, but you don't have to be surprised by them when they occur. By thoroughly identifying your requirements early on and establishing transparent communications, you increase your chances of success without cost or timeline surprises.
In the end, the final question you have to ask yourself is just how much will you let unexpected events affect you?
- Bloch, M., Blumberg, S., Laartz, J. “Delivering large scale IT projects on time, on budget and on value.” 2012. Retrieved on November 16, 2016 from https://www.mckinsey.com/business-functions/digital-mckinsey/our-insights/delivering-large-scale-it-projects-on-time-on-budget-and-on-value
- Lehtinen, T.O.A. Mäntylä, M. V., Vanhanen, J., Itkonen, J., Lassenius, C. “Percieved causes of software project failures – An analysis of their relationship.” Information & Software Technology Volume 56, Issue 6, June 2014, Pages 623-643.
- Flyvbjerg, Bent, and Alexander Budzier. "Why Your IT Project May Be Riskier than You Think." Harvard Business Review, September 2011. Retrieved on November 8, 2016. doi:10.2139/ssrn.2229735.
- Arnuphaptrairong, Tharwon (2011): Top Ten Lists of Software Project Risks – Evidence from the Literature Survey. In: International Multi Conference of Engineers and Computer Scientists 2011 (IMECS) 2011. Hong Kong.