Anywhere from 60-70% of software projects fail, but why does this happen?
When I first began at Frogslayer, I was fresh out of college and new to the software development industry.
I learned quickly that FrogSlayer is one of those companies that really and truly lives and breathes their core values.
One of our core values is dedication to every client’s long term success; but how does this keep a project from failing? In our industry, 60-70% of projects fail and that’s an unacceptable statistic (which is why we wrote this post on managing risk in custom software.)
How do we define project failure?
Project failure can mean multiple things. Some of the most common reasons are:
Solving the wrong problem
These are not problems any business wants to face when developing a project and why it’s absolutely imperative to avoid these three reasons custom software projects fail.
Reason #1: Solving the wrong problems
Any time a developer sets out to solve a problem, it is crucial that there is a concrete understanding of the problem at hand.
This sounds straight forward right? Not exactly.
One of the most important steps in providing solutions to any problem is understanding what exactly is causing the problem to begin with. Most problems can be a result of more than just one root cause, therefore making the problem a symptom of a deeper, more complex issue.
Therefore, it is important to not only look for a solution to the problem but to completely understand all the root causes.
My advice when trying to find the right problem to solve is to:
Recursively traverse the primary problem
Ask yourself ``What are all the contributing factors?``
By following these two simple tips, one can achieve a complete understanding of the problem at hand and discover if the problem is being solved the right way.
Reason #2: Too many re-writes
It is common for developers to be excited when beginning a new project. Software startups are fun and enticing; but as the project continues you may begin questioning the initial scaffolding of the project.
You may find yourself asking:
“Can this project scale?``
``Did we approach the project from the right angle?``
``Is there a bunch of unnecessary code?”
Slowly but surely you begin considering a rewrite.
There are many reasons we consider re-writes, but this is often a slippery slope.
It will almost always take just as long to rewrite a project as it did the first time if not longer.
As you spend time rewriting the project additional features may be requested.
The issues listed above can create pressure on a project because as you are spending time on rewrites, the client may become impatient or lose trust in your ability to produce a quality project in a reasonable amount of time.
Sometimes a re-write is your best option.
Changes in scope
We had a client who came to us with a very simple issue they wanted to be solved.
About 2 months into the project the client re-directed the project and the problem they wanted solved.
In this case the issue became a much more complex problem to solve so a complete re-write was our best option.
Reason #3: Creating a solution that's worse than the original problem
Sometimes as a software developer it may seem appealing to take short cuts towards a solution to create a “quick fix.”
For example: Why would you want to go through the trouble of creating an in depth automated test script for filling out an application form for a web app whenever you can just take a couple minutes to fill it out yourself?
So obviously, you decide to fill it out yourself because it’s less of a hassle.
As your project continues and evolves, you continuously find the need to fill out the applications forms, each taking a couple of minutes at a time.
After a few months of development and filling out 100+ of these application forms, you realize that if you would have just created an automated test script in the beginning you would have saved a ton of time in the long run.
Situations like these arise all the time in software development and can consume a lot of a developer’s time.
All three of the reasons projects fail listed above all have one thing in common: wasting time. Time is very important when trying to provide a client with a high-quality product while staying within the original project schedule.
These are the most common reasons custom software projects fail. What problems have you faced?