A Tribal Approach to Improving Agile Development
During summer 2005, I read the book Great Boss, Dead Boss by Ray Immelman upon recommendation by David Anderson. In 2005, David was the program manager for the MSF for CMMI Process Improvement methodology with Microsoft. Here is what David wrote about this book:
If you only read one book this year, it has to be this one ... This book has changed the way I think about organization and communication down, across and up. If management is about two things then organizational structure and communication are perhaps the two most basic. Great Boss, Dead Boss has made me rethink both of those.
I read the book, found it very interesting and yes, it change my way of thinking about organization. This book is a novel. This is the story of a quest to discover the characteristic of outstanding team. The main character is a manager who must put a microprocessors plant back on his feet. With the help of a mentor, a strong leader who has discovered through his personal experience that all social interaction in a team follow the attributes of prehistoric tribe, the main character will find one by one the tribal attributes of human behavior. The assumption of this book is that modern team behaves like tribes. Long time ago, when we were caveman, we use to belong to only one tribe. Of course modern individuals belong to more than one tribe but still our individual’s behaviors are defined by our tribal membership.
The major problem I face with this book is that once I finished it, I could not structure what I just learn and apply it in my daily job. I know that there was something important in this book. However, I could not easily figure it out and make a synthesis of this body of knowledge. I put it aside with the intention to revisit the book later.
This is what I did in 2006. I force myself to revisit the book by doing two presentations at local User Group about “Outstanding team and tribal attributes of human behavior”. This paper is a synthesis of these two presentations.
First, I have decided to classify tribal attributes express in Ray Immelman book according to Maslow’s hierarchy of human needs. Second, I have identified how these tribal attributes can easily be reinforced using agile software development process. Third, I conclude this synthesis by proposing to supplement agile software development process with improvement in order to encourage these tribal attributes to emerge.
Maslow's primary contribution to psychology is his Hierarchy of Human Needs, which he often presented as a pyramid.
Maslow contended that humans have a number of needs that are instinctual, that is, innate. The base of the pyramid is formed by the physiological needs, including the biological requirements for food, water, air, and sleep.
A Tribal Approach to Improving Agile Development
Once the physiological needs are met, an individual can concentrate on the second level, the need for safety and security. This second level of need is the main reason why tribe exists.
Safety Needs
Tribes exist because individuals act to reinforce their security when under threat. Included under safety are the needs for structure, order, security, and predictability.
There are two tribal attributes that fulfill safety needs:
- A strong tribe has a common enemy: Enemy is a competitor for tribe’s existence. It acts to destroy tribe’s mission. A common enemy provides clear external measures of success. Too often, within software development team, the common enemy is the client. Agile software development reacts to this situation by valuing more customer collaboration over contract negotiation. Agile team includes the customer as one of the member of the tribe. This improvement forces the tribe to focus on something else as a common enemy.
- A strong tribe has a leader dedicated to the tribe’s success: Leader is a safety and security figure head. He provides a clear definition of who is the common enemy. His role is to create a community of trust by providing structure, order, and predictability. Agile software development methodology such as Scrum recognizes the need for a leader dedicated to the tribe’s success. They name this role ScrumMaster to differentiate it from project manager. He is a facilitator with the key responsibilities to ensure that the process is followed and that the team is fully functional and productive.
Belonging needs
The third level is the need for love and belonging. Included here are the needs for friends and companions, a supportive family, identification with a group, and an intimate relationship. This involves emotionally-based relationships in general.
There are four tribal attributes that fulfill belonging needs:
- A strong tribe has clear and credible criteria for tribal membership: Role is the criteria for tribal membership. Roles are based upon know-how and social skills. Tribal roles are fundamentally different from accepted functional roles. Some role exists only to fulfill social requirements. The most common role in agile software development are customer responsible for product management, leader in charge of the process such as ScrumMaster, project manager, software architect, developer, tester and user experience specialist.
- A strong tribe has an accepted rite of passage: Membership authority is based upon rite of passage that demonstrate competency. An important rite of passage with agile software development is code review activities.
- A strong tribe has clearly defined symbols: Peers signify their membership by associating with tribe symbols. A common symbol of every tribe is the untouchable; an undistinguished common enemy of the tribe. Strong tribe knows how it compares to the untouchable. Symbols are often associated with domain specific language of the tribe. For example, a clear defined symbol for agile team is coding standards and collective code ownership. Developers signify their membership by following coding standard.
- A strong tribe expects unquestioning loyalty and has a clearly defined and well-known justice mechanism: Peers demonstrate unquestioning loyalty by accepting transparency trustworthy but, in counterpart, they expect restorative justice. For example, agile software development make all the work in a project visible which, in counterpart, must lead for realistic estimate and sustainable pace with no more than 40 hours of work per week.
Esteem needs
Once the belonging needs are met, an individual can concentrate on the fourth level, the needs for esteem. This group of needs requires both recognition from other people that results in feelings of prestige, acceptance, and status, and self-esteem. Lack of satisfaction of the esteem needs results in discouragement and feelings of inferiority
There are two tribal attributes that fulfill esteem needs:
- A strong tribe has a credible just cause for its continued existence: A mission with a credible just cause results in feeling of adequacy, competence, and confidence. For example, agile software development works toward a shared vision of a credible just cause by placing the highest priority to “satisfy the customer through early and continuous delivery of valuable software”.
- A strong tribe offers a super ordinate identity to all sub-tribes and individuals: This identity enables recognition from other people and results in feelings of prestige and acceptance by individuals. Individual’s behavior is defined by their tribal membership. “Working software” is clearly a super ordinate identity of agile team. Agile software development process use “working software” as a mean to provide external visibility to gain recognition and give individual a sense of contribution and self-value.
Being values
Though the first four levels may be seen as "basic" needs, and can be met and neutralized (i.e. they stop being motivators in one's life), self-actualization and transcendence are "being values" or "growth needs", i.e. they are enduring motivations or drivers of behavior.
Self-actualization is the instinctual need of humans to make the most of their unique abilities and to strive to be the best they can be. There is one tribal attributes that fulfill actualization needs:
- A strong tribe communicates in a non-traditional, subjective and intuitive manner: The tribe develops its own unique language and promotes transparency of information. Peers exhibits collective emergent behavior. In certain circumstance, peers do not really need to use word to understand each other. One way for agile team to create the initial condition for self-actualization is to place the whole team in one big room. This ensures transparency of information and favor emergent behavior.
At the top of the triangle, self-transcendence is also sometimes referred to as spiritual needs. Viktor Frankl expresses the relationship between self-actualization and self-transcendence in Man's Search for Meaning. He wrote:
“Human experience is essentially self-transcendence rather than self-actualization. Self-actualization is not a possible aim at all, for the simple reason that the more a man would strive for it, the more he would miss it.... In other words, self-actualization cannot be attained if it is made an end in itself, but only as a side effect of self-transcendence.”
There is two tribal attributes that fulfill self-transcendence needs:
- A strong tribe celebrates and cares for the skills, tools and implements required for its prosperity: The tribe understands and protects its source of power. It possesses objects that embody the tribe’s value as well as a walled city – a place of refuge where things of value to the tribe are kept. For an agile team, working software is the source of power. For this reason, the continuous integration server is a walled city. Furthermore, some team even makes these machines a team member by giving them their own nickname.
- A strong tribe records and celebrates significant events that reinforce their identity and value: The tribe has a clearly defined icon that embodies the tribal value. For example, iteration review is an important tribal value of agile software development. For this reason, almost all agile team ensures to terminate iteration review and retrospective with a celebration.
Conclusion
In conclusion, it is interesting to note that one of the most basic needs of safety and security is not well satisfy by agile software development team. The common enemy is almost never explicitly defined when we try to capture project vision. Agile software development process must provide a clear definition of who are the competitors and make sure that all team members agree that these competitors are the common enemy. One interesting approach is to prioritize requirements as suggest by David Anderson using "Table stakes" (or commodities), differentiators and spoilers”. This ensure that the team explicitly recognize who are the competitions.
Concerning the basic need of belonging, agile software development process should promote a bigger set of membership symbols. Coding standard is very good but other symbol should be included as well:
- Explicit architecture decisions
- Code coverage measure for unit test
- Low cyclomatic complexity
- Threat modeling and secure coding standard
- Risk list (top 10)
In regard with esteem needs, agile software development process must emphases that “satisfy the customer through early and continuous delivery of valuable software” is a credible just cause. The emphasis could even be stronger if we associate the message with a membership symbol. Team velocity seems to me like a promising path in this regard.
Concerning the growth needs, the top level of the hierarchy, agile software development process should add explicitly a celebration step once iteration review and retrospective is terminated. Explicit conditions for self-transcendence behavior create an enduring motivation to fulfill the credible just cause of every agile team which is to “satisfy the customer through early and continuous delivery of valuable software”.