The Definition of Done

1:33 ·YouTube·Instagram·LinkedIn·X·Spotify

Done is a claim about reality, not about effort.

One of the most common traps that I see software developers falling into is considering something as done when it is clearly not done.

  • If it only works on your machine, it’s not done
  • If it hasn’t been tested, or there’s not been multiple rounds of feedback and iteration, it’s not done
  • If the pull request is not merged yet, it’s not done
  • If it’s live on dev or staging but not in production, it’s not done
  • If you’ve done your part, but another developer still has to do theirs, it’s not done
  • If it’s deployed, but still not available to the users it’s meant for, it’s not done

If you’re a software developer, I advise you to use the following definition of done.

It is done if it works on all supported devices, it has been tested with multiple rounds of feedback and iteration, the PR is merged, your team’s related work is also done, and it is live in production and available to the users.

And by the way, AI cannot really tell you when it is done either. You have to be the one to tell the AI when it is done. And guess what? If you believe the AI when it tells you that it’s done, then yes, you are the one who has to be afraid of AI taking your job.

Done isn’t when your work is over. Done is when value is created in the world.

So please tell me again, are you done?