Before we explore the pros and cons of creating a bespoke software system and purchasing an off the shelf software package, let’s look at the range of problems a company faces, that software can help to solve.
Core business and non-core business
Every successful company has something that makes it unique and special - the thing in the core of the success. Be it an innovative product or service, product quality, competitive pricing (due to innovative and lean production process), ability to customize the service to the needs of the customers, or overall remarkable user experience.
In addition to the core business activities, companies must deal with issues that are not essential, secondary or plain boring. These non-core areas don’t contribute to the success of the company but when not dealt with, can become serious problems (sometimes due to laws and regulations). Examples of such non-core domains can be time tracking (when you’re in consulting business), accounting (unless you’re in accounting business), inventory management (unless the way you do it is unique), marketing, web-presence, customer relations, etc.
Whether it is core or non-core depends on the business but usually it is easy to classify a domain as one of the two once you know the company and understand its business model (hint: usually there is going to be only one core domain).
Build or buy
With the above classification in mind, let’s try to answer the question: “Build or buy?”
In my opinion non-core domains should be an easy decision. Since they don’t themselves directly contribute to the success of the company, we should be able to deal with them in an industry standard way. The answer to the question is buy, even at the cost of adjusting your processes to match how the rest of the industry is doing it. In most cases the cost of a software package is going to be much smaller than what you would spend on building the software yourself. Sometimes you don’t even have to deal with it yourself – you can outsource the problem and let someone else deal with it.
Now for the core-domain. This can be a hard one. The core domain is why the business has been successful and makes it stand out. Sometimes it’s a unique idea, but more often it’s a combination of several assets like business idea, culture, competence etc.
In my opinion, a company ability to stay in business is a lot about how it experiments with different new ways of doing things. Often the ability to create a new or strengthen an existing competitive advantage in the market is what keeps you relevant to your customers. To be able to do this, I believe you need an architecture and software that allows you to capture the domain knowledge and give you the flexibility to experiment and improve. So for core-domain I would as a general advice lean towards “create your own” software. Sometimes it might be possible to buy a product and customize it to your needs, but be careful, the cost of the customization might exceed the cost of building it from scratch.
If you also stick to the first advice to outsource or buy non-core domain software, you will find a lot more time to focus on and strengthen your core domain and at the same time have full controll.