August 4, 2020
Should you buy software or build it yourself?
Software teams are often faced with the decision between buying in software solutions or building their own.
The example I will use is one that we are currently faced with at FindMyPast. At FindMyPast we build software that connects our customers to their past by helping them find their ancestors in our rich datasets. Like most companies, we need a way to identify users securely. So we are asking the question: “buy or build an authentication system?”
When you face this question you typically have three options:
Hopefully when you approach this decision as a company you will be doing it with people from across the entire business. The decision will often come down to money, which makes sense, however if you ask the wrong questions you will end up with a solution that only benefits you in the short term.
I’ll run through a few questions you might hear and why I think they are flawed and I will end with how to frame the question to get the best decision that works long term.
When you go to answer the question of what is the cheapest you have to start by obtaining the cost of each option.
It is easy to get the price of a SAAS option, you just go to the price page or contact sales. Importantly this price you get is totally accurate, you don’t have to worry about over or underestimating.
On the other hand it is very hard to measure the total cost of building and maintaining your own solution so it tends to get underestimated. Also humans are just bad at giving estimates and the bigger the project the worse the estimate.
To get the cost of building your own first you have to decide what you want to build. It is likely that you will not build all the features that the SAAS product is offering as the immediate value of them might not be obvious. However, in reality the features you are suggesting to leave out might be features that the SAAS business has added after extensive research and is actually one of their most popular features. So your comparison already starts out unfair as you are not giving an equal comparison.
So to answer this question you end up comparing solutions which are of massively varying quality and you are looking at estimates which have widely different confidence levels. Not a recipe success.
If you hear this question I encourage you to push back, and try and reframe the situation with the final question.
This is a much better question to be asking, mainly because it shows consideration for maintenance cost however it still has issues.
When you are looking at how cost effective each option is you need to think about how long you want this solution to last. Do you expect this to be in place for 6 months or 10 years? Is it going to be an area of active development for your company or is it something you want to set up and forget?
It is easy to measure the ongoing hosting cost but that is probably the smallest ongoing cost. However there are so many uncertainties that are impossible to capture. What if a new standard is released? Do you implement it or stay on the old standard? What if the open source library becomes unpopular, do you start maintaining it yourself? What if the open source solution uses a database tech no one is familiar with?
The stars may align and you might not have any problems but more than likely there will be unforeseen problems that you couldn’t possibly capture when thinking about how cost effective the different options are.
In the example problem we have at FindMyPast looking at the cost effectiveness we will probably find that hosting an open source option is far more cost effective than building our own. You only have to pay maintenance costs and if the open source solution is popular it is likely in active development and maintenance, none of which you have to pay for. The ongoing cost of an open source solution will probably be lower than the ongoing cost of a SAAS product. However, you mitigate a lot of the uncertainty by going with a company who is motivated to solve those problems by the money they receive from customers.
This is the best question to ask as it now leaves room to acknowledge opportunity cost. No one can argue that the answer to this question is not important, ultimately profit is what drives the business. What is the opportunity cost? Google says:
“the loss of other alternatives when one alternative is chosen” - lexico
In our case our case the opportunity cost is the money that should have been made on the features you could have made instead of building your own system. This is again pretty much impossible to measure but it is very important to recognize the size of this cost.
Now that we are asking what option is more profitable we can begin to make an informed decision. One way to make profit is by adapting and innovating faster than your competition. When you are thinking about building you need to decide if the part of you application under question is something you can use to beat your competitors and make more money. If the answer is no, then you should buy.
If we look back again at the example of FindMyPast wanting a new authentication system. A robust authentication system is very important to have for us, and we can't operate without one. However we will not win customers by innovating in the authentication space. We will win customers by innovating in the family history area. If we acknowledge that all time spent working on authentication is waste because it is not competing then anytime spent now or in the future we on authentication is waste. So we want to minimize that work as much as possible to direct efforts to areas that we can beat our competitors at and gain more profit.
So it likely makes sense for us to buy an auth platform so that FindMyPast engineers can focus purely on family history and think about authentication as little as possible.
You might be thinking, won't asking this question always lead you to buy? Well a lot of the time it will. Your company should focus on delivering direct innovation in their respective area and not reinventing the wheel at expense of delivering value.
Sometimes you will ask this question and the answer will truly be to build it ourselves. An excellent example of this is search at FindMyPast. We have our own customer searching setup, something which many SAAS businesses are well established at. However, we asked the question: can we use innovation in this area to beat our competition? The answer is definitely a yes, we have billions of complex records so we have a very unique problem and also the speed of searching and indexing will lead directly to a better customer experience. This proves that asking the question “what is the most profitable option” will not always lead you to buy but in fact lead you to the correct answer.
Another reason to buy is documentation! Everyone hates to write documentation but the only thing worse is working with a microservice without any documentation. Buying means you don’t have to write documentation and most SAAS companies put a lot of resources into making their documentation very robust.
Another reason to buy is admin panels. Admin panels are often an afterthought and are not given the same usability consideration as the customer facing application is. For SAAS businesses the admin panel is the customer facing application so they will invest heavily making the admin panels top quality.
In conclusion, when you come to this decision you need to reflect on whether or not building will give you a competitive edge, if it wont spend as little time as possible on it. Spend the time you would have been building on out moving the competition.