Every company eventually comes to a point where they need to build something that they could just buy and often teams end up building it.
If you’re only traveling a mile to the store, it doesn’t make sense to spend engineering resources building an airplane if you can just purchase a car.
Why do we do this in software?
With the world transitioning to micro services, we should start offloading tasks that other companies are already handling well and focus on our own business logic.
Here are some reasons why:
Cost To Actually Build It
The decision to build something instead of buy is an expensive decision. The cost for a team for a sprint or a month or several months is extremely high. Sure, the $1,000 / month price tag sounds lofty — but do you know how much you are paying for your software development teams?
Development on it won’t end up being a one time thing either. On the surface, you’re probably thinking “yeah, but this is a simple one time project”, but inevitably more feature requests come in and more functionality is needed. Pretty soon, your spending more time on it.
Let’s say you consider your development team to cost $150 / hour after salaries, benefits, equipment costs, etc. If you have a team of 4 and they spend just 2 weeks on it every year, that’s $48,000 per year being spent on it.
$48,000 per year. And your not going to have the same features or quality of just buying something off the shelf with a company dedicated to improving it.
Cost To Maintain It
If you do decide to build it, who is going to support and maintain it?
I have yet to encounter a support staff with lots of free time. Do you have that luxury?
Who is going to manage the infrastructure and make sure things are scaling as needed or make sure you’re not spending unnecessary money on infrastructure if the volume of requests is low?
Let’s be generous here and say you have one support staff that costs $150 an hour and one cloud engineer that costs $150 an hour. If they each have to spend 1 week of their time a year supporting and managing their infrastructure this adds up to $12,000 per year.
The total cost to build and maintain a lesser version of something you could buy off the shelf is $60,000 per year.
First off, can you actually dedicate resources to building an internally used product?
But let’s say you can. What else could they be working on to generate revenue? Could they add a new feature that would allow you to close on the next 10 customers? Could they improve the quality to reduce the churn on your product? Could they add something to expand on your business model?
I can’t calculate this with any sort of reasonable numbers, but the opportunity cost could be and likely is huge.
Stop playing defense trying to always save money. Sure, it makes sense to be financially responsible. But there is a limit to how much money you can save. There is no limit to how much you can make.
It always starts simple.
Well sometimes it starts simple.
But it never ends simple.
You might start with the idea of building something simple. But inevitably others are going to want to include their ideas inside of it. Others are going to want to overcomplicate things a little bit because they want to use something specific.
Managing scope is difficult. It’s going to cost money in the time of meetings and resource time trying to manage it and if that doesn’t work it’s going to cost money for more development and more of the support and infrastructure time.
Let’s face it. There are egos everywhere.
I’m just going to leave this here.
Ah, the hidden cost of compliance.
How much extra work do you have to do for compliance?
Are you able to remain compliant with just 1 or 2 people working on it?
Do you have to spend time proving your compliance every year based on obscure requests?
Don’t forget to factor that into your costs.
Don’t Reinvent The Wheel Until You Need To
There are lots of great third party applications out there like Twilio, Stripe, Okta, etc that can be used to speed up the process of developing your products.
Unless you are the size of Google or Facebook and can dedicate a whole team to an internally used product on a full time basis, it doesn’t make financial sense to try to rebuild everything.
Other departments trust other software applications, why don’t we?
Don’t reinvent the wheel until you need to.