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.
... continue reading