Jeff Dwyer on Dec 30, 2021
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.
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:
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.
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:
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.
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.
Well, it’s a lot of boxes and arrows, but I don’t think it is. Overkill would come in one of two forms:
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.