title: Your tech stack is not the product
url: https://hoho.com/posts/your-stack-is-not-the-product/
hash_url: 877b1e2932
archive_date: 2024-01-09
og_image: https://hoho.com/images/building-ducts_hu595c7437e16b1c00c1f5d55887980baf_1496628_800x400_fill_q75_box_smart1.jpg
description: Early stage technology decisions must be, uncomfortably, a means to an end.
favicon: https://hoho.com/favicon-16x16.png
language: en_US
If you are the technical co-founder or early engineering lead at a startup, and you want to talk about your microservices, hand-rolled CI/CD, in-house monitoring stack, or any other unique part of your stack, I will say: Cool. Let’s riff. Take me deep, I’m ready.
But there’s something I’m likely to tell you in return, something I’ll probably insist you’re overlooking and need to internalize as soon as possible: Your technology stack is not the product.
A mindset of technology being the means, not the end, is uncomfortable. But it will help you stay focused on what matters most (the product and your customers), avoid wasteful misadventures, and maximize the company’s chance of success.
At most software startups, customers typically don’t care if your product runs on Heroku, Kubernetes, or a really brittle singly-homed machine in Joe’s closet. No purchasing decisions hinge on your commitment to write servers in Rust or use Nix for hermetic everything. And although they might exist, I have sadly never had a customer write a testimonial for the elegant collection of internal services involved in responding to that single HTTP request.
No; customers are not paying for, nor give a shit about, these things. Sorry. It’s still cool stuff. It’s just not what you’re selling.
Customers want software that delivers problem-solving impact. And at the early stage, which is all the way until you’ve reached product-market fit, they’re almost certainly not getting enough, fast enough. You should be spending as much time as you can at this level of the stack, The Product: thinking, building, learning.
So what then, is that it? Is Kube always silly and Joe’s closet machine always good? Am I saying just YOLO it? Of course not.
There are still better and worse decisions. Being able to make good decisions, ones that maximize product impact, starts with intentionality: realizing how and when you as a leader are actually making them.
Many of the most consequential technology decisions happen implicitly, without even realizing a decision is being made. This is especially true when the team is small and everything is a green field. For example:
These decisions glide through so easily because they feel good, fun, and natural. There’s probably nobody else around to notice! And they can often be the right decisions.
But there are many instances where an innocent, ill-considered early decision turned out much worse over the longer term. It becomes a time-sucking, success-hindering mess requiring costly correction later. I’ve certainly been responsible for my share of them.
How do we get out of making these sort of “just because” decisions, and increase our chances of success?
A good technology decision—one that is more than a “just because”—is decision that can be connected to an overarching long-term goal. As a technology team, why do we exist?
Set technology goals, early, which answer that question and which will be used guide technology decisions. Here’s a starting set:
Our Technology Goals
- Ship the product. Frequently and reliably.
- Support growth. Be able to bring in more people, gradually, that can do (1).
These might seem unrealistically simple, but it’s pretty easy for me to connect all variety of technical decisions to these.
They work well at a later stage, too:
Best of all, by keeping “the stack” out of the picture, these goals make it clear where your brainpower is best focused: on keeping the product moving and improving. The stack is but a means to that end.
Now you can start evaluating some of those concrete decisions the same way:
Goal alignment moves the “why” behind your decisions from “because I’m awesome and have great instincts” to “it’s what we need, now”. (You are still awesome.)
Still, there will be situations where multiple options would seem to meet the goal. How do you make a choice when there is not clear winner?
Goals alone tell us what we want to achieve, but not how. Pair your technology goals with a set of values that accelerate the process of picking “the how”.
I usually start with a set something like this:
You don’t have to use my values as long as you set some. There are plenty of examples out there. An old friend turned me on to “even-over” values, which put two virtues in tension (to emphasize the primacy of the first). Someone even built an aggregator of values by company so you can select your next job accordingly. Go be you. Have fun with it.
The important thing values should do is create cultural license for breaking habits and instincts that might send us in the wrong direction. Make it okay to say “we’re not Google”, or, “we’ll solve that later”.
Panicking about the “simplicity” of the stack this would lead to? Worried that when you reach scale, the PaaS bill will be through the roof? Upset that you’ll have nothing crazy to blog about for years?
Relax. You will still own the technology strategy. You will be making decisions continuously, and have both the right and the obligation to make changes when needed.
But your stack is unlikely to ever be the “main character” your customers rave about it. At best, only its qualities are what stand out. That’s a good thing. Feel good about keeping it that way.