Monday, January 30, 2012

Now out: Business Patterns

Business Patterns for Software Developers is now out!
Early too!

See for yourself:


Some frequently asked questions:
Q: How long did it take to write?
A: Eight years end to end, although the first patterns aren’t in the book, in fact I didn’t realise I was writing a book until about 2008. Years 6 and 8 were the busy ones.

Q: What is a business patterns?
A: Its like a software pattern, or an architecture pattern, but concerns itself with business and business strategy.

Q: Is it available on Kindle?
A: Not immediately but it will be in a few weeks

Q: Where can I read more about the book?
A: Early versions of most of the pattern are available for free on my website - follow links for business strategy design patterns

Q: What are the buildings on the cover?
A: The Three Graces on Liverpool pier head, a UNESCO World Heritage site. I prefer the daylight pictures but the evening picture on the cover works well in the design.

Wednesday, January 25, 2012

The Meter: Tom Giib's greatest invention

If you’ve ever found the time to read Tom Gilb’s work - and I’m thinking specifically of Competitive Engineering here - you’ll know that his work is packed full of good ideas. So many god ideas in fact that it can be hard to read his book - something I think he admits himself in the opening pages of Competitive Engineering.

One of his ideas is that of a Meter. This alway confuses me a little, still now...

You: A Metre you say?
Me: No, not a metric unit of distance, a Meter, as in a Gas Meter
You: What, how can a Gas Meter help software teams?
Me: No, the idea of measuring things, scrum that, say a Ruler
You: A ruler? Centimeters and inches?
Me: No, A yard stick
You: Distance again?
Me: No, A unit of measurement and a tool for measuring
You: Measuring what?
Me: Yes, Measuring what, that’s Tom’s great invention, we need to define measuring systems

Tom’s great invention is: define a mechanism for measuring the thing which is important to you.

OK, Tom takes the idea further with Plangauge he says we should define the meter, the starting value and the desired value. But forget values, its the measurement unit itself which I think is too frequently overlooked and worth more attention.

The thing is, the unit of measurement, and the means of measuring it is implicit in a lot of work: its in Kaplan & Norton’s Balanced Scorecard, its in Beyond Budgeting, its in Lean Start-Up and elsewhere.

But, as far as I know, only Tom calls the Meter out as an idea in its own right. In fact, I suspect Tom might not have realised the significance of this.

Once you know what the right Meter is it becomes - relatively - easy to measure things. So you can measure the starting point, you can set a target, and you can measure how far you have got.

We are surrounded my measurement units and meters which already exist
  • Currency: Pounds, Dollars, Euros, etc. etc. - and the associated profit, revenue, costs, etc. etc.
  • Accounts: Profit, revenue, costs
  • Website hits: visitors, unique hits, conversions, etc. etc.
  • Time: second, minutes, days....
  • Distance: inches, miles, centimetres, meters and kilometres
  • Location: Latitude and Longitude
  • Weight:.....
And we tend to use these measuring units again and their associated meters again and again.

New meters are not so common but they occur, e.g. Eric Ries in Lean Start-Up introduces a new meter: Cohort Analysis.

But - big but - if we use inappropriate measuring units and meters it gets hard, and it potentially gets wrong. (Another on of Eric’s points.)

Again, as far as I know, Tom is the only authority who says: define your own unit and define your own way of measuring it.

Now, as far as I can tell Tom is a master of this, the rest of us... well most people don’t get it and try and use pre-defined measurements and Meters, even those of us who “get it” struggle with it.

So, we need to start inventing new units of measurement and new ways of measuring things. We need to get good at both inventing these things and sharing them. History shows many of these measuring units are useful to other people.

Second, as more of these units are recognised then we will have more mechanisms - and language - with which to implement both our own tools and the tools like Balanced Score Card and Lean Startup.

Thursday, January 19, 2012

Corporate Psychopathy

The Oxford Dictionary of English on my Kindle defines:

Psychopathy n. mental illness or disorder.

Psychopathic is more interesting:

Psychopathic adj. suffering from or constituting a chronic mental disorder with abnormal or violent social behaviour

There is a reoccurring pattern of behaviour I have observed in corporate environments which I have taken to calling Corporate Psychopathy, maybe you’ll recognise it if I describe it.

  • A company brings together a team to do some work. At some date they decide the work is “done” and disband the team. They often call this work “a project” - projects by their definition have a start date and an end date, and involve a temporary organisation unit; i.e. a team is brought together at the start, they do some work, then the team is disbanded.
I think this state of affairs is crazy. So crazy I believe it is abnormal social behaviour.

A team is a social unit. When was the last time you dumped all your friends and started to forma a new group?

Think of the high performing teams you know: sports teams or successful political parties. They may change players from time to time, even key players, but the winning team usually stays together from one victory to the next.

