There is a time for everything, and a season for every activity under the heavens…a time to tear down and a time to build (Solomon in Ecclesiastes 3)
Build Things
Our industry rightfully emphasizes building things.
Don’t tell me about your years of experience. Or what programming languages you know. Or the companies you’ve been on the payroll for. Tell me, what have you built recently?
We need to be careful here. It’s less about building for the sake of building and more about building the right things in the right way. Our knowledge of what and how shifts over time. It’s all a continuous process of discovery and evolution.
Demolish Things
In our relentless pursuit of building, we often overlook the equally vital art of demolition.
Unless we embrace a mindset and habit of throwing away the things we’ve built, we’ll end up in tight corners and untenable situations. A “prison” of our own making, so to speak. Not only will it affect your quality of your work life, it will also likely hinder crucial business objectives.
It should be emphasized that as a builder you need to somewhat separate yourself from your work. You made it, but it isn’t you. You can iterate on it; you can throw it away. What you build will likely look very different in two years and someone else may own it. This mindset truly helps when it comes to critique from others and code review sessions. It also helps when it comes time to “throw it away”.
Let me give this special emphasis: When you have your most brilliant moment and you’ve just built that most excellent thing, you need to remind yourself of something. This precious thing likely should and will be thrown away someday. A different future will emerge, hopefully a better one. Rinse. Repeat. Get used to it!
The Joy Of Deleting Code
Let’s not miss the artistry and joy of tearing stuff down. Deleting code, regardless of the author, is a joy. There’s a beautiful simplification that comes with a hefty delete. There’s a release of cognitive load. There’s the satisfaction of knowing you have less code to read, less to maintain, fewer bugs and vulnerabilities, less bogging down on your tooling, and less wasted CPU cycles.
So here’s my suggestion. Keep your eyes open for what you can tear down. Take time to execute and celebrate some deletions for fun or profit.
Conclusion
Let me share three more points that I feel are important:
-
It’s not just about code. Stale documentation, infrastructure, configuration, wiring, and logs are other things that are wonderful to delete. In some contexts, they can be worse clutter than code.
-
It’s not just about deleting. Deleting is an end to a means (a clean, simple, well-honed system). Sometimes what you’re deleting had a really good purpose at one point. Other times, maybe it shouldn’t have been written in the first place. So, we should also celebrate decisions to not write code in the first place. Often, it’s a less noticeable win because you might never be able to quantify the code you avoided writing when you took that left turn a month ago. We will probably never know how many LOC (Lines of Code) we avoided writing with our decisions, but we should not forget that our decisions have consequences in that regard!
-
Take some time to celebrate it with your team. In the inevitable hustle of build, ship, deploy, etc., we need to take some time to recognize the efforts to claw back, simplify, and clean up our systems.
As wise Solomon once said: There is a time to build. And there is a time to tear down.
And when it’s time to dismantle that proverbial “old barn” in your software system, know that the joy of demolition is real, and I’ll be there to celebrate with you! 🎉
