Cause and effect in retrospectives

Thanks to Rachel Davies for sharing her approach to constructing a diagram of effects.

Rachel proposes that the diagram of effects can trigger a team to discuss how a variety of issues relate and goes on to highlight advice from Bas Vodde and Craig Larman in their first book “Scaling Lean and Agile Development”, the First Law of Diagramming is “The primary value in diagrams is in the discussion while diagramming—we model to have a conversation.”

I have been using a slightly different approach in retrospectives recently. With a similar intent to Rachel I hope to trigger conversations that result in a team sharing there concerns and issues and coming to a shared view as to how these relate and where would be a good point for intervention.

I’ve used this approach a couple of times recently when running retrospectives that cover a few months i.e. not iteration retrospectives where we choose to commit a few hours to investigating issues in some detail.

My favoured approach is borrowed from Eliyahu Goldratt’s Theory of Constraints, it is one of the 5 TOC thinking process and is know as a current reality tree. A current reality tree is a tree of undesirable aspects of your current situation, these are connected to indicate cause and effect.

My approach to constructing this diagram is as follows:

Identify undesirable effects
Invite the whole team to stand around a table thinking of undesirable / unwanted traits of their existing approach (process, tools, methods etc.). Each item should be written on an index card and placed on the table in no particular order. Team members can try to avoid duplicats but if one pops up it is not a problem.

Begin to identify cause effect relationships
Invite the team to select two related cards. These should be stuck on the board and joining with an arrow pointing from cause to effect.

Continue to grow the diagram
The whole team should collaborate to add the cards to the diagram. When I first tried this I wondered how I would cope if groups of cards were not related. I’ve not seen this actually happen yet but should it then I guess we allow for the growth of separate diagrams until we discover a relationship.

Review relationships
In CRT literature there are a set of steps for assessing the existence and relationships between UDEs. My approach is to invite team members to consider where items are missing. Often where many causes relate to a single effect there is a missing intermediate effect.

Since I tend to run this approach in a time boxed session I an looking for the point at which returns begin to diminish. As the group settle on a basic shape and begin to look for intervention points I move to support this.

A good candidate point to intervene at would be contributing to a number of effects or participating in a feedback loop. By focusing on one effect we can select actions that will contribute to reducing this effect and by association those related effects.

Of course, an added benefit of this approach is that we can use the cause and effect diagram to review the effect of our interventions; did we get it right, if not was there something we missed in the analysis?

I hope that this is useful. Do share if you’ve used this approach or something similar yourself.

Technical Debt re-visited

There has been some renewed discussion recently on the subject of technical debt, this has been played out on twitter as well as a variety of blog posts including this one.

The technical debt metaphor is one I use often and I believe that there is some clarification required around this subject.

At it’s broadest, technical debt is any trait of the current system that is considered sub optimal from a technical perspective. The debt aspect reflects the cost of ownership of that trait. For example and overly complex and untidy method is sub optimal, it incurs cost each time it needs to be re-visited and re-understood due to either a defect in the logic or a new requirement. This method obviously incurs more cost if it is re-visited more often.

Much of the debate recently has been focused on the times that it might be good to incur technical debt. The debt metaphor reminds us of borrowing money from the bank to get that new toy a little sooner. The question here is two fold, does technical borrowing exists and how can we view the rate of interest or total cost.

Before we can consider technical borrowing we need to split technical debt into two categories. First, the design or implementation decision that was sound the day it was made but now, with new information, is constraining our ability to progress. Second, the quick and dirty approach that we can see on the day of writing is gong to cost us very soon.

Time Vs Money

The first category of debt is a direct result of doing the simplest thing that could work and resisting the temptation to predict the future. We develop simple software that is easily changed through effective use of tests, the code that is written is written well. We categorise these design traits as debt when new information presents its self and we identify a change that will enable the system to serve us better. We may decide to make the change or not based on the ongoing cost of maintaining an design that no longer reflects our understanding of the problem or technology.

The second category is often the result of a deadline looming. A common chorus of “lets hack this in now and we’ll fix it later” is coupled with the nagging concern that later never arrives. In my mind, this category of debt can give the first category a bad name. But, is this thinking sound? Surely there are times when the wrong technical solution is the right business decision. It is my belief that there are situations where a quick fix is the right decision, imagine a major flaw that brings down a trading system. However, there are too many instances where code bases become un-maintainable through a feeling of time pressure that leads developers to incur debt with little or no benefit. In fact, in most cases, untidy, poorly designed software incurs cost both short and long term. In the short term, defects delay the release of the software and in the long term software is difficult to maintain and rigid in the face of changing business need.

So we arrive at technical borrowing. The decision to borrow must be explicit. As a team, along with appropriate stake-holders consider the decision. For example,

we have selected framework X for the next release, it does not offer the scaling flexibility we would like but we believe that our early entry to the market is a higher priority. We plan to move to framework Y in the next release window to achieve our target scaleability.

There are less extreme examples of refactorings that should be done but won’t fit in this iteration. Again, be explicit. Discuss the need for refactoring with your Product Owner or Project Manager, consider the cost of the refactoring, the cost incurred by not doing so, the risk of refactoring. One approach to maintaining a healthy code base is to keep a backlog of refactoring and allocate time in each iteration.

