First, let's start by defining the key terms. "Off-the-shelf software" means pre-built software that addresses common business requirements and can be used by various businesses. While it may function without modifications in some cases, it typically needs significant customization to meet specific customer requirements. The key distinction from "custom software," as described here, is that off-the-shelf software comes with pre-built business logic or tools for configuring business logic within the software.
In contrast, "custom software" isn't software that is build completely from scratch. Instead, it means blending existing software with freshly crafted code to establish a base and then implementing business logic on top of it. When done well, this way of building software leaves enough flexibility to solve business problems efficiently without unnecessary limitations and with minimum possible complexity. If you are developing, let's say, a modern web application, the chances are that still more than 90% of the software is made by someone else – if you count everything from the software tools to frameworks and libraries.
The demand for custom business software
The demand for custom business software is increasing rapidly. For instance, in Finland, it's estimated that roughly half of the IT services market consists of building custom digital services while the other half is more traditional IT systems development: delivering, tailoring, maintaining, and integrating off-the-shelf software, such as ERP (enterprise resource planning) systems, and providing IT infrastructure services. The surge in demand for custom digital services is illustrated by the fact that only a decade ago, the market share for custom digital services was only a tiny fraction of what it is today.
So, what is the reason for this change? It's the necessity to control risks, the will for fast time to market, and the need for flexibility. Companies don't want large, multi-year off-the-shelf software integration projects – they want a continuous stream of small custom software projects done iteratively.
Nevertheless, many companies still need to determine whether investing in custom software is reasonable. Only some companies can produce software in-house, and building high-quality software can get expensive. With an ever-growing catalog of available enterprise software products and services, asking that question makes sense. This post highlights the benefits of developing custom software over buying off-the-shelf software products or services.
Why is business software special?
One significant advancement related to software development in recent years has been the advent of public cloud services. These services offer building blocks for creating the infrastructure on where the software runs. Nowadays, it's rare for a company to build its own custom software infrastructure. Most companies use public cloud services and configure them to fit their needs. One might ask whether similar evolution can happen in business software? One in which business software platforms enable assemblage and configuration of components to create solutions to answer any business needs? Many off-the-shelf services and products do aim to create such a platform. Still, unfortunately, some significant distinctions between cloud infrastructure and business software prevent the industry from taking such a leap.
In reality, business processes are a lot messier than software infrastructure. Businesses operate based on human ways of collaborating, which are naturally chaotic. They lack the same kind of formality as would be required by software facilitating the processes. Usually, the business processes have existed before the software, which is then brought in to make them more efficient. And that's usually when a clash occurs as business processes are retrofitted into a mold of a business software solution that wasn't built with those particular processes in mind. And if the software doesn't cover the process well enough or the user experience is not acceptable, it will easily lead to a situation where the software is not fully utilized, or even at all, and the benefits are lost.
Most companies are fine running their software on infrastructure built on the basic building blocks found in public cloud services. However, rarely do two companies have comparable needs, to the same extent, for their business software. Not even ones operating in the same sector do. Innumerable factors cause variations in businesses, such as differences in processes, supply chains, customer segments, partners, regulatory demands, and so on. It is why you rarely can fit the same software solution to different companies.
Moreover, businesses often carry a burden of legacy software from their operative history, which must integrate into the new software solutions. Many times the only way to stitch these integrations to the new software is by using custom code. The sheer amount of business software out there combined with a lack of standardization ensures any off-the-shelf software can support just a tiny portion of them out of the box.
Instead of forcing a business to work as dictated by off-the-shelf software, doing a custom solution that respects the existing environment and business processes might be less painful- and risky. It shouldn't be belittled that creating generic software with flexibility in many areas is a dauntingly complex task. It's not only challenging and expensive for the off-the-shelf software vendor, but it also incurs hidden costs for the customer.
The cost of generism
A software system is made generic in two ways. Business and technical decisions can be pre-made in the hope of satisfying the customers. Even though this leads to restrictions for the software, it's still the preferred way as it keeps the complexity on a lower level. The other option is to make the software configurable. But it increases the complexity significantly, which goes hand in hand with the development and maintenance costs. Also, when the amount of configurability reaches a certain threshold, there lies another kind of trap.
On the surface, configuration seems like an enticing way to customize a software system to meet the needs of a business; in comparison, custom code might seem a lot more work intensive and error prone to create. But as the configurability of a software system grows, the configuration starts to resemble the act of coding with a notable difference: the configuration language rarely is as powerful as programming languages are, and the tooling is typically lacking. Programming without tools like source control, powerful editors, continuous integration, and automated tests sounds unprofessional – but it can be the very reality when doing significant software configuration.
A complex generic software has a steep learning curve. It demands considerable effort from a configurator or a programmer to get to know and effectively work with the software. And the worst part is that the knowledge and the skills acquired are limited to the software in question. Sometimes the skills for a generic software might be temporarily in high demand and well paid, but in the long run, an expert exclusively specializing in such a software system easily ends up with a skillset not applicable for other jobs. This is not an attractive prospect for the expert. At this time, with a shortage of proficient software developers, having the technology choices drive away talent can be a major downside.
Whether the software is configurable or not, generic implementations are too complex and unnecessarily bloated from the point of view of a single customer. Even if a software vendor actively develops their product, it can take a considerably long time for a customer-requested feature to be released. There are multiple reasons for the slow pace. First, a complex software system is slower to develop, and with a large customer base, deploying new updates is increasingly difficult without breaking existing setups, integrations, and customer-specific customizations. Second, many customers are competing for the resources of the software vendor. And third, it's common for software vendors to have roadmaps defined for their products for the next 6-12 months in advance, which means it's impossible to get a new feature into the roadmap quickly.
As industries are changing at an accelerating pace, being unable to react quickly to the changes in the competitive environment might put a company at a major disadvantage, which builds a bridge to the final reason to invest in custom software.
Gaining advantage and exploring new business
In the past, software has been used mainly to support business functions and to make business processes more efficient. But now, its role extends to ensuring competitive advantage in the core business and providing means to explore new business areas. There are requirements for the software development process and the level of control over the software and data to reach these advantages. You can cover the requirements only if you have a team creating a custom software solution.
You need to be able to develop software fast and have complete control of the software to avoid any limitations on what you can do. Then, you can decide the priority and the quality of level requirement for each feature to ensure you always create maximum value for the business with high velocity. As mentioned, generic off-the-shelf software systems are rigid and restrictive by design because it's the only way to develop them relatively efficiently. With off-the-shelf software, you can expect to get new features only if the customizability and configurability capabilities allow you to implement them. Otherwise, you have no option but to negotiate with the vendor to get the features in their roadmap.
If you can move fast, you can develop features in an iterative manner. It is the only way to reach the best solutions from business, user, and technology perspectives. Developing great software is complex, and well-honed feedback loops are a must. A tailored solution to a specific problem can enable fast iteration when all the unnecessary bloat is left out, and the focus can be on the core business problems.
It's not enough to be able to develop new features quickly. Also, the release process should allow easy and high-quality updates to the software. Nowadays, a software team with modern tools can do production releases weekly or even on a daily basis. Frequent and quick releases are essential for a feedback loop and reduce the risks involved in larger, infrequent releases. You can build the release pipelines and the processes for custom software using any tooling available in the market, which makes it easy to reach the desired solution that fits your context. With off-the-shelf software, you are often tied to the tooling provided by the vendor for releasing your configuration changes and customizations, which might not let you create the high-quality processes and pipelines needed for rapid software development.
And finally, there is the ownership and control of the data the software collects and generates. Off-the-shelf software often limits your access and even rights to the data. If you don't have direct access to the database where the data lives, your options for using the data are limited. It might mean you have to wait for the off-the-shelf software vendor to perform manual data exports, and thus, you probably have to forget about getting the data in a timely manner. Let alone doing any real-time data analysis. In off-the-shelf software, the data collection and generation are usually not tailored for your purposes. You have to accept the solution made for the generic case. But with custom software, you have complete control over the data and can make educated decisions on where to take the software. Furthermore, the data can be a valuable source of new business opportunities and is a foundation for building valuable tools and products.
Conclusion
Most off-the-shelf software is initially faster to take into use than custom software. But if the off-the-shelf software lacks the features you need, the initial speed will slow down, and a custom software solution will be the option with the fastest time to market. In general, it's best to approach off-the-shelf software as something you can use relatively quickly to fill a business requirement if your needs are fairly generic and you have no desire to differentiate in that particular business area.
Both custom and off-the-shelf software have their places in the world. Off-the-shelf software can save money and reduce risks when used for non-core business functions. But at the same time, off-the-shelf software can make iteration times slower, and the risk of it not fitting into existing business processes and systems is real. When the software is used for the core business, custom software can provide the capability to move fast with the flexibility to try out new business ideas quickly and create a competitive advantage.