Arlo Belshee does a little bit of everything, from management to in-the-trenches development, but he seeks mainly to inspire courage. Arlo has been involved in agile since 1999, yet worked for two years in the middle of that period in a rigorous, effective, and pro-people waterfall development shop. He's a strong believer in discipline and the agility that comes from it, in punctuated continuity, and in change as the only constant.
Here, we ask him to elaborate on the topics of "beginner's mind" and "promiscuous pairing."
Iterations: What is "beginner's mind," and how does it relate to software practices?
Arlo Belshee: Beginner's mind is that mental state that people enter when they don't quite understand what is going on around them. You commonly see it when people first play a new board game. They don't understand the rules or strategies, but they want to. They enter a state of heightened observation, experimentation, and pattern matching. It is exhausting, rewarding, and can result in "beginner's luck." Beginner's mind is probably the most effective mental state for learning.
And that's why it relates to software development. Software development is really nothing more or less than a large number of people trying to learn about something very complex-how to satisfy the needs of a large number of discordant individuals. The developer can't really learn the thing in enough depth without writing it down (in code, preferably). If they're doing agile development, then they ship that written representation of their learning; there is no other step. Therefore, the key software practices are all about either learning, communication, or both.
Beginner's mind ends when you first feel that you start to understand it. It is an extremely high-energy state and metabolically costly. The mind would rather get out of it. However, it allows learning in excess of any lower-energy state--including flow.
Here are some of the differences between flow and beginner's mind:
- Flow depends on deep knowledge and expertise. Beginner's mind depends on feeling like you don't understand. Flow is easier to achieve when you've already done this task dozens of times; beginner's mind is easier to achieve when the task is (in some important way) new.
- Flow depends on uninterrupted work, so you can upload everything and work intuitively and smoothly. Beginner's mind is assisted by interruptions, as they help you lose preconceptions you may be gaining during work; this is why sleeping on a problem works.
- Flow optimizes your ability to do; beginner's mind optimizes your ability to learn.
For these reasons, beginner's mind is generally more useful in software development. The more you are building the same product--in the same way, for the same people, as you've done dozens of times before and without interruptions or changes--the more flow helps. The more you are trying something new, or handling changes, the more beginner's mind helps (and the easier it is to achieve). The valuable projects tend to be in the second camp.
Iterations: What are the advantages of promiscuous pairing?
Arlo Belshee: Promiscuous paring is both a communications and a learning practice. It heightens both of these aspects as far as I've seen them go. As such, it also ends up being an extremely effective team- and trust-building practice.
- Rotating pairs every ninety minutes keeps everyone constantly in beginner's mind.
- Pairing on 100 percent of the work, using 100 percent of the time in office, ensures that everything that anyone learns is learned publicly. The learning is communicated between the pair and then tends to flow through the group, rather than remaining the property of one person.
- Assigning tasks to the least-qualified implementer minimizes the preconceptions that the pair brings to the task at hand. It also provides the most learning where it is most needed. In time, this results in the greatest total knowledge of each individual--he learns the whole system, not just his area of specialty.
- Beginner's mind is helped by interruptions and changes in direction. These actually serve to increase your velocity. They only become a problem if complete changes in direction happen more frequently than about half the mean time to complete a task. Small, completable tasks can reduce this time down to about fifteen minutes. This works well in production support, ops, and similar departments.
- The more rapid learning and communication requires trust. That, in turn, tends to build trust.
Some of the results teams consistently see when applying promiscuous pairing include:
- Reduced ramp-up time for new hires (two to three weeks to full productivity is the norm).
- Dramatically increased capabilities of all team members. They are usually specialist level in many different fields, simultaneously.
- Increased employee retention, as they are learning at a rate they have never before experienced.
- Increased team conflict at first, and an opportunity to get past it. Things that would normally take months to surface, are forced into the open in days. The team gets to deal with the conflicts as conflicts and fix them then move past. They don't remain unstated.
- Faster, more effective learning.
These are not always advantages for all teams. They are the consistent results, and an aware team can make them all be advantages.