Refactoring

Refactoring

Share this post

Refactoring
Refactoring
The Three Stages of Engineering Teams πŸ“Š
Copy link
Facebook
Email
Notes
More

The Three Stages of Engineering Teams πŸ“Š

A simple framework for structuring growing teams, inspired by Instagram.

Luca Rossi's avatar
Luca Rossi
Aug 05, 2021
βˆ™ Paid
18

Share this post

Refactoring
Refactoring
The Three Stages of Engineering Teams πŸ“Š
Copy link
Facebook
Email
Notes
More
3
Share

Mike Krieger, co-founder & CTO of Instagram, believes there are three major growth stages every engineering team goes through.

These are crucial moments in the wider company evolution, and largely match my own experience at a fast-growing startup first, and a larger company later.

He calls them:

  1. πŸƒ Generalists

  2. 🧱 Platforms

  3. 🧩 Products

Each of them represents a different way to organize teams and engineering work within your company.

Let's see them one by one πŸ‘‡

1) πŸƒ Generalists Stage

This is when you are just starting up and your team is roughly under 10 people.

At this stage you are still figuring out what to build and how to build it. You can't really anticipate what you will be doing, both in terms of tasks and tech you will be using.

Team

For this reason, it is wise to surround you of generalists who are happy to do pretty much anything.

These are curious people β€” they don't bother about switching technologies, mixing them with no-code tools, and do whatever it takes to deliver the product.

Even more so, they thrive doing it.

On the other side of the spectrum, you probably don't want someone who is heavily invested in some specific technology, as they will try to use it no matter what, because they feel their career depends on it.

Finally, generalists often make for good managers down the line, as they develop systems thinking by working on a wide array of activities.

Technology

As a rule of thumb, you should expect everything you build at this stage to be scrapped at some point in the future. This is almost inevitable as you 1) try different things to see what sticks, and 2) you move really fast.

So my advice is:

  • Don't create premature abstractions that are likely to backfire later.

  • Make full use of no-code / low-code tools to keep your tech footprint low.

2) 🧱 Platforms Stage

This post is for paid subscribers

Already a paid subscriber? Sign in
Β© 2025 Refactoring ETS
Privacy βˆ™ Terms βˆ™ Collection notice
Start writingGet the app
Substack is the home for great culture

Share

Copy link
Facebook
Email
Notes
More