· Systems · 4 min read
The Great Tech Lie: "I'm Done"
"I finished" is the most dangerous lie in tech. In software, "Done" is a spectrum. Are you shipping a Hope-Driven Deliverable or reaching the true peak of Triple D?

The Great Tech Lie: “I’m Done”
We’ve all heard it. In fact, most of us have said it while staring blankly at a monitor at 5:00 PM on a Friday. Two simple words that carry more weight than a legacy database migration: “I finished.”
But in the world of software development, “finished” is a spectrum. And usually, it’s a spectrum that starts at “I just stopped typing” and ends somewhere near “I’ve documented this so well that even my grandmother could deploy it.”
The Frankenstein Special
Before we look at what professional completion looks like, let’s acknowledge the masterpiece we’ve all seen at least once: The Hope-Driven Deliverable.
You know the one. It’s a majestic disaster—a sprawling monstrum of logic held together by the digital equivalent of chewing gum, three dried-out rubber bands, and a dangerously unhealthy amount of optimism. It’s the kind of code where the developer pushes the commit, closes their laptop, and walks away slowly as if they’re exiting an explosion in a Michael Bay movie.
If you look closely at the “architecture,” you’ll see hacks piled upon hacks. It works… technically. It works as long as the user doesn’t click ‘Submit’ too fast, the server is located in a specific time zone, and the wind is blowing from the Northwest. To the person who wrote it, it’s “done.” To anyone else, it’s a ticking time bomb waiting for the first unlucky soul to run npm install.
The Definition of Done (or: The Quest for DDD)
In high-functioning teams, we talk about the “Definition of Done” (DoD). But if you want to reflect the actual, often painful reality of the software life cycle, you might want to introduce the “Triple D” approach — Done, Done, Done.
Why the stutter? Because one “Done” is rarely enough to survive contact with reality. Think of it as a progression of maturity for your code:
1. Done: The Mental Alignment
A feature reaches the first “Done” when it is actually, precisely described. This is that rare, almost mythical moment when the acceptance criteria are clear, and everyone—from the PM to the dev—shares a common level of understanding of what we are actually trying to build. No assumptions, no “I thought you meant X,” just clarity. At this stage, it’s just Done.
2. Done Done: The Readiness
The second “Done” happens when the development is finished and the feature is ready to be kicked out of the nest. This means it has survived the gauntlet of testing—both the automated checks and the manual poking—that your organization requires. It’s polished, it’s stable, and it’s ready to deploy. We can now say our work is Done Done.
3. Done Done Done: The Reality Check
The last and ultimate “Done” is the only one the user actually cares about. This means the feature is delivered, live, and confirmed to be working as expected in the wild. Only when the final user gets the actual benefit (and the system doesn’t crash) can we reach the final peak: Done Done Done.
Summary
This DDD approach isn’t meant to replace your basic Definition of Done. Instead, think of it as an appendix—a way to detail the team’s mission. Just as a company strategy gives depth to its mission statement, the Triple D elaborates on what it truly means to cross the finish line.
So, the next time you’re about to announce that you’ve “finished” a task, take a look at your creation. Is it a solid piece of engineering that has reached the third “Done,” or is it still just a monster held together by gum and prayers?
Because in this industry, “Done” shouldn’t mean “I’m tired of looking at this.” It should mean “The user is actually using it.”
And if that sounds too hard? Well, there’s always more chewing gum.