By contrast think of the teams who are less successful. How often to do they change personnel How often do they work together?

Anyone who has studies team dynamics will probably have come across Buckman’s “Storming, Forming, Norming and Performing” model. The idea is that when you bring a team together they pass through each phase as they learn to work effectively together.

If you have an effective team - one that has passed through storming, forming and norming and is now performing - why would you break them up? Let alone break up one team and create a new team which has to pass through three phases to get to the productive fourth?

It doesn’t make sense.

Just to make it worse when corporations break up teams many of the people leave for ever. Companies which use contract staff release the contractors who will go and work somewhere else. Even permanent staff may well find themselves release to a pool, or to previous roles and the same people are unlikely to work together again. Knowledge evaporates in the process.

If that isn’t enough think of the admin overhead in managing all this.

It also makes the start of a work incredibly difficult because you don’t know how effective a team will be or when they will break through into Performing. And if you are following a development method where you measure capacity (velocity) and benchmark against past performance you can’t use this method for the first few weeks.

Its psychopathic: anti-social, performance reducing, expensive, undermines forecasting and increases risk.

Put it another way: It is plain stupid.

My solution is keep the performing team together as much as possible and bring the work to the team. Have the team move from one piece of work to another together.

This parallels the way we timebox work. In timeboxing we fit the work to the time allowed - a two week sprint or a quarterly release. Similarly we should bring the work to the team.

Of course teams might not have very clear cut switch over dates. Perhaps they have to ramp-down one stream of work while ramping up another. More complex to manage.

Or perhaps a performing team splits into two - like cell division. One part continues working on the first piece of work while the second part starts something new. This way the team can carry the culture from one piece of work to another.

To do this is might be necessary to let the team grow organically, split the team, then grow both sides organically.

The point is: there are ways of managing this. You don’t have to split teams up and form them all anew.

Wednesday, January 04, 2012

Dialogue Sheets on show at Skills Matter - 13 February

Quick follow up to the last entry about Dialogue Sheets. I’ll be doing a evening session at Skills Matter on the sheets next month - 13 February, “Dialogue Sheets a New Tool for Retrospectives”. The event is free but registration is required.

Tuesday, January 03, 2012

Retrospective Dialogue Sheets in InfoQ

Happy new year! - my opening missive for the new year is elsewhere...

I’ve written more about Retrospective Dialogue Sheets for this weeks InfoQ - “Dialogue Sheets: A new tool for retrospectives.”

This piece summarises many of the findings I discussed a few weeks ago in Dialogue Sheets feedback #1 and Dialogue Sheets feedback #2 blog entries.

A footnote to a footnote, I discussed dialog sheet print-on-demand a few weeks ago. After that I was able to reduce the price of printed sheets. As I suspected at the time the price reduction has made no difference to the number of people using the service. I therefore conclude that it is not the price of the sheets but rather the fact that there is a charge at all the creates the block.

Sunday, December 18, 2011

News from the Cornish Software Mines

My work in Cornwall, helping companies adopt Agile approaches to software development, is set to continue into the new year - so more jokey tweets about the Cornish Software Mines. I hope to write more about this work - the benefits and what we’re learning in future.

Right now there are two pieces of news I’d like to share:
I first met the team at RI in October 2010 when I provided Agile foundations training to development team. Since then I’ve been in many times to provide follow up coaching.

About six month after the Agile foundations course Jon Jagger delivered a Test Driven Development (TDD) in C# course for the team and has also been visiting to provide follow up coaching. All in all a great success, as the video shows.

Wednesday, December 14, 2011

Xanpan, ToC, Guilt, plagiarism and sorry

When I was doing my Masters degree I had it hammered into me: credit your sources, don’t plagiarise. To this day I take pride in trying to credit the source of my thoughts, back-up my ideas with research and apportion credit. I won’t always succeed but I think I do a reasonable job. Heck, I’ll go further, I think I do a better job than most.

So image how I felt after my last blog post, about Xanpan, when Benjamin Mitchell tweeted:

“@allankellynet I'm unclear why you don't mention Theory of Constraints 5 Focussing Steps. What's your thinking on this?”

I was mortified because, well, he was right. My blog post discussing how to improve throughput on a Xanpan board was pretty much a Theory of Constraints description.

I had plagiarised. I had failed to credit. And I had written something that other people have written before - probably better than me.

I apologise, I give due credit: these ideas are inspired by the Theory of Constraints - or ToC for short.

So how did I come to make this mistake?

Well, I think the answer is in two parts:

First, I have ToC thinking to heart and it now seems so obvious I’d forgotten it needed crediting

Second, the blog entry was written a day after I’d had a similar conversation with a client. ToC hadn’t been mentioned in that conversation so it wasn’t mentioned here.

