When a new business is created, they can often get by with off-the-shelf business software and work around (or overlook) the things that don’t quite work for the way they do business.
As businesses grow, they often invest in bespoke applications that fit in with their business processes and help them to differentiate themselves from others in the same marketplace. Bespoke software can (depending upon the size and scope of the software) require a significant investment – in money and in time – to get the right solution delivered.
Like many things in life, software needs to be maintained. Whether it’s fixing minor bugs, small changes to functionality to reflect updated business processes, security patches or just cosmetic changes, work needs to be done to keep things running – increasing a company’s investment in that software.
With many older business applications, making changes becomes more difficult over time. The original developers move on in their careers, technologies become outdated and harder to support, and sometimes the source code becomes messy and disorganised.
Older applications have a tendency to evolve into “monoliths” – giant, all-in-one applications that touch every part the business. The thought of working on the code (or replacing it) fills developers – and finance departments – with dread.
Occasionally, development slows down so much that the software starts to hold the entire business back. So what are your options at this point? Should you just throw the entire system away and start again?
You would need to consider the amount of time and money already invested in your current software to make that kind of decision. However, there are a few steps that can be taken to enable you to continue supporting your software. With the right approach this can extend your software’s life for a few more years, and potentially be used as a springboard to your new application.
Remove obsolete functionality
The first thing to do is take a long, hard look at your current software. Are there any areas that are no longer/have never been/are rarely used? Do these areas add value to your business? If not, cut them from the application.
This is the quickest and safest step in reducing the amount of code your developers need to support. The less code your software has, the easier it will be to support. Depending upon what’s removed, you may even see slight improvements in performance and application security.
Removing obsolete code is a step often overlooked by software development teams, but it can provide some of the easiest gains for businesses.
Split the codebase
After any obsolete functionality has been removed, the next step is to review each functional area in the application and how it is used in the business. Some areas will be used more than others, and some areas will be used either by just a handful of employees or on rare occasions.
These areas are the first candidates for splitting out into standalone applications. Why split them out? Because these are “niche” areas of functionality that most of your employees either don’t use, or don’t use on a daily basis – it’s functionality based around the edge-cases in your business.
Splitting them out into standalone applications reduces the amount of code in the main business application making maintenance and future updates easier to manage. The new standalone applications can be upgraded and modified without having to worry about breaking anything in the main application. If the resources are available, they can even be handed off to separate teams to manage independently.
With the obsolete and “niche” functionality removed, the next step is to look at the functional areas within your code once again. This time you’re looking at your user’s behavioural patterns.
For example, do one set of users only use the customer services and order processing areas, while a different set of users just use reporting and administration? Can these areas be broken out into standalone applications with just the common areas left behind? If so, then break them out of the main codebase in the same was as the “niche” functionality.
By repeating this process you can eventually break down your monolithic application that your business is struggling to manage into smaller, distinct and more manageable applications. While these still provide all of the functionality your business needs, each one is now easier to work on and deploy without destabilising the whole system.
The life of your business software can be extended this way, providing a greater return on investment on all of the years invested in the system so far. In the current economic environment, maximising your ROI and leveraging the software that you already have can result in substantial savings.
Your business software will also be in a better state to when it comes to sourcing or creating a replacement and will be a much more manageable job than trying to replace everything in one go.