Manage your code as a successful restaurant
Have you ever noticed that a successful restaurant has a shorter menu? Especially when compared to those who are struggling.
When you keep things simple, you focus on fewer things. You give your best and you can focus your effort. You can try to improve and perfect all details.
But, when life doesn't work as we expect, we start throwing new dishes into the menu. Expecting to please everyone.
Spoiler alert: When you build something to everyone, you build it to nobody.
This isn't just the restaurants' reality. We see that in software too. When trying to convince new customers, throwing features into a product is usually the way to go. And it's hard to find a Product Owner who doesn't fight to have the team focused on new features.
What we should all be doing is to focus on what we have and what customers love. Those features have a margin to improve. Don't bring a new feature into the product just because a customer needs it. Bring it because is inevitable. Because it's obvious that your software will be so much better. Because you believe that you are in an especial condition and nobody can do it better than you. And don't forget to throw away stuff that doesn't "spark joy".
We can expand this concept to multiple software parts. High level, to a low level. Decompose the code in smaller objects or functions. Create focused "restaurants" specialized in one task. If you want Mexican food, you don't look for an Italian restaurant.
Treat your code as a garden, which deserves care and dedication. Don't write it and ignore it until a bug arises.
A chef who creates new dishes every single night will create a few stunning dishes for sure. But also, a vast number of massive failures.
Having a continuous improvement mindset is what makes us better than the rest.