When was the last time it took you more than 2 weeks to ship a feature?
I've stopped using the word "done" to refer to software. Software is never "done." Features are never "done." There are always defects waiting to be found and fixed. There are always new features to add, and enhancements to make.
At D-I, we use the word "ship" to describe the point in time at which something is good enough to give to consumers.
Thinking about features as "done" keeps us from "shipping." "Done" implies that we can't revisit the feature to improve it later. "Done" implies perfectionism. Perfect is the enemy of good enough.
It turns out, acceptance criteria are the key to avoiding the "done" trap. It's a type of contract. Before you start coding, you define the point at which you stop coding. When all the acceptance criteria is checked off, you "ship."
"Done" invites another feedback loop after the contract is met. We hear statements from stakeholders like this all the time:
Well, it meets our expectations, but now that we see it, it's not good enough.
How much additional effort would it take to add __ feature?
My response. "Ship it," and use the next iteration to make it better, then "ship" again.
Ship. Ship. Ship. Ship. Ship.