· 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?

"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.

Back to Blog

Related Posts

View All Posts »
Every Optimization Creates a New Blind Spot

Every Optimization Creates a New Blind Spot

Every optimization creates a new blind spot. It's the unspoken tax of systemic design — and it's been killing projects, supply chains, and occasionally, entire populations.

Tesler's Law: Complexity's Enduring Burden

Tesler's Law: Complexity's Enduring Burden

Larry Tesler gave us cut, copy, and paste. He also gave us an uncomfortable truth: complexity never disappears. It just moves. The only question is who gets stuck with it.

AI: The New Steam Engine Trap

AI: The New Steam Engine Trap

Right now, the software industry is about to step on the same rake. Again. We’ve spent 150 years assuming that swapping one component for a faster one would magically fix the economy.