Moving Fast and Breaking Things

Releasing code as fast as possible is taboo. As a software engineer, you are expected to design and test every aspect of your program before pushing it to a production environment. You can spend weeks thinking about the best way to solve a problem. Back in engineering school, our teachers asked us to write algorithms using a pen and sheets of paper. You had to get the code right on the first try because otherwise, your code wouldn't work. We were miles from the ethos of Facebook's early days: move fast, break things.

It's understandable. When you accept a job position, you have to improve the company's codebase without disrupting the customers. Bugs get in the way of an optimal user experience, and squashing them is how you scale.

When you make digital products from scratch, however, you can't afford to spend weeks researching the best tech stack or writing functional tests. The reason is quite simple: your product is meant to change fast. There is a non-negligible probability that the requirements of yesterday will disappear tomorrow. Iteration speed is of the essence.

One thing I learned from writing a book: you have to release the first draft as fast as possible, even if it's bad. You have to get important code out of your system or you will nip it in the bud.

You have to do your best with what you already know and have, and confront your stuff to users. Lay down a three-day plan consisting of a minimal set of user stories and launch something. As Stephen King would say, kill your darlings. Once you've done that, you can get back to your first draft and edit it until it feels right. Refactor, cut code, clarify, and write unit tests if you want. Always move fast.

I've been there. I plead guilty. It's always more comfortable to plan ahead, but I've learned that my best apps and features write themselves. We just have to start.

Many would disagree and think in terms of best-effort: "give time for the idea to mature". It's a good concept to apply in general, but sometimes you have to follow your heart. Wait for your idea to grow if you can, but don't let inertia take over. Assess the risk, make assumptions, and place your bets.