So maybe the plagiarism occurred in my conversation with the client. Well yes, but.... my first point still applied and second I tend to avoid crediting with clients. Now I’d better explain that second point some more.

In conversation with clients I tend to avoid saying things like “This comes from....” or “I suggest you go and read....”. Yes I do say those things but every time I say it I believe there are two ways for a client to take it: they may take it as “good, Allan is giving me the original source” or they may take it as “Hmmm, this consultant is name dropping, doesn’t have ideas himself and is very academic.” (Plus, they are paying for my time so perhaps I should just explain things to them.)

In short I don’t think it always helps.

I also remember all those Professors at Business School who uttered “Smith Smith & Smith, 1904” (or whatever) at the end of every sentence. And those turgid academic journal articles where every paragraph was credited and thus become very very boring to read.

I could go on but you get the message.

Now, one more thing, this blog entry is really really defensive. I feel a little attacked by Benjamin - I’m sure he didn’t mean to attack me, its just in 140 characters people come to the point. Maybe he feels attacked by this, don’t know we could get deeper and deeper.

For anyone still reading, I’m sorry for droning on. However I think this does raise an interesting point: in trying to explain things, in writing and in conversation making things accessible and easy to understand is - in my humble opinion - at odds with academic integrity and full disclosure.

As someone who makes a living doing this I need to be more aware of it than most.

Monday, December 12, 2011

Xanpan: refining the process

In my last blog entry I discussed a Xanpan board layout which allows for planned and unplanned work to co-exist in one workflow. Here is a picture of the board I had just put together with a team in Cornwall:



This might be the perfect board layout for the team for ever. More likely it can be improved over time - in the words of Kevlin Henney, it is a Stable Intermediary Form.

I think of Xanpan boards like the Pompido centre in Paris, they externalise the plumbing. In this case the workflow and work in progress. You can see the stuff that is normally hidden inside.

My rules are quite straight forward for Xanpan boards:

Stage 1:
  1. Model the current workflow on the board: avoid changing it too much to “how it should be” but you will probably need to modify the workflow a little in order to be able to model it.
  2. Make sure you talk through various scenarios for work to make sure you have a workflow that will, well, work. As I said in the original Xanpan blog post columns normally come in pairs: queue then work.
  3. Operate the board for at least one iteration (several weeks) and learn from it.
  4. Reflect and refine the board: in doing so you will modify the workflow, this should be an improvement.
  5. Operate the board some more an start gathering data, qualitative and quantitative about the flow of work.
This alone might improve your teams performance: you have visibility of the work in progress, you can reason about it, people are better informed, you will make better decisions. But, this will not solve or your problems, nor is it the end state, it is just the beginning.

Stage 2: (Assuming you want to improve the throughput)
  • Think of the board as a pipeline: there are two ways to improve throughput, make the pipe bigger or make things move through the pipe faster.
First seek to move things through the pipe faster:
  1. Look at the blocks: why are they blocking or impeding? What can you do about removing them, not just on this occasion but permanently
  2. Where are the queues building up? Can you rebalance the board, or rather how your people (and possibly other resources) are deployed to even this out
Continuing reviewing the board and looking for improvements for ever. But if the time comes when you want a bigger pipe:
  • Add people to the team gradually over time: adding people slows down the existing team, the bigger the team the smaller the proportional slow down, above all else: avoid foie gras recruitment. Again this is likely to be a long term activity.
Finally:
  1. Look to level workflow: reduce the peaks and move work to the lows.
  2. Look to increase the value of the items moving through the pipeline - more and better business analysis and product management
Those are the rules of thumb. Of course there are exceptions, of course there are other issues, of course they don’t cover every eventuality.

Friday, December 09, 2011

Xanpan: planned and unplanned work

I’m on my way back from another visit to the Cornish Software Mines. I’ve been with four different companies this week, laid the first plans for Agile on the Beach 2012 conference and got to know Sebastian Bergmann who has been visiting the mines this week working with the PHP teams.

One of these companies is new to the Agile programme, we did training for the entire company last month and this week I was there to get them started for real. This meant we had to design their board layout and talk about workflow. Once again I found myself advocating Xanpan, the cross between Extreme Programming and Kanban.

The board layout - effectively workflow - is on which reoccurs in Xanpan systems and I would like to discuss here. (I’ll explain the layout here and in a second blog entry I’ll post a picture and talk about the future.)

The problem companies/teams face is: they have planned and unplanned work to do. Typically this is some project they are working to deliver but they need to work on support issues - bug fixes - too. I say that, but it is not just support issues, sometimes it is clients who shouts very loud, or managers who can’t say no, or customers who refuse to wait a few days - indeed sometimes to do so would be the wrong thing to do.

