What I'm Thinking About
Treat the first version as a prototype. No matter if it’s an implementation detail or the whole design of the system. The first iteration is always focused on solving the problem. The next ones are aimed at solving it in a better way.
How do we do this? Ask yourself if you had to start from scratch what other approach would you take. Consider what would you have commented if you were reviewing this work. What questions would you have? What would you propose?
In some cases it will turn out that your initial idea was the best one. It’s still worth it to explore others so you’re confident that it was better than the alternatives.
An article worth reading
Production Oriented Development - Building software is different than creating other kinds of products. So we should be creating processes and taking advantage of that. A trend for the past few years is shortening release times and focusing on the production environment as a source of truth.
The culture of using a slow process with test and staging environments is proving to be less effective as we’re trying to work in iterations not Big Bang releases. This article has nice highlights on those topics.
A tool worth exploring
Type Fest - a collection of essential TypeScript types. Why are preset types useful? These are not related to the data of your application but about the different common operations we have to do with it. Making a type readonly, extracting a field from a type or removing it. If you’re a TypeScript user you’ll find it useful.
A quote worth pondering
"The most valuable thing you can make is a mistake - you can't learn anything from being perfect." — Adam Osborne