“Size was the single most important factor in the resolution of project outcome.” — CHAOS Report 2015, Standish Group.
The larger a software project is, the higher the chances it’ll fail. Let’s define what makes a software project large. Any project with more than 1M source lines of code (SLOC) is considered a large project. 100k to 1M SLOC would fall into the medium category, while any software project with 10k to 100k SLOC can be considered small. A software project with less than 10k SLOC is tiny.
The software development approach used to deliver a project matters. Agile slightly improves the chances of success on large projects, and hugely improves the chances of success on small projects, when compared to traditional approaches. The point here is that going into production quicker and getting feedback, slightly reduces the failure rates for large projects.
There is a 15% chance that a medium/small/tiny software project will fail while there’s a 36% chance that a large project will fail. So why do large software projects have a higher chance of failing? Here are some reasons:
Uncharted territory: There are fewer people with experience working on software projects with more than 1M SLOC than people that have experience on projects with less than 1M SLOC. Different sets of skills are required on a large software project when compared to small projects.
Too large to fit into a developers head: The larger the project, the harder it is for software developers to understand. There’ll also tend to be fewer people that have an overall intimate understanding of the codebase. This makes it very hard to improve the software and introduce new features. Read an article I wrote in 2018 to get a view into how working knowledge of a codebase helps developers.
Communication: Communication becomes a very big problem on large software projects and a slow feedback loop can drastically slow a project down. Slow feedback also fails to prevent the wrong things from getting done, which amount to a lot of time wasting.
When next you are faced with a large project, there is a higher chance of success by breaking it up into smaller projects and using an Agile methodology. The challenge is that: existing large projects will be very difficult to break up and almost impossible to earn the influence to get it done. In addition, projects tend to evolve into large ones over time.