Three constraints before I build anything

243 points42 comments2 days ago
csallen

> One defining constraint must shape the product... Minecraft is built entirely from blocks. IKEA is flat-pack, self-assembly furniture.

I've been calling these things product primitives. I can't remember where I heard that term, but it refers to things like...

Blocks in Notion. Messages and conversations in Telegram. Frames and layers in Figma. Tweets in Twitter. Cells and sheets in Excel. Tools and layers in Photoshop. Commands in a CLI.

I think what makes for good product design is having a very small number of primitives. A bad product doesn't know what its primitives are. Or it has a very large number of primitives. It feels like everything in the product is some unique thing that works in its own unique way. So users have to learn a ton of different top-level primitives/concepts. It's confusing and intimidating and hard to teach. Ideally you just want one or two or three main primitives.

The complexity/power in an app comes from choosing powerful primitives that have depth, that are composable, etc. You can do a lot with Notion blocks. You can do a lot with Excel cells. You can do a lot with a CLI command. You can do a lot with a Minecraft block. There's depth there.

show comments
kianN

The author really extracted the core tenants of exactly how my former research mentor and I ended up building our business.

We started with the second two points: our core technology was a sampler that enables arbitrary hierarchical Bayesian graph models for sparse data, our constraint was cpu bound tractable compute. The piece that took us the longest to discover was the fact that our end products need to be separate from our underlying technology.

We were given that advice in various words from many people even before we started but some lessons need to be lived to be learned.

show comments
codethief

> The core tech must be separable from the product

Won't this lead to premature abstraction and application of design patterns everywhere? I mean, sure, of course you should do separation of concerns, keep your business domain layer clean of persistence/network/UI/… concerns etc. But your domain layer will still be very much tied to your product. There is no way around that.

show comments
robertlagrant

> Google has Kubernetes

This is more to disable its competitors than anything.

Synthetic7346

It would have been great if the author could have provided a complete example of the constraints in action, I'm kinda lost on how the third one would look in practice

show comments
mw888

A clear hierarchy may be secured through these constraints. That's the unifier - it'd be hard to achieve these three without it.

A one-pager begs of you to find the foundational value simply - no fooling yourself with a multitude of prospects and complexity.

The separable aspect makes explicit the need to build the foundation to stand on its own. You can't lean on the branches prematurely as if features are solid ground.

The single-defining constraint forces one to conceive and recognize the single-most fundamental functionality - and its shape, and its abilities; its character.

CharlieDigital

Constraints are underrated.

The most elegant solutions typically arise not out of unbounded degrees of freedom, but building specifically with a constraint in mind.

I think that this goes with point 1: composing the one pager helps define those constraints.

Abby_101

The constraint I'd add for solo SaaS is "can I find one beta user this week." Time, scope, tech all stayed reasonable on my one pager but a project can pass those filters and still die because no one walks in the door. Adding a distribution constraint upfront forced me to validate the audience before I went deep on features.

perrygeo

I love the one page idea. If you can't spend the time to articulate a page worth of constraints, you're going to flail around discovering them as you go. And these aren't "bugs", they're "oh shit we're building the wrong thing" flaws.

I have no hard data to back it up, but in my experience, projects that take the time to put everyone on the same page conceptually (even if it's a 1 pager, high level, here's what we are and are not doing) end up succeeding far more often than projects that wing it. The wing it projects always end up disappointing everyone who had opinions but never bothered to articulate them.

wanderingbit

We are trying to design our kitchen for a renovation and I can see how these 3 constraints would be useful for us to do for something more about design than software.

I’m gonna go do these…

show comments
gyan

How big is this page and what's the font size?

disciplined

What are hacker news constraints?

show comments
raincole

> The core tech must be separable from the product

I don't know... none of the examples makes sense for me. Especially:

> Google has Kubernetes

I mean, yeah, and? Google was originally a product built around PageRank, the core tech, wasn't it?

show comments
ChrisMarshallNY

I like these. I have never thought about it that way, but I guess that I generally have the same constraints.

esafak

> The core tech must be separable from the product

The biggest product of the century thus, LLMs, are the core tech.

I don't doubt these rules have helped the author, but readers should be mindful when heeding them.

show comments