The Engineer's Guide to Decoding Done

Find out why for an engineer, 'done' isn't the finish line.

In most jobs, done is a simple word. It means finished. The task is complete. But if you’ve ever worked with a software engineer, you know it's a little more complicated than that. When an engineer says something is "done," it's not the end of the line. It's more like a milestone. It means the code for a specific feature has been written. But that's just one part of the journey. The code has to go through a lot more before it's actually ready for people to use.

The "Works on My Machine" Problem

The most common joke you hear in engineering is, It works on my machine. This is what happens when something is "done" but not really. The developer has the code working perfectly on their computer. But when someone else tries it, it breaks. Why?

Maybe the code needs a depenedency that the developer has but no one else does. The code is "done" in one place, but it's not truly ready to run anywhere else.

The "We'll Test It Later" Problem

A lot of times, code is "done" but untested. The engineer wrote the code and it seems to do what it’s supposed to. But what if a user does something unexpected? Does the code still work? Without automated tests, we can’t know for sure.

When something is "done" without tests, it's a bit like building a bridge without checking the foundation. It might look good, but it's fragile. And when it breaks, it can be a lot of work to fix it.

The "Deployment" Problem

OK, the code is written, it works on a different machine, and the tests all pass. Is it "done" now? Not quite.

The code still needs to be deployed. This means getting it out to the machines/servers so that everyone can use it. This process can have its own issues. The deployment might fail. A new bug might show up. A lot can go wrong. So even after all that work, "done" is still a bit of a moving target.

Why It All Matters

An engineer knows that "done" isn’t the end. It's a signal. It's a signal that now is the time for testing, code reviews, and deployment. It’s the moment to make sure the work is actually ready for the real world.

The word "done" is a lot like the word "just." Both words sound simple and harmless. But in our world, they are a sign to pause and think. They are a sign that the simple request or task might actually be a lot more involved than it seems. And that’s why we pay attention to them.