It’s a pretty common mistake, especially for beginners to underestimate the cost of self-made developments. Since early 2010, a lot of companies grow up by building Software as a Service (SaaS) which is a means to speed-up developments of their users.

Database, GDPR compliance, marketing automation, push notifications or more tech-oriented such as cloud services, databases, cloud functions… there is a lot of choice.

But should we use those pieces of software or go fully on custom development?

This article will give you some keys to analyze whether is it more relevant to rely on external tools or build your own piece of software. Sometimes you won’t have the choice, but you should always play the game of asking yourself questions about what you’re going to build.

A real-life story about a self-made piece of software

In my company, in the last 5 years, I’ve seen many time one common use case in every team. Almost every project in my company has that kind of needs and for sure projects of many companies.

🇩🇪 🇫🇷 This use case is managing translations for an application 🏴󠁧󠁢󠁥󠁮󠁧󠁿 🇪🇸

And for a long time, we used to say in each team that

« It’s pretty easy! Why should we pay for something such trivial? » « No! The other team tool doesn’t fill our project needs, let’s develop it on our own so we can match exactly our need. »

Building a fully functional translation manager tool/platform is almost like creating a new startup with a SaaS tool.

The energy and motivation is good at the beginning. The product seems to work, exactly filling the needs… but weeks after weeks… The product slowly started to explode in our hands.

In the beginning, it’s pretty easy, you just manage key/values then you release a new version of your mobile app and you need to keep legacy keys, then you add new languages, you need to manage access to users to the translations, you experience network charge issues, cache issues, bugs and so on.

then you release a new version of your mobile app and you need to keep legacy keys, then you add new languages, you need to manage access to users to the translations, you experience network charge issues, cache issues, bugs and so on. Many company’s internal teams are reproducing the « reinventing the wheel » behavior in some other domains.

We took lessons from that, and I can only recommend you to always learn from your mistakes.

It actually turned out to be a bad choice… and one major thing we forgot about was that…

⌛️ Your time, the development time is not priceless.

As a developer, at the current 2020 market rate, you’ll be sold by your company at something around 450~700 € per day.

This means that each day you pass building software you could have pay for has to be taken in the cost of the development, as this is a time you’re not spending on something else that would bring value.

Most of the time, if you search a bit, you can get an external service that matches closely to your needs for a price below 100€ per month.

About our translations management tool, we figured out that for matching tools, we could have paid about 30€ per month for enterprise-grade software to manage our translations.

Quick maths

For a SaaS solution: 30€ x 12 months = 360€ per year (without eventual discount application).

Versus self-made development

2 weeks of 5 days of development at least, at about 600€ per day. 600€ x 10 days = 6000€ for two weeks).

Outcome:

Integration time of at least 2 weeks for the “backend tool” + frontend integration, vs about 1hour with a SaaS SDK.

Your software has cost you 5640€ more than the external service for the first year or about 1666% more. It would take 17 years to amortize this expense all maintenance expenses excluded. This work also has no guarantees of services as your the creator and maintainer.

And in 17 years, many things can happen.

You could figure out that your product is useless and has no future. No-one is using your app or only a few people.

Your company can run bankrupt.

Technology will change and the language used to build the tool will be close to death.

Something better is coming to the market.

💁🏻‍♂️ Using an external service has some good points.

The company developing those tools leverage scale economies by specializing in their work in one or a few purposes, which is related to the software you pay for.

They spend all their time thinking about the product, collecting users' needs and realizing the software.

They probably have a huge amount of automated-tests battery, they provide customer support with Service Level Agreement and generally SDK libraries for quick integrations.

All of this will guarantee the service you’re using and paying for and helps your iterate quickly and confidently.

You just can’t rival that.

💁🏻‍♂️This mindset also applies to knowledge!

You can replicate this mindset on almost everything.

As an example, sometimes it’s better to pay someone for its knowledge because you lack some skills.

It’s better to pay an expert in the subject than trying to figure out by yourself how to achieve something that you currently don’t know about.

The expert has greater experience in the domain and bigger hindsight, which reduces the risks of failure.

The experts give you some contractual guarantees about its jobs and delivery. You can turn against him and its insurance in case of conflicts.

The expert can helps you dodging a bad learning curve by giving you some patterns. You can learn from its work.

Here also, just do some maths.

Price for internal development VS price for external development

📦 In the end, should I use external service?

There is no universal answer to this question, but if you should remember some things, it should be those things.

If you need to iterate quickly, safely and you’re not sure about the future of your product, Y.E.S.definitely!

Does the software is an all-in choice? Does it give me the capability to switch to something else, more custom later? How hard will it be to migrate?

What would be the cost of building such a feature on my own?

Am I able to capitalize on that? By replicating that app on other projects, by selling it to other people?

At which place are my skills the most efficient?

Answering those questions will lead you to the proper choice according to your needs.