Every software project fail doesn’t come as a surprise. There are several red flags that you need to catch early. Even with the bad software architecture, you can release MVP, but you’ll have trouble scaling up your business. Also, if you’re trying to rush things, you’ll end up with poor communication, tired team, and unrealistic expectations.
Before you start your new software development project, you should ask yourself the following question: “What are the chances that it will be finished successfully?”
According to research conducted by Wrike, one of the world leaders in project management software, only 64 percent of software projects meet their goals. 17 percent are so bad that they ruin the company.
Wrike also highlights the biggest obstacles encountered by those software failed projects.
- 38 percent failed because of changing priorities within an organization
- 35 percent failed due to changes in project objectives
- 30 percent failed because of unidentified project goals or poor communication
You may already be acquainted with the type of software project that fails to meet certain financial, quality and scope objectives. What’s worse is that you may be a participant in one of those software projects.
Here at BIT Studios, we have more than 20 years of software development and project management experience. Trust us, we’ve been through the good and the bad, and we can tell you hands-on how to recognize a software project failure. In this article, we’ll run through the causes and effects of common software development issues, and more importantly, we’ll show you how to avoid or eliminate them. In this article, we’ll guide you through the top seven reasons why software projects fail and we’ll show you the best ways to avoid them.
Reason #1: Trying to Do too Much too Fast, and not Focusing on an MVP
This is one of the most common reasons for software project failure. The term MVP (which stands for “minimum viable product”) first appeared in the book The Lean Startup. It’s a simple idea that says you should build only the minimum set of features necessary for the product to function, and then test your main assumptions about users’ interactions with it. This kind of experimentation (which is called an iterative development process) helps companies reduce uncertainty about real market needs, and change the product (if necessary) to provide prospective users with real value.
Today, this idea is ubiquitous, and many companies apply it to all types of product development. But it’s often misinterpreted as an idea that suggests delivering something of relatively low quality to the market for the sake of speed. That’s not the case. An MVP should be a good, functional product that helps real users solve a real problem. If a sloppy or incomplete product is rushed to market, then nobody will consider it “viable.”
Solution: Focus on Delivering a Minimum Viable Product First
This common obstacle can be avoided by following core MVP principles:
- Identify the minimum requirements necessary to satisfy your user base
- meet those requirements
- and then release that product.
Nothing less, but nothing more! Use specific techniques to achieve that goal, such as story mapping, prototyping and/or discovery. After obtaining feedback, you may choose to move forward and enhance your product, or you may realize that you need to take corrective actions to ensure that your product will be profitable.
Reason #2: Poor Requirements and Bad Architecture from the Start
The problem of poor requirements should be familiar to anyone who has ever taken part in a software development project. Setting up poor requirements doesn’t necessarily lead to software project failure in every instance, but it certainly adds a great deal of risk.
The top two reasons why a project may have poor requirements are ambiguity and insufficient stakeholder involvement.
- Ambiguity, means that different project participants will interpret the requirements in different ways. This can be fatal for the project if no one is capable of explaining the goal objectives to the team. In situations like this, the team is often forced to fill in the blanks—and often fills them in incorrectly.
- With insufficient stakeholder involvement, you’ll have problems with defining the requirements your product should be capable of. There is no viable substitute for stakeholder involvement. Stakeholders and potential users must take part in the project requirement definition process, together with the development team. Potential software owners rarely understand that surrogate users will never replace real ones, and that relying on surrogate users means all gaps will be filled by assumptions—which may lead to huge discrepancies between the developed product and the expected result.
Software architecture and technical design is another vital point that should be outlined within the functional requirements. This defines the model of the software, how it will function, and what capabilities it will have. For example, if your application will have thousands of items and type-ahead search is required, then proper data structure design is critical; otherwise, the search may be slow and result in poor user experience. If technology, software development patterns, and/or architecture were chosen incorrectly, then the project is doomed right from the start. Sometimes, it’s easier to throw away the code base and start over.
Solution: Have Clear Objectives and Requirements Definition Process
Establishing an effective requirements definition process is key for success. Requirements clarification is a collaborative approach that involves multiple stakeholders and allows the development team to better understand its users or market. It also decreases the expectation gap between what was needed and what was developed.
And by process, we mean that it should be ongoing—especially within an agile development approach. This cause of software project failure can only be avoided through regular (and often mutual) work on requirement clarification.
Reason #3: Excessive Strategic and Scope Changes
The very reason for utilizing agile software development is to allow potential software owners to change their minds. However, that does not mean that you should agree to controversial or problematic decisions is smart.
Some people will try to say that agile development is infinitely forgiving and allows a lot of changes, but that’s not quite true. With an agile approach, you’re able to quickly see the results. Then you can make decisions based on your observations. But making significant strategic changes in the middle of a project may lead to substantial amounts of rework, or cause you to take on technical debt.
Some degree of change to backlog items is OK and even expected. Though, you can make changes only until the product goes into production. But if half or more of your backlog was changed at some point during the software development life cycle, something is very wrong.
There are several potential causes of trouble:
- Uncertainty regarding project goals
If the project has no clear goal, it may be a waste of time and money to even start it. Project goals should be clear, tangible, and achievable. Otherwise, the project will be ripe for constant change and scope revision.
- Backlog item management is not streamlined
It’s not enough to simply tell the team that certain functionality is necessary. Each item and feature should undergo refinement and planning before development even starts. Omitting this will result in outdated or non-aligned functionality.
- Stakeholders are not involved
Lack of stakeholder engagement rears its ugly head once again. As we noted earlier, ongoing and effective communication is a key aspect of avoiding software project failure.
Managing the challenges presented by change requests requires a disciplined commitment to a streamlined approach and starts with the definition and (if necessary) clarification of the project’s vision and goals.
Solution: Clearly Define the Project’s Goals, and Monitor Them During The Development Life Cycle
A software project’s goals should be tangible, absolute, and measurable—and should be defined by SMART. A project’s goals should also be proofed and aligned before development starts, and there should be continuous monitoring to determine whether a defined goal has been reached or is no longer reachable.
Reason #4: Poor Communication Between the Parties
Communication between software project participants is the key to success. Stakeholders, project managers, and the development team should all be in sync. Standard practices in agile software development are daily stand-up meetings, retrospectives after every iteration, code reviews, collaboration with users and stakeholders, and review of deliverables. All of the above foster frequent and open communication. Face-to-face time is generally believed to be more valuable than reams and reams of documentation.
There are two key “buckets” of effective communication on a development project. The first contains stakeholders’ awareness about a project’s progress at any given time, and the issues and output of the current phase. The second contains the team’s awareness about the reviews of development deliverables by key users. Both of them are equally vital for project success and should occur continuously.
When there’s a lot of information being communicated, it’s easy to miss something important—especially when multiple parties, departments or teams are involved. Verbal communication shouldn’t be used as a way to share functional requirements or reviews with development team. Written requirements and face-to-face communication should complement each other and be delivered to the team through specific predefined channels (such as project management systems, requirements storage, email, and/or social media communication).
Having no communication between the prospective software owner and the development team, and having a substantial amount of uncontrolled communication, are two edges of the same sword. Either can easily kill a project. That’s why there should be a point-person whose task is overseeing and controlling the communications process, ensuring the productive involvement of all key players.
Solution: Involve End Users and Stakeholders, and Make Sure They’re Interested in the Project!
The frequency and channel(s) of communication should be established right at the start of the project. They should never be interrupted or forgotten. Additionally, different types of communication style should be utilized and should match the needs of each part of the process. Many people mistakenly believe that discussions and team meetings are a waste of time—and sometimes they are, if they’re not held with a specific goal in mind!
Reason #5: No Real User Input or Feedback Leads to Software Project Failure
We know how exciting it is when a new feature is out and ready to use. But without active user involvement, it’s nothing more than a technical exercise. Many software projects failed because they were built based on assumptions before they were shown to potential users.
A potential user is someone who can inform you about the business needs for the solution. It can be an actual end-user of the system, or a so-called “proxy-user”. A proxy user is someone who is not actually a user but is close enough in terms of profile and skills.
What kind of feedback or input should you seek?
- Does the feature solve a potential users’ issue?
- Is it obvious how to use it?
- Is it convenient?
- What ideas results from using/discussing this feature?
If the answer is no, it’s likely that you’re moving in the wrong direction.
What’s even worse is when you ask the wrong people for the feedback. If you have no real users or if you don’t know who your users exactly are, you should pause the project until you identify them.
Solution: Get to Know your Audience!
Defining audience is a central aspect of any marketing strategy, and is usually stated in the document called the “product vision.” You should define your audience during the idea development phase.
There’s also a special trick for doing this: the customer persona. It’s a simple description of your ideal user. After creating your customer persona, you should interview the real people who fit the bill. What if they don’t need your solution? What if it doesn’t solve their problem? Knowing that from the start will help you adjust your idea and make it an effective solution.
Reason #6: Unclear or Unequal Expectations Cause Software Project Failure
Sometimes the team was introduced to a software development project from the wrong perspective or with unrealistic expectations. For example, there may be unrealistic timelines, misunderstandings about responsibilities and deliverables, and a lack of agreement about how to deal with potential changes. Setting and maintaining clear and equal expectations is a critical success factor.
Set realistic expectations for your stakeholders and help them understand that there are significant variations between optimistic and pessimistic estimates. Additionally, it’s crucial to have timelines, costs, responsibilities and deliverables approved by both parties in advance.
Setting real requirements is crucial when utilizing an agile approach. Requirements defined at the top level may be redefined in real time without a change in control process, may easily instigate “scope creep.”
Everything needs to be written down. Verbal agreements are not traceable and may lead to extensive rework and the dissatisfaction of all parties.
Solution: Improve Communication and Control Expectations
There are many causes of schedule and cost changes that might crop up during software development. These include an absence of resources, incorrect estimation, changes in executive management, and changes in scope. Only incremental, iterative planning that allows all interested parties to know what to expect regarding functionality, scheduling and cost, can mitigate unclear expectations.
Reason #7: Imbalance Between Project Needs and Available Budget
This falls under the umbrella of “unclear expectations,” but it’s so common that we decided to give it its own section. The two main types of imbalance are:
- Incorrect estimation
Without the utilization of appropriate approaches, such as discovery, software development teams can only provide a set of features proportional to the time and budget at a given moment. In other words, it’s as good as a weather forecast for the next month.
- Scope creep
During the initial idea or design phase, it’s nearly impossible to think through and make all necessary software design decisions up front. When you begin to use the software that you’re developing, you may find that your desired requirements and functionality are missing—which may lead to changes in scope and budget.
When budget and project needs are out of balance, all the pressure goes on the development team. The team is then forced to deliver the product no matter what. This leads to technical debt or poor architecture decisions, mistakes, and skipping necessary phases of development (such as integration or regression testing). That may harm both parties. The potential software owner may receive a sloppy product instead of a working software solution, and the team may garner a bad reputation.
Solution: Do Discovery Before the Project Starts, and Control your Changes!
To get a correct estimation, the best thing that can be done is discovery. The discovery phase happens when product features are clearly defined, prototyped and discussed. During this phase, the entire blueprint for your prospective software product is created. Having this initial blueprint helps control changes throughout the software development life cycle, because you have a clear project outline and thus a clear basis for knowing when your scope is creeping.
Reason #8: A Bad Developer in the Mix
Software development starts with people. If you want to build something great, your team needs to be great. It’s not about having “stars,” but about finding people who will fit with and enrich the rest of the team. With a bad developer in the mix your software project will fail.
There are many signs that can help you recognize a bad developer:
- The developer has no understanding of what the feature in developments is all about. This is sometimes the product owner’s fault, but bad developers make no effort to try and resolve the lack of understanding.
- All task estimates are wrong, with significant miscalculation—16 hours instead of 8 hours, for example. This may happen periodically, but if it occurs regularly that’s a sign that the person is not qualified.
- Application logic is never discussed with the product owner or the stakeholders. Again, this can be the product owner’s fault (if such an approach is not fostered within the team), but bad developers always ignore the logic and hand it over to the customer without even trying to understand its intended purpose.
- No changes are accepted. This is not necessarily a bad thing, but when a person is so stubborn that they ignore the occasional necessity to evolve, that becomes an issue.
- Code duplication, complex methods, and/or terrible code ignorance.
In recent years, development has become quite popular and many people have entered the field without proper education, knowledge or experience. This is a real problem for the industry. With a bad developer in the mix, you may easily get an application that will be impossible to support and extend.
Solution: Hire the Best Professionals (such as Bit Studios)
It’s extremely important to entrust your projects to professionals with experience, such as BIT Studios. Here, we utilize industry best practices and only hire well-trained, professional developers.
Of course, anyone can say that they’re the best. Here’s why we feel we really are:
- We use a UX-first, rapid-prototyping process. This process eliminates 90 percent of the risk associated with projects through a visual, stakeholder-feedback-driven process.
- Our resource model is designed to ensure that we always have the best resources for solving your most difficult problems and for carrying your project through to success.
- We have enormous experience in a variety of domains and across many technologies. After 20 years, we’ve encountered all the problems listed above—and we know how to fix them before they kill a project.
- We have a ton of experience stepping in and saving third-party projects that are failing.
By knowing the potential pitfalls, and by being able to identify them early on, you can drastically improve the success rate of your major software development projects. However, the statistics tell us that’s easier said than done. Accurate planning that includes a discovery phase, well-defined goals, a known audience, clear assignments and effective communication will help you avoid the issues mentioned in the article. If you ever need help with planning your software development project, contact us and we’ll help you get back on your feet.