Estimating engineering costs in a startup

A startup has some costs and some customers. How much will the costs be with 10x or 100x customers?

It is not an easy task. This is a framework to get a first quick answer.

Divide the costs into four groups:

  • The production costs: these are the costs that scale more or less linearly with the number of customers. Good examples are the disk space or the number of instances you need to satisfy concurrent requests.
  • The ops costs: these are infrastructure costs. They scale logarithmically with the number of customers. An example is the deployment infrastructure: in the beginning, it’s very simple, then you need more automation and it grows, but eventually, it does not grow anymore regardless of the size.
  • The development costs: these are the costs of the infrastructure used to develop your software. It scales with the size of the team, but very slowly. The costs when your team is composed of five people may be about the same when you grow to fifty.
  • The cost per engineer: add here the license costs per person (GitHub, 1Password, Jira, …), and the costs of the hardware (laptops, monitors, …) assuming a replacement cycle every three years. Leave out the wage costs.

Create a table with the current costs and the current number of customers. You may want to include only valuable customers and exclude those that interact less with the platform and pay less in general. Sum the costs, divide them by the number of customers and that’s your current cost-per-customer.

Add two columns for a situation when you have reached an intermediate and a long-term goal, for example 10x and 100x customers.

  • Scale the costs of production in a semi-linear way. You will have some scale economy, so multiply by a factor like 0,8.
  • Scale the costs of ops in a semi-linear way for the first step, 0,3 for example, and use the same value for the second step to have a sort-of logarithmic growth
  • Keep the development costs the same in all columns.
  • Multiply the costs of the engineers by the expected sizes.

Calculate the new costs-per-user in the intermediate and final situation, and you have your initial assessment.

This model is very simple, but it breaks when the numbers grow too much because it does not estimate well economies of scale.

Check the following example

Customers -> 5000 50.000 500.000
Production 2000 16.400 160.400
Ops 1000 3.700 3.700
Develpment 1500 1500 1.500
Engineers 5x183 15x183 50x183
Total 5.415 24.345 201.750
Cost-per-user 1,08 0,49 0,40

Production for 50.000:

([new size]-[current size])x[current cost per user]x[scalability]+[current cost]

(50.000-5000)x(2000/5000)x0,8+2000 = 16.400

Ops for 50.000:

([new size]-[current size])x[current cost per user]x[scalability]+[current cost]

(50.000-5000)x(1000/5000)x0,3+1000 = 3.700

Engineer:

licence 100 + laptop 3000/36 months = 183/person/month

Production for 100.000:

([new size]-[current size])x[current cost per user]x[scalability]+[current cost]

(500.000-5000)x(2000/5000)x0,8+2000 = 16.400

It is realistic to have a 50% drop between the cost-per-user at 5.000 and at 50.000 and 10/25% drop between 50.000 and 500.000. Adjusting the scalability multiplier and reducing the differences between the steps (e.g. 5000, 10.000, and 100.000) may yield more realistic numbers.