Ship Broken Things
Published on 06.10.2025
Everything you're building is from ignorance. It's ALWAYS over engineered, complex and unnecessary. Here's why:

Assume you're trying to solve a problem P and your solution is S. Assume to reach S, which is your goal, you need to go through A, B, C, D and so on. But its not a linear path. It's a complex graph, because at each step you have n options to choose from.

For example, you're building a car and at step A, you have 10 engine types, and at step B, you have 12 suspension systems, at C you have 8 transmission options, and at D you have 6 frame materials. That's 5,760 paths with just 4 steps. Add one more step with 5 interior layouts. Now it's 28,800 possible combinations and you have a thousand more variables in reality.

speed:
Click play to begin
This was a very simplistic example. In reality, not every path is viable or needs exploring, but you will have exponentially more variables to consider—and many of them are hidden in your ignorance. "You can't connect the dots looking forward; you can only connect them looking backwards." - Steve Jobs As if this wasn't hard enough, many of us try to perfect the solution on top of this variable madness. This is a futile effort. It's like assembling a car in the dark, then discovering you needed a boat. Perfection is the best way to fail. So what's the secret sauce? It's called Iteration. When you're drowning in options and don't know what matters, just start. Pick the fastest path to the goal, not the perfect one. "Action produces information." - Brian Armstrong Only after exploring one path do you gain the context to know what actually matters. Now you see back with full knowledge: what breaks, what users need, where complexity lives. Then you start deleting. Most of your careful early decisions solved the wrong problems. So you delete ruthlessly. "First, make your requirements less dumb. Your requirements are definitely dumb. It's particularly dangerous if a smart person gave you the requirements because you might not question them enough." - Elon Musk Smart people over-engineer because they can imagine more failure modes. Their intelligence becomes the trap: optimizing for imagined constraints. Strip out what you now know doesnt matter. Then optimize what remains. When you do this at every step, you're certainly not exploring the best path. But you're exploring the path that arms you with the right context to improve the next iteration.
speed:
Click start to begin
Iteration over perfection any day. Shipping something shitty feels wrong, and it triggers every engineer's natural instinct to polish it. Perfectionism is optimizing for a fantasy. Your idea of 'perfect' is built on guesses, not reality. And even if you somehow nailed it, time passes. New variables emerge. Your 'perfect' solution is already outdated. Perfection is a static concept in a dynamic system. It's madness. Perfection is like "nothing". It doesn't exist in physical reality. There's always something: atoms, fluctuations, change. Perfection is just an ideal you invented. I used to think "skill issue" when I didn't know how to build X. But after starting, I'd iterate and figure it out. It's not a perfect version, heck it's not even a good version, but it works. Turns out the issue wasn't a skill issue, it was lack of context. I've seen so many cracked builders over-engineer solutions to problems that don't exist because they optimized before understanding. The only way is to ship fast, iterate faster and trust the loop. Do not chase perfection. It's a mirage. Chase the loop. Feel free to reach out, DM me - @matmul.