“Definition of Done” is a common term used in agile development. It is a simple phrase, yet very powerful. Many of us ignore this, until we understand and realize that it is happening all around us.
What is your definition of done?
If a module has been analyzed, programmed to specifications, is it considered done? How about testing? integration? documentation? acceptance testing? When do you say something is actually “done”?
Is your definition of done the same with the rest of your team members? Here’s one story that is common in an IT workplace:
PM: Hello, are you done with your module?
PM: Great! let’s deploy it today.
DEV: What?!? But it hasn’t been tested yet?
>> Both are now confused. <<
There are two (2) important lessons I’d like to share from this simple concept.
(1) Ensure everyone in your team has the same “definition of done”. This ensures that everyone understands the team status. If necessary, create a checklist as a guide for everyone.
(2) Extend your “definition of done”. Many programmers define “done” as completing the codes based on the specifications. Try extending their definition by adding items (e.g. javadoc, unit tests) on every iteration. Not only you improve software quality, but you also improve developer skills and discipline.