The Scrum answer to this is to stamp on the unplanned work. The team are locked - remember commitment and Sprint-goal. This unplanned work is a problem the Scrum Master should stop - or declare Abnormal Termination of Sprint. Particularly in small companies this isn’t a very useful answer, the truth is, things are more complicated than that, planet-Scrum is too simple.

The ultimate solution is to look at the reason these unplanned items are arising and try to address the root course. In time it might well be possible to do that but right now we don’t want to block the team’s transition. Even in the long term this might be the way of the world for such a team.

The Kanban answer would be to go in the other direction: run all work as “unplanned” and just restock the to-do queue as needed. However this robs the team of the rhythmic certainty of a Sprint. Many of the teams I see need to move away from seat-of-the-pants decision making and knee-jerk reactions. Adopting regular iterations builds in decision making points and helps individuals understand their roles.

So: Xanpan, keep iterations/sprints but allow for unplanned work. To do this we design a board which begins with the three columns:
  • Planned
  • Unplanned
  • Prioritised (usually this queue is limited)
The next column is usually something like:
  • WIP: In development (usually WIP limited)
The team start Springing as usual: they hold a planning meeting, review Blue Cards (Business requests, User Stories) and if necessary break them down to White Cards (tasks). These then populate the Planned column. These blues are probably drawn from a traditional product backlog.

At any time work can be added to the Unplanned column. The column is unlimited.

A few minutes before the morning stand-up meeting around the board the person with authority populated the Prioritised column reviews and populates it. This could be the Project Manager, Business Analyst, Team Leader or someone else, the role and title doesn’t matter, what is important is that this person has the authority to do this. On one team this was the joint responsibility of the Project Manager and Business Analyst.

This person looks at the work still in the Prioritised queue, and they review the Planned Work and Unplanned work. From these sources they decide the priorities for today. When the team gather they can see what the priorities are. For the sake of simplicity it normally makes sense for the Prioritised queue to be limited and for the priorities to be ordered: 1, 2, 3, up to the limit.

If need be priorities can be changed during the day: maybe something even more urgent arrives - or goes away, maybe the prioritised queue empties, or some such.

Effort estimates are normally assigned to planned work during the planning meeting. For unplanned work some teams don’t both adding estimates, some added a quick estimate from the person who picks up the card when they pick it up and some put an effort estimate on when it is complete.

Importantly, the original source (planned or unplanned) is recorded on the card - maybe a different colour card, maybe a dot, a word, whatever. At the end of the Spring the team can review how much planned and how much unplanned work was undertaken.

Thats it really: planned, unplanned and prioritised. The first two are effectively queues for the third. Somebody, or bodies, are responsible for balancing priorities.

It is possible that this workflow/board layout is actually a transitional layout. After running with this flow for a while there will be data on how much unplanned versus planned work actually occurs.

Thursday, December 01, 2011

Dialogue sheets: more sheets & pricing

A quick follow up to my last two entries about Dialogue Sheets (Retrospective Dialogue Sheets: feedback & updates 1 of 2 and Retrospective Dialogue Sheets: feedback & updates 2 of 2).

Several people who provided feedback said they found the cost of the sheets to be off putting. Since the soft copies are fee the true cost of the sheets depends on where you live and what access you have to large printers, I have little control over that. However, I did set up a print-on-demand service for getting pre-printed sheets.

I’ve looked over the settings and I’ve managed to reduce the price on most of the sheets - while I was there I’ve also uploaded some new sheets - a general discussion sheet, a Sprint level retrospective sheet and a Kick-Off sheet.

The cheapest sheet is now priced at $13.75, or £8.74, €10.20. Since the printer is based in the US the exact price depends on your currency.

Unfortunately, shipping needs to be added to that. Within the US the cheapest sheet should total about $30 - if you order multiple sheets the shipping costs doesn’t rise proportionately so it gets cheaper per sheet.

Apologies to everyone in Europe - myself included, or Asia, or elsewhere - shipping something across the Atlantic costs more. Again, if you buy several sheets at once its cheaper - and is what I do, I have a stack in my office.

I would be interested to know from people who do find cost a barrier just how much they could pay. If I know the restraints I can look into other options.

However, the skeptic in me thinks that the actual price is not important: $13 might as well be $3, $30 or $300. It is the fact that any money needs to be spent that is the barrier.

Which is silly really because sitting half a dozen software developers in a room for an hour isn’t cheap: say $100,000 per developer per year means $50 x 6 = $300, the cost of the sheet is trivial. (This might be why so few teams do retrospectives in the first place.)

Look at it another way: A dialogue sheet costs about $30, which means you save $50 (at least) it would have cost for a facilitator.

Cost arguments always loose so look at it another way: if as a result of the exercise the team save more than one hour it has paid for itself.

As I said, if you have any information that can help me find the right answer please e-mail me.