Paul Hammond's Blog

Agile, Software and Life


Feed your aggregator (RSS 2.0)


individual post icon

In your personal life, when you start a task, I would make a guess that you are normally pretty clear in your mind about what steps you have to take to be finished.

Painting your living room might involve moving some furniture, masking the edges, painting a number of coats.  You also need to perhaps choose and buy paint, find some brushes.  You need to remember to clean your brushes when you are finished, and maybe tidy up the dust sheets.  Not only is it easy to think through the steps, it is also fairly obvious to you if you miss something out.  The furniture may be in the wrong place, there may be a dust sheet where the rug used to be, perhaps the brushes are still in the sink, preventing the washing up.  Even if two or three people help out, it is still reasonably easy to know when you are finished.

When writing software, it is invariably much harder to pin down everything that needs to be completed in order to call things finished.  Additionally, it is not so obvious when you haven’t managed to complete everything you needed to.  You won’t trip over those 40 open issues when you walk into the room.  That unfinished documentation doesn’t sit in the kitchen sink waiting to be discovered and cleaned up.  On top of that, it seems that different individuals in a software team have different ideas of what the things are that need to be worked on to call something complete.

This was one of the situations my team struggled with – an incomplete and differing understanding of what constitutes done.

Defining “Done”.

In order to overcome this, the team went through an exercise together to define what “done” means for our team (thanks to Mitch Lacey for the technique).  This exercise has three parts, a brainstorming session followed by categorisation and then an annotation session.

Brainstorming: get the whole team into a room, and give everyone a pad of post-it notes.  Ask everyone to write one thing on a post-it that needs to happen for their software to be done.  For example “write code”, or maybe “be bug free”.  When someone writes an item, they throw the post-it in the middle of the table and shout out what they wrote.  Don’t worry about duplicates or uniqueness, just churn out the ideas as fast as they will come.  Cover every base – documentation, testing, deployment, customer interaction, operational issues – everything that people can think of for their software to be maximum quality and shippable (or even shipped!).  5–10 minutes is probably enough to exhaust this exercise.

Categorisation: now you hopefully have a mountain of post-its (I think our team had well over 70).  The team should categorise these buy clustering similar tasks together on a white board, removing duplicates as they go.  This should give you a draft set of “done items”.

Annotation: finally, the team should create a “done list” document by copying down each post-it item, discussing what it means (and retitling it if necessary), and then adding a sentence or two to ensure its meaning is completely unambiguous.

The “Done List”.

Your team now has a “Done List” that was collaboratively produced, and has team-wide buy-in.  This can now be used for two things – a reminder list for when you are planning to ensure the team is not forgetting work that needs to be done to be complete, and a checklist to use at the end to ensure the team really has done everything necessary.

Benefits.

There are a number of benefits to using this technique:

  • Everyone in your team knows the bar they are striving to reach.  In fact, they helped create that bar, and all bought in to the list that was created.
  • You can articulate, both inside and outside of your team, the exact goals your team has when shipping high quality software.
  • You have a great "soft" tool for ensuring you don’t forget things when planning.  This can help improve your estimation also (more on this in a later post).
individual post icon

My wife managed to hurt herself yesterday in a way that makes me cringe every time I think about it.

We are currently visiting friends just outside Clonakilty in Southern Ireland and had planned to spend the weekend camping in Killarney.  After a ton of time packing up the cars and getting prepared, we were ready to leave.

All my wife had to do was close the gate behind us as we drove out of the yard.  It is a big 5 bar farm gate, with a sheet of metal mounted on the front of it to prevent the various pets from escaping.  The metal hangs down probably an inch or so below the bottom bar.  Laura was closing the gate by walking forwards, pulling the gate behind her.

She managed to pull the razor sharp metal sheet on to the back of her heel, creating a large gash that bled like crazy!

After sitting down for a while, and trying to stop the bleeding, Laura was all set to "stick a plaster on it, and lets go camping".  I was a little less convinced, so we headed to the local doctors.  5 stitches, 1 tetanus jab and a crutch later, and we are back at the house dreaming of what it would be like to be waking up in a field this morning.

So, I challenge you to think about hacking at your Achilles heel with a lump of rusty metal without cringing.  I have been shuddering on and off all night!

individual post icon

I posted a while back about fantastic customer service from Bose.  Well, they've managed to impress me again.  My headphones developed an annoying crackle when you moved (presumably a dodgy connection internally) so I packaged them up and sent them back to Bose.  Within 4 days, another brand new pair was sent back to me!  These guys are great...  :-)

individual post icon

Microsoft released the beta of Windows Live Writer a couple of days ago.  I thought I would do the "corporate thing" and give it a go.  It looks really nice.

I have used a few different tools in the past to post to my blog.  BlogJet is an excellent tool, and let me do just what I wanted.  Windows Live Writer does look a little bit like BlogJet in places (particularly in the Category selector), but it has some great value-add features that I am enjoying.

My favourite one so far is the true WYSIWYG editing.  When you set up your account in the tool, it goes off and downloads the CSS and HTML for the blog to use at edit time.  Right now, I am writing this entry and the heading and fonts all look exactly right.  Even better, press Shift-F11 and it will preview your posting IN PLACE in a downloaded version of your real blog.  Nice.

It has some good photo publishing features, and a feature to insert a Live Local map inline in your blog entry.  Just like this one, showing where I am writing this posting!

 I set it up to work with both Spaces and dasBlog with very little effort, so it gets top marks there.

There is also an SDK available so that developers can add capabilities to publish additional content types.

A big thumbs up rating from me - give it a try!

individual post icon

There is a great article by Robert Holler (president and CEO of VersionOne) over at the Agile Journal website that talks about the 5 C’s of Agile Management.

In the introduction to the piece, there is one sentence that I found very interesting: “Yet individuals with the desire to change the fundamental rules of the software game and accept the empirical nature of software development are faced with numerous opportunities.”

This one sentence sums up very well two of the major realisations I have had over the past year or so of “Agile discovery”. 

Firstly, in order to be successful with Agile I believe you need to allow yourself to throw away everything you knew from before and to start your thinking again, from a very basic level.  I am not saying there is no place for the years of experience you already have in the software industry – of course this is highly valuable, and key to continued success.  But unless you are willing to challenge all of the norms you previously worked within the confines of, I do not believe you will fully reap the benefits Agile has to offer.

Secondly, writing software (as with most things you do in life) relies on leveraging your finely tuned common sense!  Understanding that requirements ALWAYS change, estimation is ALWAYS imprecise, trust ALWAYS gets tested between the various protagonists of a project (both internal and external to the development team) is key.  Yet we often find ourselves looking for more ways to combat these things, more processes to mitigate the risks and address the dependencies.  More buffering to “guarantee” our success.  We hide from the reality that some of these things can never be managed!  The word “accept” that Robert uses is pivotal – until you accept that software development is empirical in nature, you cannot possibly maximise the benefits of Agile to your team.

Robert articulates the 5 C’s as Courage, Context, Course, Cadence and Cost.  As a manager in an Agile organisation, I will definitely be coming back to these 5 concepts again and again when thinking about how we can continue to improve and successfully deliver on our commitments to our business.

 


Search phammond.com.
Blog Post Calendar
<March 2010>
SunMonTueWedThuFriSat
28123456
78910111213
14151617181920
21222324252627
28293031123
45678910

Month View
Images from Flickr
{ paul hammond }. Get yours at bighugelabs.com/flickr
© 2010 Paul Hammond Send mail to the author(s)

Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.

Sign In