One of many InterestingQuestions. I ask this often of creative people, or developers who think of themselves as being primarily creative. It often results in a thoughtful pause. I asked this of Sumner Stone, a type designer for Adobe, after a lecture on the digital type design process - a process with much artistic iteration. His answer was similar to that given for some software projects: "type designs are never really finished, they're just abandoned." -- DaveSmith When someone cuts the power/takes away your computer/kicks you out the door. ''The same way you know you aren't done.'' You're done when you hear "ping". ''Actually I think the sound is more like 'ting''' When you reach the bottom of the page. ---- ''The software isn't finished until the last user is dead.'' So all I have to do is kill all my users and then I can go home? * Implement the RemoteStrangulationProtocol ... ---- You're done just a short time before you've done too much. Go into too much detail and then summarize. Partition beyond the primitive and level up. Split the atom and duck! Seriously though, I know I am done when the marginal cost of doing more exceeds the marginal utility. The marginal cost of doing more is, from moment to moment, generally zero (the QuantumTheoryOfTimeRecording). The marginal utility: generally positive. Therefore I am, generally, never done (until it's time to go home). ---- I had a discussion with a project manager a few years ago: She was very frustrated and asking "when is this project ever going to be '''done!?!?!?!'''" - The users kept asking for changes (additional features) after the product was delivered. I explained to her that the project will be done when it's dead. In "live" systems that people really use, the business people will constantly be thinking of new ways to use the product; new things to do with it. This is a good thing. ''(For example, it keeps us employed! ;-)'' The project is done when they stop paying us to make changes. ''(And, typically invite us out the door. ;-)'' -- JeffGrigg ---- You're done coding new function when the tests run. You're done refactoring when the code is OnceAndOnlyOnce. At that point, the software is done. -- RonJeffries ''How would you apply that rule to a typeface design?'' Wouldn't. Nor to a painting nor a poem. ---- HowDoYouKnowWhenYouAreDone rhymes on HowDoYouKnowWhenYouHaveQwan. :-) You hope to have achieved QWAN for your program when the tests run and everything is OAOO. If you still haven't achieved QWAN, however, you are not done yet, no matter what any metrics say (same for the poem). Right? -- FalkBruegmann ''Not me. I was asking how I know when I'm done, not how I know when I'm QWAN. I'm a bear of little brain, QWAN is beyond me.'' In almost all cases, when your tests run and everything is OAOO, you know you have achieved the level of quality that lets you say "I'm done" with good conscience. But then, once in a while, you might notice that a non-functional requirement is violated that you can't write a test for, or the interface now looks just plain ugly, and you are ''not'' done. I'm a bear of even smaller brain, and I don't know how to put a name to, or even devise a test for, all of the thousands of little things that might keep you from being done, apart from "You'll know it when you see it." -- FalkBruegmann ''Does this remind anyone else of that Almost Live sketch, "Mind Your Manners with Billy Quan"?'' I'm done when I get tired of mucking with it. I'm done when I can't think of anything else that it needs, or when no one complains about it being broken, or when no one starts a question with "can it do ....?" -- DonaldNoyes ''When it includes an e-mail reader. :-P'' ---- You're done when if you added any feature you would abandon part of the user base due to bloat. You hear me Adobe/Winamp/Skype! I'm warning you! ----- See QualityWithoutaName