However, beware the temptation to save time, get it done, do a quick fix or tidy it up later. In almost all cases code that is hurried, poorly designed, overly complex or untidy will incur far more cost both short and long term than the time saved today by not doing it right.

Finally, this can be most difficult in a legacy code base where technical debt abounds. I use a simple motto that has served me well with a few teams:

Do no harm!

Where you cannot fix it all be sure to agree, as a team, that you won’t make it worse. In fact agree to making one small aspect of everything you touch better for the next person.

Lean at starbucks (lean without the social side isn’t lean at all)

The article I’ve clipped from here is a response from John Shook to an article in the Wall Street Journal regarding a Lean transformation effort in it’s early stages at Starbucks.

But that’s not why I’ve clipped it.

The aspect of the article I wanted to draw attention to was the emphasis on the social aspects of Lean. As I see more people talking about Lean and Kanban in software engineering environments I wonder – who is owning this process, the team or the coach? As John puts it, who is the scientist?

Clipped from www.lean.org
The problem with Taylor’s Scientific Management: Who is the scientist when it comes to process improvement? Scientists must see real work to do science on the work.
Toyota revolutionized the social dimension of work, respecting workers brains as well as their hands
By redefining roles, Toyota changed the answer to the question of who is the scientist in scientific management.
The technical side of lean without the social side isn’t lean at all.Read more at www.lean.org
 

Frog thinkers and bicycle thinkers.

A delightful metaphor that cuts to the heart of systems thinking.

Thanks to Richard for sharing!

There are two types of thinkers in the world, frog thinkers and bike thinkers
This to me is the heart of systems thinking Read more at www.richarddurnall.com
 

As a manager define outputs, not process

Liz haz written a great post here describing a situation where the deployment team needed to learn for to leverage the development team to achieve a more effective rout out of development into QA and live environments.

The line that made me smile was -

Ask for consistent outputs, not consistent processes

This is a big leap for many managers and senior stake-holders. I worked with a team recently who had been told to do daily stand-up meetings. They were told that each must answer three questions (you know the three, what yesterday, what next and what’s blocking). The teams manager had a team member minute the meeting and send him an e-mail to save time.

I was asked to have a chat with the team about why they seemed unhappy with this new “agile” approach. The first step was to invite the manager to write a contract in terms of his information requirements and agree that so long as the team could fulfil the contract he would accept their approach.

A short retrospective later and the team are posting key information on a board for all including the manager to see, the minuting of the meeting has stopped and they have taken back their stand-up whic it turns out they quite liked now it could move faster without minuting.

So thanks for the reminder Liz and thanks for sharing.

Clipped from lizkeogh.com

Ask for consistent outputs, not consistent processes

Read more at lizkeogh.com
 

Valtech UK Blog

Valtech now have a blog that aggregates from my own blog and those of a number of colleagues.

There are some smart guys on there and more have promised to contribute so I suggest you take a look and stay in touch as more consultants are added.

5 wrong reasons to adopt Kanban

All true!

I see a significant risk that Kanban becomes a new and exciting way for teams to fail.

I do believe that there are good reasons to apply a Kanban approach but more on that another day.

#1. User Stories Diversity

#2. Failed Iterations

#3. Failed Retrospective Meetings

#4. Shared People / Functional Departments

#5. Simplicity

5 Wrong Reasons To Apply Kanban

Read more at www.targetprocess.com
 

Scrum meeting late fees

It’s good to see someone speaking out against this practice.

Also nice to see Rachel and Tobias chiming in.

Punishing lateness avoids the root cause and can breed resentment as the team feel that the process is being imposed.

In order to deter people from showing up late to their daily “Scrum” or “stand-up” meeting, some teams charge the culprit(s) a fine, or make them do some embarrassing activity (such as singing) for the team. Some teams use the money to buy lunch for the team once a month or so. (If that’s you: Please stop it! You’re rewarding the wrong behavior.)
Read more at powersoftwo.agileinstitute.com
 

Tweetboard up and running

I’m experimenting with tweetboard. Take a look here if you’re interested or follow the link above.

Drop me a line if you visit, if only to let me know if the thing is working :)

What is Agile?

I met with a potential client last week and found my self answering the question, “what, in a nutshell, does agile mean?”.

To date I’ve never had a canned answer to this and can come from various directions perhaps talking about the history and how it’s an umbrella term for a whole bunch of things or maybe talk about what it’s like working on an agile team. On this occasion I was quite pleased with the answer that fell out:

Agile is about delivering business value!
Businesses tend to exist in a state of constant change so if we want to deliver something valuable to them then we need to be willing and able to embrace that change and deliver quickly.
In order to deliver quickly and deal with change we have found that quality is a necessary. This is particularly true if we want to continue to deliver over a sustained period.
At the bottom of this stack, underpinning all the elements mentioned so far is the need to treat workers with respect and empower them to do the right thing. Without this you wont achieve the quality or speed that you need.

So:
Value <- Embrace Change <- Quality <- Respect & Empowerment.

Is there any more to it?