Build or Buy - the evergoing entrepreneur's dilemma
One of the most common questions tech entrepreneurs have when launching their product is whether to build the software from scratch or buy a commercially available software platform. This is an important decision that can make a significant difference in terms of costs spent on development or risks faced in the future.
Before we discuss what is the best model to choose, let's first explore the common software models, their benefits and drawbacks.
Custom development or bespoke development is the traditional form of development when you develop custom-built software, tailored to your specific business needs. Think about buying a suit. You can make a model as you like, there are no limitations.
So what are the benefits and drawbacks of custom development?
With this model there are basically no limitations, you can build anything you can think of. It does not mean that the complete software is built from scratch. Of course, some third-party libraries can be used, but the foundation of the software is custom-built.
Custom software development means that you do not rely on any third-party solution. There is no risk that a third-party will stop providing support tomorrow or that you will have an issue with insufficient security implemented in the third-party solution.
However, because you are not relying on any other party, this means that you have greater responsibility. You need to take care of any security, privacy or compliance requirements.
Higher investment upfront
Custom development requires higher costs spent on initial development. Your team need to go through the whole process of understanding customer needs, designing the product, developing, deployment. This costs, of course, time and effort.
An asset in the long run
The custom software you build becomes your ownership. Costs spent on implementation decrease over time as the product becomes more stable, and the software becomes your asset in the long run.
Commercial off the shelf (COTS)
On the other hand, we have commercial off the shelf (or COTS) platforms. Using a COTS model means that you're buying a commercially available platform that is not built specifically for yourself, but it’s built for the masses. And because it’s produced for the masses, COTS software follows a “one-size-fits-all” approach guided by general best practices. Normally, you'll need to make some changes to adapt the platform to your needs. You could configure the platform or (if the platform allows) you could develop some custom software to adapt the platform. Think about buying a suit, you buy the size that best fits you and you make small adjustments.
Typical examples of COTS platforms are e-commerce platforms. E-commerce is a very common business model and e-commerce applications have quite similar functionality, e.g. buying a product, marking a product as favourite, or adding a product into a shopping basket. And because this functionality is shared among a broad range of applications, companies like Shopify, Sharetribe or Magento have packaged it into a platform commercially available for many businesses.
The COTS model has many benefits but of course also drawbacks.
Faster time to market
Because using COTS platform means that you don't build your software solution from scratch, you can build the product much faster, sometimes even in a matter of a few days. This allows you to bring a working product much faster into production.
For a COTS platform to be a viable option, it needs to offer the right functionality that fits your business. Some platforms allow more customisation, some less, but in any case, the ability to adapt the platform is limited. Some platforms promise the ability to be completely customised. But even then, if you might technically be able to make the product fits your needs, that would mean that you are not leveraging the benefits provided by the platform and you are making your product unnecessarily complex.
A long-term dependency on the platform
Building a product on top of a COTS platform means that you would heavily rely on the third-party for aspects like security, performance, etc. That leads to a "vendor lock-in" as your product is 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 brings continuous licensing costs in the long run. The pricing model of these platforms is often usage-based, i.e., the more users are using your product, the price increases. This means licensing costs stay as long as your product is live and used by your customers.
Often less performing than custom developed software
This depends on the chosen platform and your needs, but as a general rule, with this model the software is somewhat less performing and you can not achieve optimal performance in the same way as with custom development.
Custom low-code development
I would put this as a separate category. This is a type of commercially available platform that allows you to build an application with little coding (low-code) or no coding at all (no-code). These platforms simplify the application development process by replacing textual coding with visual coding. This means that instead of typing code, you will work with a visual interface and available building blocks and you can build your software application by using a drag-and-drop method, reusing and connecting these building blocks.
While COTS platforms are also referred to as low-code platforms (because they reduce the need to develop software), COTS are meant to meet the needs of certain group of customers in certain domain (like e-commerce). The custom low-code development category allows development of more generic purpose applications but in a simpler way than traditional coding.
The benefits and drawbacks of this model are pretty similar to those of COTS platforms.
Faster time to market
Low-code development can significantly increase the productivity of development, and that means faster product launch.
Increased risk of low software quality
Because there is less coding, these platforms promise to make development available for non-technical people. But this comes at a risk. Low-code applications built by a non-technical person usually tend to get pretty complex and of lower quality, because with this type of development, you still need to understand the concepts of software and the best practices for structuring software.
Although these platforms promise that they can be used to build any application, if the platform does not allow this using the available building blocks, you might end up with a lot of custom code which increases complexity of your application. So the functional flexibility of this model is limited compared to custom-built software.
A long-term dependency on the platform and operational costs
Like the COTS platforms, you low-code product relies fully on the low-code platform. This brings continuous licensing costs that remain as long as the software product is in use.
Often less performing than custom-built
These platforms have lower performance compared to custom-built software. Again, this depends on the platform, but it is not an uncommon scenario for startups to start with a low-code solution and at some point to hit the performance boundaries and transition to custom-developed software as they scale.
When to build and when to buy
Now with this in mind, try to answer the questions listed bellow and evaluate what is the best model for your business at this stage.
And keep in mind that there is no perfectly right or wrong solution. As long as you are aware of the risks and you have found your way to manage these risks, you are on the right path.