Up at 5AM: The 5AM Solutions Blog

Done, Done, Done, and Done

Posted on Tue, Dec 15, 2009 @ 01:01 PM

In the agile world, the definition of done tends to center around backlog items and the iteration boundary. The difficulty I see with such definitions is that they are not granular enough for individual developers. Development work proceeds commit by commit, not user story by user story. Our best practice is for a developer to commit at least once a day, so we don't lose work to vagaries such as hard drive failures or accidental deletion. This has led us to multiple definitions that break down work from the user story to each commit. At 5AM, code can be "Done" for 4 purposes, of increasing rigor. (1) Commit to a private branch, (2) commit to mainline development branch, (3) resolving a subtask, (4) resolving a backlog item. Here's what each definition entails:

Private branch commits: Commits to private branches can be made at any time, without restriction. The code doesn't even have to compile. This permits daily checkpointing and keeps us from losing work.

Mainline development commits: Commits here affect other team members, so we have several requirements. Every commit must be tied to a tracker item. Peer review is required, no matter how minor the change. Code must pass continuous integration (CI), which brings in things such as coding conventions and the regression suite (and the sombrero). These requirements ensure traceability, that CI always passes, and that at least two eyes have seen every piece of code.

Resolving a subtask: Individual tracker items are the lowest level of granularity we typically talk about at daily standups. Resolving subtasks requires not only committed code, but high quality unit tests, removal of fixmes in the code, and known limitations or escapes are captured as additional subtasks. We don't measure velocity here, but we have found that the team gets a good sense of progress by watching subtasks move to resolved.

Resolving backlog items: This is where most scrum definitions of done center, and where the team measures velocity. Our definition is similar to others - beyond resolving all subtasks, resolving a backlog item requires that: Functional and non-functional requirements have been met. Integration tests exist. Escaped or deferred functionality is captured. In totality, the code is deployment-ready.

We're done, done, done, and done.


Diagnostic Tests on the Map of Biomedicine


Download the ebook based on our popular blog series. This free, 50+ page edition features updated, expanded posts and redesigned, easier-to-read maps. 

FREE Biobanking Ebook

Biobanking Free Ebook
Get this 29 page PDF document on how data science can be used to advance biorepositories.

 Free NGS Whitepaper

NGS White Paper for Molecular Diagnostics

Learn about the applications, opportunities and challenges in this updated free white paper. 

Recent Posts