Sunday, July 28, 2013

The ScrumButt Test (2): Working Software

The second line in the ScrumButt Test says: Software must be tested and working by the end of each iteration.

This is the second of three items that confirm that the team (project) is “iterative”. Then there is a series of small tests (within the ScrumButt Test) for whether the team is really doing Scrum (in our opinion, quick test).

Why this second line (element)?

As with almost everything in Agile, there are many good answers to that question. I will highlight three.

1. We can get better feedback. Only by having the software tested and working, can the Product Owner and the Stakeholders give the best feedback. And we want short, small, fast feedback: “Yes, it’s what I said, but now that I see it, it’s not what I want.” When it works, and they put it together with everything else that is working so far, then they can lift their eyes up from the weeds, and start to see if a real customer product is starting to emerge (be formed). Sometimes this allows them to creatively discover other visions for the product (or improvements to the vision of the product).

Arguably, one could get feedback without being fully tested. I am not particularly impressed by that argument, but I’ll leave it for now. But my next reason for this line in the ScrumButt Test addresses that argument.

2. Working (fully tested) software is the primary measure of progress. This is straight from the Agile Principles that were agreed when the Agile Manifesto was written.

And why is that important or right? Well, before that, many were measuring progress by how much paper was churned out, or how many detailed tasks were done, or by the dev team saying “We’re 63.2% done”. None of these were ever very reliable (at least in my experience and that of many others). Certainly they had minimal meaning to a business side person who had to manage the risk of delivery by a specific date.

OK, so what does it really mean to have working, fully-tested software? Well, each team must define at some level of detail what “done” means. A company, at a slightly higher level, might also have a standard definition of done (with perhaps some wiggle room for special cases).

That definition of done would typically include (or at least address) things like:

  • coded (duh!)
  •   automated unit tests built, in the configuration management system, run, fully passed
  • refactored (anything that needs to be refactored has been: code, design, arch) Note: some refactoring might also occur after some things below
  •  put into the integrated build and a new (QA?) environment (the new story does not break other things, etc.)
  •  automated functional tests built, in the CM syetm, reviewed by business guys, fully passed per a QA person
  •  other testing done (more variable by effort…eg, some performance or exploratory testing)
  •  business side testing and review (maybe by the Product Owner…full thumbs up)
  •  fully documented (any docs that need to change because of this story have been changed and reviewed and are perfect)
  •  no outstanding bugs (or none of any consequence)

If a story passes the above criteria, then a business person (in most projects) can assume a fairly clear and small amount of additional effort to take that story or feature live. This knowledge can be very powerful and give the Product Owner the courage to identify more early releases.

3. Working and fully tested software is necessary to know (meaningfully) the team’s velocity. (Velocity is really a later element in the ScrumButt Test, but this line in the test is setting up the team to have a meaningful velocity.) Velocity is useful in many ways, but I’ll just explain it with the family vacation metaphor. When the kids in the back seat ask “when will we be there?”, if I know we are going 60 mph (our velocity), and it’s 180 miles to go, even I can give a pretty accurate answer. Good enough to make mission critical decisions like whether to pull over for a potty break. And, as it turns out, good enough for most real business decisions. And, as it turns out, giving us about as info with as much quality as we can get.

Friday, July 26, 2013

Do we need an Impediment List? Why "yes"

Yes, we need a public impediment list. Every Team does.

Why?

One argument against is that all impediments should be eliminated immediately.  Yes, if this were possible, this should be done.  But I think that thinking assumes an incorrect view of what impediments are.

Yes, it is true that some obvious impediments only appear from time to time. If if you only get small ones that appear at most once a day, then ‘fix it immediately’ is the right answer.  And you need no list.

But I think we should have a totally different attitude toward impediments.

As with Lean, we should give ourselves the ‘perfection’ challenge.  That is, we do not indulge in the fantasy that we will ever become perfect, but we challenge ourselves to strive toward perfection.  Or, more concretely, to become the best Scrum Team ever.

So, an impediment is anything that can be improved that might lead us to becoming the ‘perfect’ (best) Scrum Team.

And, of course, nothing around us, and nothing that we do, is perfect. So, everything needs to be improved.  Even Michael Phelps can swim a better race.

So, then the public impediment list really should be just the top 20 things we should fix. (If we listed everything, we might have 900 items, but in this work, it helps not at all to have a list of 900.  Just the top 20 will do for now, and that short list will be helpful.)

Impediments can be anything — anything — that is keeping the team from being perfect. Missing fun, blockers of stories, people issues, slow CI, managerial interruptions, task-switching, poor organizational incentives, bad user stories, weak PO, waterfall culture, Scrum not fully implemented in the organization, lack of urgency for change, bad corporate culture, a culture that requires hiding any ‘failure’, etc, etc, etc.  Anything. Of any type.

Also, many impediments are quite difficult to fix.  Might take time.

Also, in my experience, many quite obvious impediments are begging to be put on the list, and people pretend that the ‘rock’ is not there.  In part, because no one gave them the notion to start a list.

Lastly… Some complain, rightly in some cases, that an impediment list implies inaction on the impediments.  But of course, the purpose of the list is NOT to stop action on fixing or ameliorating them.  In fact, the list is supposed to help us attack them.

So, have a list. Attack them. Aggressively.

Thursday, July 25, 2013

Impediments ( or symptoms of) - Montreal Class July 2013

Below is a list of ‘failure modes’ for projects, as identified via the experience (in waterfall, whatever, agile or scrum) by the people in the Montreal July 2013 class.  These are not in priority order.  They might suggest certain impediments to add to the list for your team.

Lack of communication

Too many impediments

Not responsive to change

Scope creep

No (or different) work approach

Too much indirect communication

No budget

Bad (or lack of) leadership

Poor quality

Too much process

Toxic teammate

No access to client

Too much documentation

Too many meetings

No teamwork (individual work silos)

Change in requirements

No Org support

Unsatisfied customer (at the end)

No vision

Unclear requirements

Delivered late

Too little experience in Team

Lack of planning

Unrealistic timelines

No fun

Lack of consistency

Hidden agendas

Lone wolves

Switching team members

Micro-managing

Too many chiefs

Over-work

No Buy-in