We hear stories about enterprise software projects failing. But why such ambitious projects fail to take off? While most blame the software that they develop behind the project’s failure, but very few realize the fact that the problem lies elsewhere. If we look at some case studies, we will find that both business and lack of proper focus are to be blamed for such project failure. Software companies need to establish a robust project management framework with four core elements: processes, organizational structure, people and systems. Any of these elements not given proper attention during the process and the entire project collapses. Here in this blog we have identified six reasons why enterprise software projects fail.
1. Lack of proper planning in design – In software business, processes change and likewise the software we code. Since most programmers are aware of this, they try to over engineer to make a feature more adaptable. But the problem is we most likely get this wrong and in the process adds more logic to maintain. Over engineering is definitely one of the reasons behind a project’s failure, but there are too many times in a product's life when it undergoes multiple changes that it might be time to do a serious refactoring of the code. This is where the problem starts and the project goes out of track. If the system is designed properly, it is not going to affect the project too much. However, if the system is designed poorly, maybe because of lack of time, pressure from top management, or any other reason, then the entire project suffers.
Solution – You can definitely fix this issue by trying and selling a refactoring of the whole system. There is a high chance that it will fail and it could be harder to sell as you are just giving them what they already have for features. The better option is to roll out a small portion of the application. You have to take the whole section all the way to the database from the UI and just refactor that section. This is one of the easiest ways to fix a legacy application.
2. Starting the project with a huge framework – Most development teams make the mistake of taking an ambitious approach of developing huge frameworks that can do almost everything. The idea behind this approach is to save time when the project starts. But problem surfaces when you have to change something in the project. Usually, developers just go and change it. However, if there are 20 different segments in your app using that same framework, developers have very limited option to what they can change, because changing it might break some of them.
Solution – The ideal strategy would be to work on building smaller modules to make work easier. You have to ensure that the modules are not dependent on anything. It is always advisable to keep the dependencies on light interfaces. This approach will help you to replace any one part of the system with any one of their modules. It can also be written in a different language and the rest of the system will not care. Initially, it will take some additional time, but the more you do it the quicker you will get at it.
3. Not allowing open source projects – This is definitely one of the reasons behind a project failure as to why a large number of enterprise companies are not open to proven and tested open source projects. These open source projects are capable of doing multiple different things in the language of your choice. Also there are organizations that have the notion that they will have to support the open source software as they don’t whom to approach if it breaks. You can always break things into smaller modules, and if it doesn't work, the team can always replace that part. A team of programmers can also easily fix it as it is open source.
Solution – Yes, there are some open source licenses that are really hard to work with, but there are many that don't give much trouble. What you have to do is simply include the license in your software as well for their code. That doesn't require you to make your code open source as well. You can resort to Wikipedia and check out the articles that talk about tables on what you can and can't do with many licenses. By educating yourself you can really save ample hours of development and bug fixes.
4. Be open to change – It is one of the most common reasons of why an enterprise software project fails. Often a programmer or a manager who has been with the team since day one not willing to change, the entire software development project starts to falter. If even one person in the team is not open to change it affects the whole team and the organizations’ objective as a whole. Are you developing applications in the same way you did three years ago? You have to always keep in mind that programming is a changing world and everyone part of it has to change with time.
Solution – In a programming world, you have to change with time and convince others in the team as well to change. You might have to ask your team as why they feel that change is not required. In a team you should not leave any chance where you and your team should think on different platform.
5. Select the right tool for the right project – This is a high priority for a project to be successful. You have to select the right tool for the right project even before the project starts. What a tool is capable of and what its core strengths are will have a direct and dramatic impact on what your project can achieve. So, choosing a wrong tool can lead to disaster not only for the project, but also for the company.
Solution – Successful projects always do course corrections and transform what they do, based on what they've learned during the process. Agile processes generally have positive revisiting important decisions until they are the correct ones.
6. Hire the right person for the right job – You have to be very clear about the kind of developer your need in your team. Proficient software developers are critical to the success of the product and the business. Their logical and analytical skills can make or break the product. So, you have to have the right skill in distinguishing a good developer from a bad developer. If a developer doesn’t match with other team members in terms of skill and attitude, ultimately the entire team and project will suffer. You should be clear to hire not just any software developer, but the right one, for your business.
Solution – You have to focus solely on finding a candidate that cares about your vision and is passionate about creating something that solves problems for people and impacts the community at large. In the interview process, the first thing you should do is gauge whether this person connects with your product vision. Are they looking merely to further their career or are they driven by the zeal to make a difference to the status quo? It is very important to consider whether the people you are interviewing are job-oriented or career-oriented.
Let us know in the comments on what you think? Do you see the same issues? Have you fixed them before and if so is there any advice you can give?