A large percentage of new software projects (or startups) fail. If I've to guess a number based on my 25 years of experience in software industry building products, the number is easily between 70% to 80%. Yes, out of 5 new projects, 4 projects fail. They never see a production launch. Do you ever wonder why these projects fail? And what can we do to make them successful?
Here is a list of Top 10 reasons why software projects fail:
- Not having clear understanding of business requirements
- Not involving end users in the early stage of development
- Selecting a wrong team and outdated technology
- Not delivering on time
- Underestimating cost of development
- Moving targets
- Poor planning and poor project management
- Missing accountability
- Bad user experience
- Team not being vested in the project
I’ve been involved in new software projects for almost 25 years now. Out of 25 years, all of them involved building new software products. YES, my first project was actually building a new product for design and architectural industry so they could do better document and image management. That said, I have always worked on new projects or products.
This is actually the best part of what I still do. I convert ideas into real products. That includes working on my own startups, advising other startups, or being an architect on a new project or brainstorming a new product idea for a startup. Most of, if not all of, my projects are developed using cutting-edge technologies. I work on all phases of the project from idea to launch. I sit down with project sponsors, who pay for the project. I work with project managers and architects in technology decision making process and I also actively advise Dev and IT teams on development best practices, deployment, and maintenance. In this article, I share my years of experience and learning why most software projects fail.
Here are my top 10 reasons why most software projects fail.
1. Not having a clear understanding of business needs
One of the key requirements of delivering a successful project is to have clear understanding of business needs and project deliverables. Many times, software project managers and architects get business requirements that are not completed. Businesses asks IT teams to deliver products at a faster pace and do not give enough time to clearly understand requirements, meet end customers and users.
Having offshore and offsite teams also do not help. For an offshore developer, it’s not easy to understand client needs and requirements.
Some architects and decision makers do not do enough research and do not spend enough time with their end customers.
Solution
You need to meet your end customers, visit on site to understand and understand their behavior and environment such as how and where they are going to use the app. What devices will they be using? What will be their internet speed? What is their age group? Do they use mouse or touch devices?
You also need to closely sit down with your IT team and make sure they not only understand software requirements but also understand business goals and needs. If you have an offshore team, make sure that the cultural barrier is not a problem. It is important that the project manager or scrum master who is managing the offshore teams understand both sides.
2. Not involving end customers early in the development phase
As a part of the requirements, it's very important to understand the end customers and their needs. Software developers can’t deliver a good user experience if they don’t understand who the actual user is. For example, you can’t deliver a good user experience building a static fixed size website when your end users use iPhone.
Solution
It is very important to understand your end customer, what their current level of software sophistication is, and what kind of software they are used to. The best way to build great software is getting your end customer involved in your development and testing phases.
If you use Agile methodology, let them test drive every week and provide you the feedback.
3. Picking a wrong team and technology
Selecting the wrong team and the wrong technology can lead to project failure. Oftentimes, businesses underestimate the complexity of software development. Selecting the wrong technology may also backfire. If you’re building a software that can last for next 10 years, you want to make sure that the technology you select to build your software is not only good today but will last for the next 10 years.
For example, if you are building a new website using .NET, you probably don’t want to built it in ASP.NET. Why? Microsoft has stopped working in the next version of ASP.NET and now the next version is ASP.NET Core or Blazor.
Now, let’s say, you pick Blazor. Blazor also has two different flavors, Blazor Server and Blazor WebAssembly. If your website is going to be a scalable and targeting millions of users, Blazor Server may not work for you. If you want to support offline and PWA, Blazor WebAssembly is a better option for you.
If any of these decisions are made wrong, the project is destined to fail.
Solution
It's important to have some experienced people on the team when a new project is started. It is also important to spend some time on analyzing the tech stack and skillsets of the team. If a team doesn’t have enough expertise, it is advised to bring in some experience and expert consultant for a short period of time who has delivered a similar project or at least have some success in his belt.
4. Not delivering on time
Most projects fail because they are not delivered on time. And the reasons of not delivering on time are mostly not having a clear understanding of business requirements, not having the right people on the team and/or selecting a wrong technology stack.
If you’re working for a large corporation, multiple teams not collaborating and communicating effectively may also lead to a project failure. I’ve seen this again and again when working with large companies, the IT, data owners, and dev teams not being on the same page often end up delaying projects.
Solution
By using Agile and other modern development methodologies, not only can you predict and meet your weekly and monthly deliverables but can also hand over to your test teams and get their feedback.
If there are potential delays for whatever reason, you want to let the business and stakeholders know about it and the reason behind it.
5. Underestimating cost of development
Cost is one of the major factors many projects never see a live date, specifically in the startup world. One of the most common reasons, among many others for startup failure is that they run of out of money. Businesses often underestimate the cost of software development.
Solution
Proper planning of resources and time estimates can help project the true cost of software development. If there are any surprises, let them be known to the financers of the project ahead of the time. No one wants surprises.
6. Moving targets
You can’t hit moving target with precision. This is exactly what happens. Many project owners and decision makers keep changing their requirements and project is never in its completed states and cannot be delivered.
Solution
A software product is never finished. Come up with a minimum viable product (MVP) that is good enough for the end customers to test drive and provide you with feedback. While you’re gathering the feedback, your Dev team continues to build other features. In the next release, implement the approved feedback and give your end users another release and continue the cycle.
7. Poor planning and project management
Constantly changing requirements, bad resources planning, not allocating enough resources for testing, integration, and bug fixes often lead to missing deliveries.
Solution
Good project management and proper planning can help overcome all of the above. It is the most important part of a successful project and team to have a good project manager who not only have the experience and skills but also have leadership skills to manage and motivate team to achieve their tasks.
8. Missing accountability and responsibility
It takes a village to deliver a successful software project. Software requires different teams with different experiences to collaborate on a single goal. In addition to the previous point, poor project planning and management, its vital that all team members are accountable and responsible for their deliverables.
I often found when working in large corporations that multiple teams are involved, and they often are not on same page or not committed to the project. To make a project successful, all team members must be committed to the deliverables and must be responsible for their tasks.
Solution
It is responsible of a project manager to get all teams members on the same page and if they are not responsible for their tasks, hold them accountable. Using good project management tools and best practices helps keeps all members involved honest.
9. Bad User Experience
User experience is very important to deliver a successful project. There are so many amazing products out there, but some don’t get adoption just because of the bad user experience.
Solution
Designers of the products should work with the dev team and end users to get their feedback while building the user experience. Make sure you have a diverse group of users.
10. Team not believing in project
As I said earlier, the success of the project is a teamwork. It is the responsibility of the founders and project managers to make their team believe in the project. To deliver a quality product on time and in budget depends on the team’s productivity. Team is more productive when their believe in the product, the vision, and the leadership.
Solution
During the design and usability experience phase, include your team and users and get their feedback. Fix the feedback and let them review it. Deploy the app in weekly and monthly deliverables and let the users test drive the product and provide you with feedback. Sometimes users may not be motivated to provide the feedback. You may need to incentivize users and also get their buy in by listening to them, give them importance and credit, and also if feasible and makes sense, implement their suggested features.
Here is a detailed video on the same:
11. Hiring Wrong Team
This mostly applies to new projects and new teams or outsourcing your project. This is the first reason most projects fail when a project owner asks for bidding and hires the cheapest cost among all. Would you hire a builder that is offering you the cheapest price to build your house? Would you hire a builder that has very little or no experience building homes? Would you hire a builder that is using inexperience contractors/labor? Probably not. A software is much more complicated than a building a home. When you are looking to hire a team, here are some of the key points to keep in mind.
- Does this team has skills and expertise to complete the project?
- Do they have delivered simplar projects on time and in budget?
- Do they have any product live that you can see as a working product?
- How was their relationship with the previous product owners?
- Can you get some testimonials?
- How about referrals and call some people who have worked with this team?
- Do some background check on the team members. These days so many peole fake or lie about their experience.
12. Not Happy Team
Build a new software product is quite complex task. For a house, there is a blue print and most of the work is labor-centric. Start with a foundation, contractors come and do their job. Start with walls, then kitchen, windows, doors, walls and so on. You can see, touch, and feel the material is being used and the result.
However, owners can't see, feel, or touch a software. Just because screens look good and work in demos doesn't mean they are done right. I've seen many projects works great when used by few people but once they go live for primetime and traffic increases, the crap out. They don't scale. They have security holes. They slows down as data size increases.
Why? It is becasue either the team wasn't experienced or weren't happy.
A unhappy team can' build good software.
If you are a project owner and your team is not happy for whatever reason (not motivated, not paid on time etc), you will not get a good product out of that team.
So, please take care of your team and make sure you listen to your team and take care of them.
Summary
It takes great teamwork to develop and deliver a successful project. In this article, I talked about my top 10 reasons for why most software projects fail. The key takeaways from my experience are making sure to have a clear understanding of the business requirements and get your end users involved early in the product development so they can provide their valuable feedback while you’re building the product. I hope you found this article useful.