The book is a true reference of those interested in agile management, mainly because it is changing the paradigm of managing software development businesses. Appelo has a holistic view of the management and leadership required to be applied in a companies aiming to embrace agile principles. The start point of his theory is that the poor management is one of the main impediments in implementing agile.
The book structure is somewhat simple: to effectively manage and lead an agile company, one needs to embrace the complexity of the reality and to strive to induce as much predictability as possible, knowing that the structure of the company will always be complicated, while the behavior will always be complex.
To do this, a manager/leader should continuously strive to energize people, to empower teams, to develop competence, to grow and nurture structure, to create alignment, to ceaselessly seek improvements and to be aware that none of the theories will work 100%, but some would prove helpful.
There were so far three stages of management:
— Management 1.0, which was all about hierarchies and the chain of command that comes along with them. The few people on the top are in control and as we gradually descend on the company ladder there is less power and less control. To motivate the top commanders there were bonuses, which served as an incentive to seek for company’s well being. The side effect was that bonuses became more important than strategies and decisions and this led also to financial implosion.
— Management 2.0, which was not really a different approach, but a series of add-ons plugged in to Management 1.0, such as Balanced Scorecard, Six Sigma, Theory of Constraints and Total Quality Management. Some of them worked, some of them didn’t. To increase the confusion, many of these add-ons are contradicting each other, each one pretending to be the real solution.
— Management 3.0, which is a real step forward, introducing the theory of complexity as a response to the Age of Complexity, as Stephen Hawkins called the 21st century. Leadership is introduced along with management. And organizations are perceived as networks, despite their outer look as hierarchies.
Taking about leadership, the author differentiates among three type of approaches:
— Leadership princes, the ones that claim that “leadership is different from management”, that is taking place at a “higher” level. They see leadership being about inspiration, while management is about execution. But by definition leaders have no power of authority over others. Why would a shareholder give money to someone that has no authority? And how about other people in the organization that are not managers, but could be true leaders?
— Leadership priests, the ones that claim that “management is not needed”. They refer to social media, to organizations such as Wikipedia, Linux and others that are functioning based on a shared purpose, suggesting that self-organized teams do not need management, only leaders with visions. But business have assets. And shareholders expect that those assets are not managed properly. So it is not the teams that need management, but the shareholders.
— Leadership pragmatists, are the ones introduced by this book. Managers are needed to take care of the business on behalf of the owners. And managers need to have leadership skills. But leadership can arise also from other layers of the organization, from non-managers. These informal leader must understand that the self-organizing teams must accept some directions from the owners, which passes through the managers.
The human brain is wired in a way that every event is perceived as the consequence of another, in a deterministic cause-effect approach, called linear thinking. This was probably helpful in early stages of humanity, when running from danger when danger was not there was a small price to pay compared to being killed by a predator. But the world has evolved in vary different way since those time, yet our mind tends to organize things in the same manner. Complexity has grown a lot around us and one may speculate that our actions as a species tend to increase this complexity. Linear thinking applied to such complexity may lead to painful mistakes.
Although reductionism — understanding a system by understanding its components — has been successful in science, it is generally accepted that it cannot bring us too far.
Holism — that sometimes is perceived as the opposite of reductionism — suggest that the behavior of a system cannot be determined by its component parts alone. For instance, there is more in a human being that its anatomical parts. Therefore, to understand a complex system, we need a holistic view over it.
Management 3.0 is a model for Agile management, which applies complexity thinking to Agile software development teams.
The Agile movement was the result of putting together the experience gathered through different attempts to “lightweight” the bureaucratic process of software development in the early 90’s. A number of persons got to initiative to hold a conference in 2001, where they elaborated the Agile Manifesto. It was initially perceived as a reaction to formalized classical processes, full of documentations and wasted time and budget, but very few noticed that the manifesto was equally stating its opposition to chaotic processes, undisciplined programmers and low-quality software products.
According to Appelo the fundamentals of Agile may be structured in 8 dimensions:
— People
Agile recognize that people are unique individuals and not replaceable resources. It counts on motivated individuals that are self-organizing their work, with accountability for their work.
— Functionality
Agile understands that the best products are built when customers are directly involved with the teams that create them. The requirements are specified in a concise manner, being detailed while they are selected for immediate implementation.
— Quality
For having successful products, quality is crucial. Therefore Agile promotes techniques that support this goal by Test-Driven Development, code reviews, definition of done and refactoring.
— Tools
There are two types of useful tools in Agile: the ones that replace repetitive and boring tasks (daily builds, continuous integration and automated tests) and the ones that radiate information to support a collaborative environment (task boards and burn charts).
— Time
Agile projects deliver results in time-boxed intervals, often called sprints or iterations, each one ending with a potentially shippable product. This allows customers to benefit as early as possible from the software implementation. On the other hand the team should always strive to maintain its development speed almost indefinitely to allow predictable future shipments.
— Value
One of the core concepts embedded in Agile is the need to respond to change — features that were valuable at a certain point in time, even if delivered to end-user, may become useless later. Agile tries to cope with this through short feedback loops and delivery cycles. Thus the business value of software development is maximized.
— Process
Agile suggests a people-over-process paradigm, but this doesn’t mean that the process is not important. On the contrary. Minimal planning, daily face-to-face communication, measurement of progress through working software assessment and regular reflection upon performance are mandatory parts of the Agile thinking.
— Conflict
There are often situations when Agile practitioners do not exactly agree upon some of the interpretations associated with certain concepts. This also part of the Agile fundamentals. At the end of the day the point is being among people who enjoy some things more than trying to improve on one another.
There is also a sort of competition for Agile movement, which is mainly represented by Lean software development. Inspired in its principles by the Toyota improvement processes, Lean software development is actually overlapping in many ways with Agile, thus bringing a more managerial view upon the improvement of the development process. A newcomer in this competition is Software Craftsmanship movement, that adds on top of Agile some of its own principles: well-crafted software, steadily adding value, community of professionals and productive partnerships with the customers. The old-school methodologies are not idle, trying to keep the pace — PMI has developed an Agile body of knowledge, CMMI has evolved into a framework that some are seeing as complementary to Agile, while the Unified Process (trying to combine the classical and the agile approaches) are continuously evolving from the vast Rational Unified Process toward more simplified versions, such as Agile Unified Process ans Open Unified Process.
The obstacles that stay in front of Agile are mainly related to management issues, particularly related to a lack of understanding of roles in an Agile organization.
Complexity science is a multidisciplinary approach into systems, which builds on earlier achievements in the field of general system theory, cybernetics, dynamic system theory, game theory and evolutionary theory.
It is widely acknowledged that findings in complexity science can be applied to social systems, like software development teams and management, though is still unclear how far we can go in copying system concepts from one discipline to another.
Systems may be analyzed from the perspective of two dimensions: structure and behavior. The structure may be simple or complicated, making it easier or more difficult to understand it. The behavior may be ordered (fully predictable), complex (somewhat predictable, but with many surprises) or chaotic (very unpredictable).
One important finding is that complexity (an indication of predictability) is different from complicatedness (an indication of understandability). Another finding is that many complex systems can adapt to changing environments, in which case we call them complex adaptive systems (CAS). Social complexity is the study of social groups as complex adaptive systems.
The software development teams are complex adaptive systems that are essentially transforming information in innovation. Although innovation is probably debatable as a term, the uniqueness of software code fits to the definition (we are not talking about inventions).
There are five necessary cogs to transform information into innovation:
— Knowledge, which is the fuel for inovation and is consistently and continuously built by the accumulated input of education, learning and experience;
— Creativity, which transforms knowledge in value, consisting in ideas that are both original and useful and may be perceived through a five-step process: preparation — incubation — intimation — illumination — verification;
— Motivation, which is the activation/energization of a goal-oriented behavior;
— Diversity, aka heterogeneity, which is important to create stability and resilience to environmental changes;
— Personality, as a sum of virtues like trust, respect, honesty — the right recipe depends on many things.
People are the only ones that can tranform information into innovation. Therefore people are important. But there is another reason why people are important and it has to do with the Law of Requisite Variety (W. Ross), which states that a system can be controlled by another system only when the other system is as complex or more complex than the first one. Therefore the control mechanism of any project should rely on people, not on processes and tools.
Energizing people has to do with 4 of the 5 cogs described in chapter 4: creativity, motivation, diversity and personality. Knowledge is more related to developing competence and will be discussed later, in the appropriate chapter.
Self-organization is the natural way things are happening in the known universe. In contrast, command-and-control is a quite recent paradigm invented by humans to drive things and people toward a predefined result. But it is not a natural way. In this perspective it is rather strange to consider that self-organization is a new approach to complex systems, as it has happened since the beginning of time.
Self-organization happens in a context. More than that, no self-organizing system exists without a context. And the context has a huge influence to the way the system is self-organizing, by introducing constraints and directions.
Self-organization must happen toward value. Value can be defined in various way, but it is also true that self-organization may happen toward bad results. In software development the value is the one defined by the customer, therefore there should be less debates about opportunity or morality of the result.
Self-organization is a a form of acceptable anarchy. The term anarchy defines the absence of order and/or formal authority, which is partly true, as a self-organizing system does not rely on predefined rules or external management. Still, to some people anarchy leads to chaos, but this is not the goal of self-organization. When the behavior of the system involves a certain degree of complexity, self-organization should bring as much order as possible (while keeping the efficacy). So the similitude between self-organization and anarchy is limited to the absence of formal authorities.
Self-organization should trigger emergence. Emergence is the ability of a system composed of distinct and different parts to have properties that are not present in any of their components. This is how self-organizing teams are making collective decisions and have a consistent view of their objectives, despite the different individual views of each team member. A self-organizing system that has emergence is more than just the sum of its parts.
The Darkness Principle states that each component of a system should be ignorant of all behaviors of the entire system. Otherwise, the part that “knows” the entire system is the system itself and makes all other parts useless.
Delegation of control is the only valid response to the Conant-Ashby Theorem (Every good regulator of a system must have a model of that system). Self-organizing systems that are too complex to have a valid exhaustive model of them must delegate control to the subsystems that are closer to the information needed for control. Distributed control is mandatory for a complex system to work.
Empowerment is a concept of delegating both the responsibility and the authority of making decisions. Empowerment is a necessity for self-organizing systems to function properly. Instead of focusing on controlling and deciding, a manager should be a Gardner that grows and nurture the system.
Do not create motivational debt. People don’t want to be told what to do, they want to be asked. Wear a wizard’s hat. A manager is not there to do the work, but to support the team to succed.
Empowerment is more than delegation. Empowerment includes also a support of the manager for risk taking, personal growth and cultural change. Empowerment is key for the manageability of a complex system. Reduce the fear of empowering people, and increase the status by leading powerful teams.
Choose the right maturity level (low, moderate or high empowerment) depending on their experience an expertise. Bring everyone to the high empowerment level, but not by skipping stages.
Pick the right authority level (tell=decide and tell them, sell=decide and sell to them, consult=ask opinion then decide, agree=jointly decide, advise=share your opinion and let them decide, inquire=let them decide then ask questions, delegate=just let them decide) depending on the importance of each task.
Apart from choosing the right maturity and authority level, assign teams or individuals to each task.
The delegation checklist
- Is the risk factor of delegating this work adequately addressed?
- Have you considered and selected the right level of authority?
- Have you considered the question of delegating to individuals or to teams?
- Have you considered the best order of delegating this work versus other work?
- Is what you are delegating a discrete chunk of work?
- Do the people have the skills to do this particular kind of work?
- Do the people have the right format for the work products to use?
- Do the people have the tools necessary to be successful?
- Do the people know what the results should look like?
- Have you set the boundary conditions for the work (e.g. budget, time, resources, quality)?
- Do the people know when the work is due?
- Do the people know what progress looks like?
- Do the people know how often to report to you on progress (adhering to interim milestones)?
- Is someone available (you or another person) to coach or mentor the people in case they need help?
When empowering people, practice patience and resist your manager’s resistance. Always try to address people’s 10 intrinsic desires, the ones investigated earlier (chapter 5). Make sure that the environment is supportive with empowerment.
Trust and respect are fundamental virtues to the empowerment. Without them empowerment doesn’t work.
…
…
…
…
…
…
…
…
…