The Build Or Buy Software Conundrum: Strategic Advice For Businesses
Key insights on custom, COTS, and low-code solutions for informed business decisions.
One common question businesses face when planning a new product is whether to build the software from scratch or buy a commercially available software platform. This is an important decision that can significantly affect development costs and future risks.
Before discussing the best model to choose, let's first explore the common software models, including their benefits and drawbacks.
Custom development
Custom development or bespoke development is the traditional form of development when you develop custom-built software, tailored to your specific business needs.
Custom development includes the process of designing, implementing, deploying and maintaining software, and is built typically by in-house development teams or outsourced to a third-party. Some of the most popular programming languages for general-purpose custom software development are Java, C#, PHP, JavaScript, Python, etc. These are programming languages commonly used by software developers.
So what are the benefits and drawbacks of custom development?
High flexibility
With this model, there are essentially no limitations; you can build anything you can envision. Consider the analogy of purchasing a custom-made suit: you can design the model as you like, without limitations.
It does not mean that the entire software is built from scratch. Indeed, some third-party libraries can be utilized, but the software's foundation is custom-built.
Increased control
Custom software development means you are not heavily reliant on a third-party solution. The risk that a third-party will cease support or that you will encounter an issue with insufficient security implemented in the third-party solution is lower.
Greater Responsibility
However, with reduced reliance on third parties comes greater responsibility. It falls upon you to address any security, privacy, or compliance requirements.
Higher Initial Investment
Custom development demands higher initial development costs. Your team must navigate through the entire process of understanding customer needs, designing the product, developing, and deploying. This requires significant time and effort.
An Asset in the Long Run
The custom software you develop becomes an asset to your organization. As the product stabilizes, implementation costs decrease over time, making the software a valuable asset in the long run.
Commercial off the shelf (COTS)
On the other hand, we have Commercial Off-The-Shelf (COTS) platforms. Using a COTS model means that you're purchasing a commercially available platform that isn't built specifically for you but is designed for the masses. Since it's produced for a broad audience, COTS software adopts a "one-size-fits-all" approach, guided by general best practices. Typically, you'll need to make some adjustments to adapt the platform to your specific needs. This could involve configuring the platform or, if allowed, developing some custom software to tailor the platform further. Consider the analogy of buying a suit: you purchase the size that best fits you and then make minor adjustments.
Typical examples of COTS platforms include e-commerce platforms. E-commerce is a very common business model, and e-commerce applications often share similar functionality, e.g., purchasing a product, marking a product as a favorite, or adding a product to a shopping basket. Because this functionality is common across a wide range of applications, companies like Shopify, Sharetribe, and Magento have packaged it into platforms commercially available to many businesses.
The COTS model offers many benefits but, of course, also has drawbacks.
Faster Time to Market
Using a COTS platform means you don't have to build your software solution from scratch, allowing you to develop the product much faster, sometimes even within a few days. This enables you to bring a working product into production much quicker.
Limited Flexibility
For a COTS platform to be a viable option, it must offer the right functionality that fits your business needs. While some platforms allow for more customization, others offer less, but in any case, the ability to adapt the platform is limited.
Some platforms promise complete customization. However, even if you technically can make the product fit your needs, doing so may mean you are not leveraging the benefits provided by the platform, thereby making your product unnecessarily complex.
Long-Term Dependency on the Platform
Building a product on top of a COTS platform means you will heavily rely on the third party for aspects like security and performance. This leads to "vendor lock-in," as your product becomes fully dependent on a third-party platform. Moving away from that platform would likely mean rebuilding the software from scratch.
Long-Term Operational Costs
The long-term dependency on the platform also incurs continuous licensing costs over time. The pricing model of these platforms is often usage-based, meaning the more users your product has, the higher the cost. Thus, licensing costs will persist as long as your product is live and being used by your customers.
Often Less Performant Than Custom-Developed Software
This depends on the chosen platform and your specific needs, but generally, with this model, the software tends to be somewhat less performant, and achieving optimal performance is not as feasible as with custom development.
Custom low-code development
I would classify this as a distinct category. It refers to a type of commercially available platform that enables application building with minimal coding (low-code) or no coding at all (no-code). These platforms simplify the application development process by substituting textual coding with visual coding. Instead of typing code, you work with a visual interface and available building blocks. You can build your software application using a drag-and-drop method, reusing and connecting these building blocks.
While COTS platforms are sometimes also referred to as low-code platforms (because they reduce the need for software development), COTS are designed to meet the needs of specific groups of customers in certain domains (like e-commerce). The custom low-code development category, however, allows for the development of more generic-purpose applications but in a simpler way than traditional coding.
The benefits and drawbacks of this model are quite similar to those associated with COTS platforms.
Faster Time to Market
Low-code development can significantly boost development productivity, leading to a quicker product launch.
Increased Risk of Low Software Quality
Due to the minimal coding required, these platforms aim to make development accessible to non-technical individuals. However, this introduces a risk. Applications built by non-technical people using low-code platforms often become complex and of lower quality. Even with this type of development, understanding software concepts and best practices for structuring software is essential.
Limited Flexibility
Although these platforms suggest that they can be used to build any application, if the platform's available building blocks don't suffice, you might end up adding a lot of custom code. This increases your application's complexity. Thus, the functional flexibility of this model is limited compared to that of custom-built software.
Long-Term Dependency on the Platform and Operational Costs
Similar to COTS platforms, your low-code product is entirely reliant on the low-code platform. This results in ongoing licensing costs that persist as long as the software product is in use.
Often Less Performant Than Custom-Built
Low-code platforms typically exhibit lower performance compared to custom-built software. While this varies by platform, it's not uncommon for startups to begin with a low-code solution, only to encounter performance limitations and switch to custom-developed software as they scale.
When to build and when to buy
With this information in mind, try to answer the questions listed below and evaluate which model is best for your business at this stage.
Remember, there is no perfectly right or wrong solution. As long as you are aware of the risks and have found a way to manage them, you are on the right path.
Originally published at https://medium.com/geekculture