Definition of Done, your personal manifesto to deliver better software

Software developers have a reputation for being somewhat careless when answering the question “are you done with this feature”? In most cases the answer comes “Yes, Done” then the developer meant to say “Programming is done but…” and the interest point of the answer the world wants to hear is the state of “Production readiness” including testing, bug fixing and so on. Here comes the “Definition of Done” that needs to be agreed among the involved persons within a Product development process.

Definition of Done aka DoD works different way for several Agile teams, but serves the same ultimate goal for everyone. It should be a satisfaction checklist for software development teams to handover a shippable feature at production. In Agile practices, a shippable feature can be an independent unit of deliverable that is done according to Definition of Done.

In context of a developer, I strongly believe everyone should have his or her very own written form of “Definition of Done” for particular projects, even you are doing freelance or teaming up with others. Before digging into personal DoD, lets learn what others have as their DoD.

In our company at Vantage Labs, we are practicing Scrum since last five consecutive years successfully and each self organizing team settled their own “Definition of Done” at first place.

Here are two samples of “Definition of Done” collected from two diverse teams of products.
The first team deals with Web and Mobile based CRM, they have a decent set as the followings:

  1. Code was implemented.
  2. If required, Unit tests were written and pass.
  3. Committed to source control.
  4. Peer review is conducted; necessary improvements are made.
  5. Deployed on stating server and ready for acceptance test.
  6. QA Scripts developed or manual test scripts documented.
  7. Functional QA was completed; conditions of satisfaction were met.
  8. Bugs from QA resolved.

The second team works with English Grammar Engine and they have their very own set of procedures to meet the Doneness which are as followings:

A unit of work aka. Story is done when:

  1. Code is implemented.
  2. Code is checked into source control.
  3. Code rebuilds from source control both on Windows and Linux.
  4. The tests for defined benchmark sentences have precision over 80% and recall over 60%.
  5. Results are documented on Wiki (benchmark sentences, performance).

The sprint (2 weeks of work for different feature completion) is done (it means that all the sprint stories can be deployed to production) when:

  1. Pass the load test.
  2. Regression tests are successful.
  3. Pass the 5-essay evaluation by the editors.

The first team works with web development and has a classic set of Definition of Done that can be validated against most of their general purpose features while the second team works with backend component and has measurement oriented list in their definition. The first Definition of Done is the most widely used set around.

This context specific simple list of criteria can ensure software quality in a greater extent, as at the end of day the stakeholders will be using your delivered feature. This particular practice of Agile can be adopted separately in generic case as well by a single person. Note that better delivery is a choice.

So, What is your Definition of Done?

Considering yourself for the next Certified ScrumMaster®

Here at BD, Scrum Master certification training is not available and the number of Scrum practitioner company is very limited. However, as an Scrum practitioner over years, I decided to complete the certification and at the same time I had some tour plans going on at the neighbor countries :). I knew that the certification requires 16 hours or 2 days training prior to the online exam with Scrum Alliance (SA), so I was planning to make it in some place at India from where I can easily fly for my desired tourist destinations, obviously it is New Delhi. The SA course finder helped me to find CSM trainings that going to be held within New Delhi.

I have registered to my desired CSM course at SA website and was unable to pay online due to their local payment system at suggested event site allows only cards with Indian Currency (INR). I had contacted with their designated person regarding the fee and they happily allowed me to deposit the fee at the venue. The course has been organized by Unicom and the trainer was Andreas Wintersteiger, (I call him!) the mastermind agile coach. I had gone through other trainers profile at SA website and found him the suitable person to get trained by.

What you need to do to come so far?

– Apply for the VISA of the country you wanted to do your course, in my case it was India.

– After VISA confirmation, use SA course finder to find CSM trainings and register yourself there, make your flight schedule accordingly, atleast reach a day before your class and I believe you can manage your hotel by Goggling.

– CSM course fee varies among providers and might be around 410USD (approx), the fee includes online exam and 2 years SA membership, you will find the course fee along with the training details at SA website. There are early birds discounts as well in most of the training packages.

– The trainer aka. Certified Scrum Coach/Trainer (CSC/CST) shall conduct the course and enroll you for the exam. The enrollment for the exam should be within 90 days from the course taken, in my case it was the second week (meanwhile I was in home ), my trainer registered me at SA for exam. The trainer will provide you with all sort of exam details and pre-exam study materials, no worries :)

– Once you login to SA you will have the exam ready to start, you have two chances within 90 days from the course completion date, but no one needs the second chance here. Trust me, the exam is just a formality and the certification is 35 MCQ questions away. I had 34 out of 35 questions corrected and passed with 97.14%, checkout my score:
Screen Shot 2014-08-21 at 8.02.13 PM

– Exam MCQ questions are very very simple and apply your commons sense type i.e. What is the role of Scrum Master (check one), Who estimates stories etc. You will be given more than sufficient time to complete the exam.

– The CSM Exam is online, can be given from home in pajamas :)

– After passing you will given pdf format signed certification from SA instantly, two years membership and 16 PDU points, checkout mine:
Screen Shot 2014-08-21 at 8.10.12 PM

The certification from Scrum Alliance (SA) should add good values into anyone’s profile.

– Last, but not the least, practicing Scrum earlier in real life should be a BIG plus for you to understand the whole picture.

One thing, learning something and getting certification are different things. Actually, you don’t need certification to use & adopt Scrum and get benefited from it. Good luck with your CSM :)

P.S: Here are few suggested readings for CSM. You might want to checkout my photos during the class at New Delhi, here you go.

Certified ScrumMaster® Suggested Readings

For those who are thinking to give it a shot, checkout the following study materials:

“Do Better Scrum”


–      by Peter Hundermark, a CSC and CST in Africa and Brazil. Provides a set of tips and insights into how to do Scrum well. (Also available in Spanish.)

“The Scrum Primer”


–      by Pete Deemer, Gabrielle Benefield, Craig Larman, and Bas Vodde. An early description of Scrum, written in 2006 by a respected group of CST practitioners. Offers an in-depth introduction to the theory and practice of Scrum.

“The Scrum Papers”


–      compiled by Jeff Sutherland, one of the co-creators of Scrum. A collection of papers relating to the practice of scrum that covers the basics all the way up to advanced topics such as how to scale Scrum.

“Scrum topic pages”


–      by CST Mike Cohn. An online overview of many of the Scrum basics.

“Simple Scrum


–      by Tobias Mayer. A domain-independent overview of the Scrum framework.

6 Cent OS commands you wont regret to learn

uname -p

your processor architecture, you can determine it by entering the command “uname -p” in a terminal, You should see  something like this:

i386, x86_64

cat /etc/issue

To find out your CentOS version just run, you should see something like this:
CentOS release 5.6 (Final)
Kernel \r on an \m

tac myfile.txt
To print a file in reverse order, Just a reverse of cat command.

wall hello everyone
Allows root or other users allowed to issue commands as root to send a message to everyones terminal.

head myfile.txt
To output the first part of files to the terminal, just a reverse of tail command.

source ~/.bash_profile
Reloads bash_profile / profile without starting a new shell session.