More Poppendieck on Lean

Here’s a new interview with Tom and Mary Poppendieck on the topic of lean software development. Thanks to Rickard Johansson for the tip!

Around 25 minutes into the interview, the topic of RUP appears. Tom points out the amount of knowledge available in the RUP, but also how it has often been implemented with a focus on the specific practices, rather than on the principles that lie behind the RUP: iterative, incremental software development.

This problem is not entirely unexpected, since people who need the guidance provided by the RUP manuals are probably not yet at a skill level where they can work from principles. When learning something new, we need rules and practices. Unfortunately, in projects and management, the same rules and practices will not work for everyone. A skilled practitioner knows this, and works from the principles he believes in to deduce practices that are useful in the current context. When people “implement” the RUP by copying practices without knowing why, problems are likely.

At around 36 minutes, Mary discusses the difficulty of applying lean and agile over company borders. This is an interesting question, but one that needs some care. Any project run over company borders is challenging. Lean and agile have the nasty and necessary habit of talking openly about uncertainties and risk, and recommending transparency. Obviously, this will put a strain on any relationship between parties who are used to contracting defensively with each other.

Custom Searching From Inside the Browser

Ever notice that little search box up in the corner in Firefox and Explorer? Of course you have. You’ve probably used it dozens of time to search for stuff on the web, probably using Google.

You may have noticed that you can also search using many other search engines from this field, and that you can add new search engines if you want to.

What I did not know until today, was how easy it is to add support for your own custom searches using the OpenSearch standard. I started out following these guidelines on how to create my own OpenSearch plugin, but soon noticed a link to a neat tool for doing this for me. Using this online tool, it was a breeze to create a Firefox and Explorer compatible search plugin for Metacritic.com, which is an indispensable site that gathers reviews on games, movies and other entertainment stuff. So, now I can search directly on Metacritic from inside my search field in the browser. Neat!

Ron Jeffries on Running Tested Features

In this video on InfoQ, Ron Jeffries talk about agile software development. What is worth pointing out is how he emphasises the similarities between the different agile methods. One difference between how Ron explains things, and how Ken Schwaber does it, though, lies in the graphing of the growth of features. When Ken draws the line, it starts out growing slowly, indicating more focus on “architecture” early on (but still producing features every sprint). When Ron draws the line, it is more linear, indicating his desire to have a more constant growth of features with a really evolutionary approach to “architecture”.

Requirements: Still Need to Handle Them, Post-Agile

Many problems we’ve traditionally had with understanding, communicating and implementing solutions for user’s needs are reduced or go away as agile development lets us shift our focus from requirements documents to frequent conversations about actual, current, needs.

Still, these things in no way mean that we should stop thinking about requirements, even written ones. We’ll still be facing them even when the terminology and the means of handling them change. And context is key, as always: if you must have very formal written documents, if you really must, well, then you must.

With no further ado, here are some books (see: it’s not a bad idea to write things down from time to time) that have helped me understand this aspect of communication in our projects.

  • To begin with, we need to understand that at the core of the challenge of understanding user’s needs lies a deeper challenge: that of knowing what the problem really is. This is what Gerald Weinberg and Donald Gause explore in their entertaining little book Are Your Lights On?, a true must-read in this context.
  • Next up, something completely different. Or not. While expressions like “requirements gathering” may have some believe that requirements are like pretty little flowers waiting around to be picked and catalogued by a jolly gatherer, this act of finding user needs is not seldom pretty challenging: we’re talking about facing and synthezing a multitude of opinions from a bunch of stakeholders, after all. So, we should be able to talk about potentially contentious issues in a productive way. In come the authors of Crucial Conversations, with their collection of principles for helping yourself keep even your challenging interactions with others sane.
  • On a possibly less far-fetched side, Mike Cohn’s book on User Stories describes a middle ground between the often bloated use case format and the context-disabled IEEE-style “the system shall” requirements. Simple and usable, but beware: XP-people will sometimes angrily remind you that they, not Mike, invented user stories.
  • In software projects, we have a long and sad history of estimating the cost of requirements, but not the value of them. Donald Reinertsen takes us one step beyond the (powerful and typically sufficient) product backlogs and teaches us how to bring back value to the table. See: Managing the Design Factory.
  • I think I liked this next one too, even though a few years have passed since I last read. Since its Gerald Weinberg again, I’m not worried about recommending it: Exploring Requirements: Quality Before Design, by Mr Weinberg and Donald Gause.

The Power of Closure

Have you ever watched an episode of, say, Prison Break, and noticed how they stop for commercials just when the action is most intense? Of course you have. Those moments are called cliffhangers. You are literally left hanging for a while, and that’s a situation you want to get out of.

Psychologists have a name for this phenomenon, this need to bring stability back into an unstable situation. They say that what we’re so desperately longing for in cliff-hanging situations is closure. We need to close the book to be able to move on. Until we’ve done so, we can literally feel like we’ve been left hanging.

Here’s my take on why iterative, incremental, agile software development is so powerful: it teaches us the power of closure.

Every thing that starts needs to have an end. That which is opened needs to be closed. Sooner or later.
When we do sprint planning in Scrum, we set up a situation where all parties are left longing for closure. And closure will come soon. Those things we select to work on in the upcoming sprint will, to begin with, result in divergence: the team will discuss, debate and even procrastinate, but soon enough, the need for convergence sets in. The need for closure is making itself known again. Before the sprint has ended, the team will have realized the need to test, package and document that which was requested during the first day of the sprint. The may even have done all these things.

When a sprint does not end with closure, the feeling of having been left hanging is most obvious to the product owner – the person in Scrum who is responsible for controlling the direction the product takes. He has heard the team commit to a set of goals, and has been hanging around to see them be realized. When this does not happen, closure is missing.

For the team, this lack of closure is equally obvious. As the team gathers and performs the end-of-sprint retrospective, the reason for why not all goals were fulfilled are discussed. This is done without the assignment of blame, but it needs to be done for closure to begin. In order to fully close the book on the goals that were not reached, the team soon works with the product owner to determine when to attempt to reach those goals again, or decide not to do so.

In Scrum, that which is selected for development must be demonstrated. That which is begun must be finished. When we finish, we are taken back to a stable state, both in a technical and a mental sense. From this stable state we can the start anew.

In its essence, what Scrum does is this: it helps us to constantly look around us and ask, “What have we begun that needs to be finished for us to be able to move on?”

Psychologists might scoff at this use of closure, but it works quite well in this context, because in software development, starting is not the hard part. All it takes is a bright idea and a few spoken words. That’s why its not a bad thing to embrace our human need for closure: it helps us finish things at the same rate we start them.

Positive Reviews Just In

I’m glad to read that Henrik Mårtensson, whose interests and knowledge I have come to respect through the reading of his blog (and even more now that I’ve met him in person), enjoyed a recent Scrum Kickstart I facilitated, and he participated in:

“It is rare to meet someone that can talk about the same subject matter for two days straight without being boring even once.”

Don’t miss out on Henriks excellent blog: Kallokain.