Saturday, May 30, 2009

Beyond Agile: Cultural Patterns of Software Organizations

At QCON London 2008, Marc Evers and Wilem Van Den Ende gave a talk about cultural patterns. They start out by mentioning that cultural patterns can help make sense of what’s happening. It helps us understand various subcultures that exist in an organization, and can predict conflicts. It helps put agile in perspective and helps us adapt our change strategy to particular situations. They then cover 6 cultural patterns:

1. Routine – We follow our standard procedures (except when we panic). Bring order to disorder. Management by controlling. Process oriented. Working in a well known context. It is very predictable, but difficult to improve productivity

2. Variable – We do whatever we feel like at the moment. Value Craftsmanship, foster innovation. It’s characterized by close cooperation between customers and developers, craftsmanship, hands off management. Performance and quality is totally dependent on individuals. It works when starting with a few customers developing custom built software until the number of clients increase to 8 or so. Once they go beyond that organizations switch to routine. But when something goes wrong, then they go back to variable. Variable produces fast delivery and good relationship between customer and developer.

3. Steering – We choose among our routines by the result they produce. Make extraordinary things ordinary. It’s characterized by feedback control, results oriented, trust based, act early, act small, XP, and Scrum. Testing and feedback play an important role. It uses feedback. You can improve as you go. Can be light weight.

Moving towards steering:

a. Mental models: Have more work to do. Increase hours/week to try to finish work. However, more hours per week lead to fatigue which results in more defects and thus increases work to do.

b. Visibility: Charts and boards on the board.

c. Stability: Need to have a stable velocity.

4. Oblivious – We’re not aware that we’re developing software. No separation between user and developer. Highly adaptive, highly customer oriented. Customer and developer is the same person. You always get what you want as long as you can make it

5. Anticipating - We establish routines based on our past experience with them. The art of the long view. Pay more attention to long term planning and changing your processes. Consciously managing change, process oriented, always improving your processes (if it ain’t broke, fix it). Practices (retrospectives, scenario planning, risk management). Lean Software development. It makes steering culture more predictable with a conscious process of managing change

6. Congruent – everyone is involved in improving everything all the time. It is a culture of ongoing reflection and improvement.

They see some similarity with CMM where level 0 is Oblivious, 1 Variable, 2 Routine, 3 Steering, 4 Anticipating, and level 5 Congruent. They conclude by stressing that you should find the patterns that fit your context.

This presentation is available on InfoQ at