Optimize everything for shipping. And I mean everything. Work with people who can ship rather than who write beautiful code. When you optimize for shipping, it forces you to laser focus on the core features, and you can afford to make those selected few features damn good.
Fewer features are easier for you, the future you, your users, and everyone involved. Fewer features are infinitely better. Fewer features imply less complexity. Complexity cost time and money. You have neither in a startup.
To reduce complexity, write less code. Less is infinitely more. To reduce the complexity of a code base, make it readable in a way you get a zen feeling after you are done.
Readability matters. A lot. You will be creating, reading, updating, and deleting your code very often. It’s hard to do that when your code is not readable. If you optimize your code for readability, you get a nice byproduct of malleability.
The very definition of product shipping in a startup is chaos. You absolutely don’t know what the users will want in the future. Make your code base malleable. Make each thing so simple and decoupled so you can add, update, modify, and delete things really fast.
“Write programs that do one thing and do it well.”— Unix philosophy