Jeff Dwyer on Dec 30, 2021

All Roads Lead to Prefab

Why are we doing this?

At some level, I really didn’t want to have to build Prefab. I’m a builder. I want to ship things and make business impact and change the world. FeatureFlags and friends are necessary, but in no way sufficient to achieve that.

“What about my other idea?”

So one great reason to not build Prefab would be because I’ve got this other thing that I really wanted to do.

But let’s talk a little about what it would really mean to do something else and why that makes me think I ought do Prefab first in any event.

So last week I had a great conversation with an early stage CEO. Great, growing company. Awesome PMF. Scaling way past their MVP tech solution. She needs an early stage CTO to build out a technology platform. It needn’t be too crazy, it’s a basic B2C. Customers hear about the thing. Signup up for the thing. Internal order processing. Deliver the thing.

So what is the right thing to do? Well it’s probably to KISS and ship a basic monolith to heroku. And thus begin the dance of incremental tech debt pain.

Incremental pain, because every single time I want to add a new thing I’m going to choose between:

  1. Hacking it together (throwing another shrimp on the monolith bbq).
  2. Taking a month+ long yak shave to do it the way I’d like to (do it as a microservice, build a proper event system).

The Dance Of Pain

To get the business result fast I’d default to picking #1 and of course every time we I did so I’d dig the hole deeper for the eventual transition. Over time, I’d make progress and improve these things one by one, but each time it would put a hiccup in my ability to deliver work for the business.

“There is More That Unites Us…”

This would be an intractable problem if all apps were totally different. If we simply couldn’t know what we’re going to need, then yes, maybe we need to go one step at a time. But that’s not the case at all. There is so much stuff that is straightforward that there is a huge overlap in the Venn diagrams of stacks. I don’t care whether you’re building a social networking app or a b2b saas, you’re answer to the following are probably the same:

  • Do you want staging & production & dev environments and a good way to deploy?
  • Would you like feature flags and straightforward solutions to experimentation?
  • Do you want to copy paste API keys around in slack or have them unified?
  • Do you want standardized metrics, APM, log processing, error tracking & pagers?
  • Would you like to see all the data in a BI tool like Periscope?
  • Do you want to be able to easily add a microservice?
  • Would you like standardized product events in Amplitude?
  • Would you like the data in Periscope to match what’s in Amplitude?
  • Would you like to be able to transform the data after it’s loaded into Snowflake?
  • Do you want easy integration with a CRM?
  • Do you want a robust auth system with social login out of the box?

None of the answers here depend on the company size. Even if this is my 2 person startup I want all of this. Now, currently it’s insane to build all of this on day 1, but it doesn’t mean I don’t want it and wouldn’t be better off if it magically existed.

But as of today it doesn’t, so by default if I start something new I’m going to add these things one at a time and spend a good 40% of my time on undifferentiated plumbing.

What would different look like?

The Prefab Stack

Here’s my “default map of the stack”.

This is the list of everything that I “almost certainly want”. If I could spin up this whole stack with a snap of my fingers I would be thrilled. This has got my first 2 years of ezCater major devex & tooling initiatives already built. I can deploy with confidence. I can monitor. I can debug production. My data customers are happy. Marketing is happy.

Just like RubyOnRails made it clear where to put the DB migrations, now it’s clear how to develop locally. I have robust pipelines to connect my applications to 3rd party integrations. Experimentation and analytics come out of the box. I have a superb story for data transformation & visibility. I’m going to be able to make nice event driven architectures when it’s appropriate. Standardized environments and powerful config make sanity the default. I’m setup to leverage a kubernetes cluster and not having to pay somebody like segment $$$ for easy stuff.


Here’s the rubric / criteria for picking this stack.

  • It’s pretty boring. Nothing here is under 5 years old.
  • Lock-in allergy. The Prefab bits are replaceable, the 3rd party things are swappable.
  • It mostly works a la Carte. Use what you want.
  • It’s low magic. Complex code lives on your side of the fence.
  • It’s framework / language agnostic.
  • It’s extensible. I’m not waiting on Prefab to add support for 3rd party X.
  • It’s owner-fixable / tinkerable.
  • It’s easy to trial and has a great cost / scaling story.

Is this overkill?

Well, it’s a lot of boxes and arrows, but I don’t think it is. Overkill would come in one of two forms:

  1. It was a lot of work to build.
  2. It’s a ton of cognitive overhead to operate.

If the premise is that I’m going to get all of this out of the box, then it wasn’t overkill according to #1.

On #2 I think that comes down to execution and sticking to those pillars. It’s important to be as un-magical as possible. I think that’s achievable and the a la carte nature makes things naturally comprehensible on their own. This isn’t a massive “turn over all the keys to Prefab”. The heavy lifting is outsourced to the big kids. GKE, DataDog, HubSpot, Snowflake etc. Prefab isn’t making new things possible, it is opinionated defaults and glue to make things work together out of the box.


So that’s my argument. Honestly this is why I want Prefab to exist so much. Yes, I think it will be a great business to build and a lot of fun, but the overwhelming reason is that I want to use the darn thing. Any direction I turn, whether it be trying a different startup idea or helping to scale another team, I’m going to run into these same headaches and wish this existed. Even joining a much larger org may not mean escape. Multi-billion dollar companies are still operating with total messes in this area. The developer experience of operating in microservice land is unsolved for most organizations, and I think we’re destined to keep solving it half-way and piecemeal until Prefab exists.

- Jeff