Everyone has done it, you know you have too. When someone asks you for a status update on a new feature you just finished coding, you say "That's Done!" Think about what you just said for a minute, is it really done? Can someone use that feature in production for its intended purpose? That's really what done means, right? To the end user, done means its up and running, in production, providing value. Code complete is just another stage in the pipeline getting us out to really done.
You may say, that is a semantic argument. Your piece is done, so you get to say done. I would argue, its a mindset discussion. As developers, if we think about our piece, and only our piece, we say done when our piece is done. Agile is about picking your head up and looking at more than just your piece. Collaboration and a sense of unity across the entire product team is critical to a successful agile organization. We as developers need to move away from our tasks as "in dev" and "done". We have to get to the point where we think of a feature in development, or in test, or in requirements. We need to pick our heads up and see the whole picture, not just our piece. Next time your manager or scrum master asks you for a status on a feature you just completed coding, resist the urge. Instead of saying, "that's done", give them the actual status of the feature. Your larger team will thank you for it.