Ignore hours, focus on collaboration

Here’s a quiz for Agile team members using burndown charts.

What does this picture mean?

Seems pretty good, right? Work is getting done, pretty close to the ideal line. Nothing to fret over, especially if the mood of the team is good.

Now, consider this alternate view of the same team, same sprint:

We’re about to start the eighth day of a ten day sprint… now it looks like panic. At least a few story points are done-done… but clearly the team hasn’t actually finished much of the work in the sprint. Will it all get done? Will it all get done? Are we looking at a mini-death march?

How could there be such a mismatch, and what can we do about it?!?

Advice: Ignore hours

A team I was coaching was really struggling to complete stories at the end of the sprint. They were being very diligent, but no matter “hard” they tried it didn’t change the emergency they experienced at the end of every sprint. In particular, they tried harder to get better at estimating task hours and making sure to level everyone’s hours….

I became clued into all of this when I was asked: “John, do you think 6 hours per day is reasonable?” This was a sure indicator that the team was missing the forrest for the trees – loading individuals with tasks/hours at the expense of a team getting work done. This was setting each individual up for failure: either I can help my colleague/friend… or I work on what I committed to doing! I don’t like no win situations, especially when it hurts people.

My advice was simple. Just for one sprint, try the following:

  • ignore hours, don’t estimate or track then
  • focus on the stories, which one is highest priority
  • encourage the team to work together in every way that makes sense
  • track story point burn down

The team did this, and the result was amazing. Everyone felt free to collaborate and the stories were completed more smoothly. This team did reintroduce some hours back into their process, but they had changed: collaboration and value over hours and tasks.

Note on Kanban: As an interesting note, today most Kanban teams don’t bother with hours, and also don’t estimate stories! (They do often group by size.. so there is still some judgement of effort.) These teams track only cycle time (from start to end) of stories on the board. This gives the same focus on collaboration over hours tracking that I suggest in this post.

Big Data, Little Tests

This is the content for my Agile2012 presentation. (Download BigDataLittleTests-Heintz)

Slides are attached to this post, and these are the GitHub repos:

  • https://github.com/jheintz/sample-hadoop-testing
  • https://github.com/jheintz/sample-riak-testing
  • https://github.com/jheintz/riak-download

Here are the scripts that demonstrate everything:

Hadoop Sample:


git clone https://github.com/jheintz/sample-hadoop-testing.git
cd sample-hadoop-testing.git

git checkout step1 # initial MRUnit tests
mvn test
# eclipse: show mapper
# eclipse: show reducer
# eclipse: show unit test
# eclipse: try open hadoop source…

git checkout step2 # Use Cloudera repo for sources
mvn test
# eclipse show pom
# eclipse: open hadoop source

git checkout step3 # parameterized many tests
# eclipse test ManyWordCountTest.java

git checkout step4 # parameterized non-mr tests for speed
# eclipse test ManyWordTest

git checkout step5 # add cluster test
# eclipse show HadoopClusterBase
# eclipse test ClusterTest

git checkout step6 # add parameterized cluster test
# eclipse test MultipleClusterTest

git checkout step7 # split unit and integration tests
# eclipse show test names
# eclipse show pom failsafe
mvn test
mvn verify

Riak Sample:


git clone https://github.com/jheintz/sample-riak-testing.git
cd sample-riak-testing.git

git checkout step1 # initial test, fails
mvn test
# eclipse show SmokeTest failure

git checkout step2 # add riak downloader
mvn test
# I don’t know why eclipse has maven failure…
# eclipse show riak-build.xml
# eclipse show pom.xml

git checkout step3 # add parameterized many tests
# eclipse show ManySmokeTest

ant -f riak-build.xml stop

Cassandra Sample:


git clone http://github.com/jsevellec/cassandra-unit.git
cd cassandra-unit

mvn test
mvn eclipse:eclipse