Code is never final or perfect.
Changes in technology, user requirements, and new insights all shape a codebase.
Instead of fighting these shifts, lean into them.
Accept that software must adapt to stay relevant.
What is Software Entropy?
“Entropy is a scientific concept that is most commonly associated with a state of disorder, randomness, or uncertainty.” (sources: Wikipedia)
Software entropy is the way code grows and changes over time.
Libraries become outdated, design patterns lose relevance, and new features bring extra complexity.
Like physical systems that drift into disorder if not cared for, software also needs ongoing attention.
Accept that change is inevitable
Some teams try to predict every possibility up front.
Speaking from experience and data, many guesses about the future end up being wrong.
A more effective approach is to focus on the current needs first.
Postpone big decisions if you are unsure.
Later, you can adapt your design and architecture when you know more.
If a solution feels uncertain, hold off. Don’t do it at the moment.
Focus on what you know works now.
Build for now
Your code should solve real problems and bring value to customers today.
If a pattern or library no longer fits, remove it.
Keeping things lean helps your code stay tidy.
Large, firm systems can break when needs shift.
Stay flexible
A flexible codebase is simpler to test and update.
Add only what you need right now.
If requirements change, adjust your approach.
By staying open to new insights, you ensure your software can grow.
Over-engineering can slow you down when it is time to change.
Keeping things flexible lets you respond to real needs instead of forcing decisions too soon.
Embrace software entropy
Embracing software entropy means accepting that your code will never be perfect or final.
⛔ Avoid applying rules and tips blindly and over-engineering your architecture.
✅ Prefer to design and make the architecture that most suits your current needs.
The goal is to build easy-to-read, understand, maintain, test, and extend applications.
📋 Recap
Code is never final or perfect.
If a solution feels uncertain, hold off. Don’t do it at the moment.
Focus on what you know works now.
Keep things flexible.
Embrace software entropy.
How I can help you further?
Become the React Architect at your company! 🚀
👋 Let’s connect
You can find me on LinkedIn, Twitter(X), or Bluesky.
I share daily practical tips to level up your skills and become a better engineer.
Thank you for being a great supporter, reader, and for your help in growing to 16.5K+ subscribers this week 🙏
This newsletter is funded by paid subscriptions from readers like yourself.
If you aren’t already, consider becoming a paid subscriber to receive the full experience!
Think of it as buying me a coffee twice a month, with the bonus that you also get all my templates and products for FREE.
You can also hit the like ❤️ button at the bottom to help support me or share this with a friend to get referral rewards. It helps me a lot! 🙏
👏 Weekly Shoutouts
How Shopify Handled 30TB per Minute With a Modular Monolith Architecture by
5 skills to develop to grow from Senior to Staff Engineer by
Transaction Isolation only makes sense if you understand Read-and-Write Anomalies by
How I Achieved More in 2024 (and It’s Not by Working Harder) by
How I'm advancing my career without neglecting my life. "New year's resolutions" done right. by
Code is never done, and that’s okay because the other option is over-engineering, which just makes life harder down the road.
Thanks for the mention, Petar!
The way I like to think about this is that if software had to be perfect before releasing it, the costs of testing everything is perfect would be too high.
We can reduce the costs by putting measures to prevent things from going too badly. This allows for safe iterations without killing the company on a mistake
Thanks for sharing my article! 🙏