Agile and Complexity

How agile copes with complexity?

Agile is a way to cope with complexity, when managing projects and creating new products or services.
Complexity is increased due to globalization, competitiveness, technological advance, economical and financial crisis, increased velocity in circulating information, increased number and typology of systems to connect together, increased numbers of stakeholders to involve and satisfy.
 
This scenario, applied to the software field, was already tackled in the nineties where agile started to make its first steps (DSDM, crystal, SCRUM, XP, etc.), and continued when Cockburn, Beck, Sutherland and all the other gurus that gathered in 2001 to write the agile manifesto. They understood that the old way of managing projects and develop software (waterfall approach) were no more functioning because changes in complex systems happen everyday and it was necessary to manage them differently, quickly and effectively.

Complex Systems

A complex system is an open system that is able to interact actively with the world outside.
 
Any of these complex systems, comprise many internal components that communicate on their own, one with the others, using local interactions.
These interactions could happen simultaneously, in parallel, not following a predefined sequence or logic, which make them not predictable in their behaviors.

 

 

 

These components use feedback as a way to stimulate new behaviors or to confirm, regulate and balance the old ones. The way they decide to operate in such a communication could be self-arranged.

The components of a single complex system can be thought as an internal network of peers.

 

As above mentioned, they can also communicate autonomously with external components belonging to other systems, extending the network and increasing the complexity.
This means that a single peer is not 100% certain of what will be the response to a specific stimulus it sends out through the network, because of the number of relations the other peers rely on in order to react.
Every peer, hence, acts, waits, and receives feedback. Then, the component, inspects the feedback and, finally, adapts its behavior (do you remember the empirical approach?) according to what is just received.
 

This also means, that the more your network is able to catch, analyze and adequately react to these stimulus the better you are managing the complexity around you, your projects and your systems.

 

What does agile has to do with it?

 

The main traits of agile, in my opinion, are the ones that can help you managing the complexity and they are summarized here below:
  • enhance simplicity
  • high feedback exposure and exploitation
  • continuous process improvement
  • communication effectiveness
  • fond of talent and technical excellence
  • clear roles and responsibilies
  • keep networks connected
These are the most important of a list of most important characteristics.

Enhance Simplicity

Every process, ceremony, communication, decisional step, line of code written, should be thought and maintained as simple as possible.

High Feedback Exposure and Exploitation

In order to tackle any risk, opportunity, event not planned, any deliverable or decision must be shared with the relevant stakeholders and feedback must be requested.
This is also applied within the team: any member informs the others about progress, problems, warnings s/he is aware of.
This helps to catch any variance and to steer the project toward a safer place.

Continuous Process Improvement

The more a component is able to adjust its behavior toward the simplicity and the effectiveness in its behavior, the more the complexity can be understood and broken down in small chunks, that are much more manageable.
This approach in reducing compexity into chunks, actually scales it down into complicated “problems” (see the stacey matrix).

Communication effectiveness

As above mentioned, communication and interactions are paramount when managing complexity.
Agile wants to facilitate as much as possible the way the different components communicate and interact each other.
This is the reason why the agile manifesto tell us about the importance of individual and their interactions and the importance of direct and effective communication.

Fond of Talent and Technical Excellence

Complexity cannot be wholly centrally managed. Central decisions should be taken for the most important topics, avoiding micro-management.
This means that each peer (team members) and the relative sub-networks (teams) must be able to take the decisions that they as experts should take according to their experience.
This is the reason why any agile team should have on board talented people having the adequate technical excellence in order to choose the best way to solve problems, acting, inspecting, deciding and adapting.

Clear Roles and Responsibilies

Information can circulate faster and effectively in a network, only if the network itself knows how to manage it.
This is the reason why the agile disciplines (XP, SCRUM, DSDM, etc.) identify clear roles, responsibilities and rules in order to let the “energy flows”.

Connecting the different Networks

A disruptive behavior when facing to complexity is to let each sub-network behave as an isolated island.
When this happens information stops to flow freely and smoothly, problems don’t emerge anymore and, because of the isolation, each island finds and implements different solutions to same problems…in one word: waste.
 

Agile (and SCRUM particularly) to avoid such a situation, provides specific moments in which the different stakeholders involved in the project (teams interconnected and not, sponsor, managaement, customers. etc) meet together.
These moments are, for example, the release and sprint planning meeting, the daily meeting, the demo meeting.

 

Finally, such a complexity should be handled by smart, clever and motivated people.
Does it sound familiar? (“Build projects around motivated individuals…” one of the principles of the agile manifesto)

PMI-NIC Agilmente Conference

May 11th I’m having a talk during the event “Agilmente” organized by PMI-NIC in Portonovo, Ancona.

Agilmente

Click here to download the brochure of the event or click here to visit the PMI-NIC website.

Are you already registered?

Driving team talent, through passion, achieving excellence

Are you driving your team toward excellence?

When speaking of talent, tendency is to think of it as a supreme gift: either you have it or not, you can’t build or develop it, it’s out of your sphere of influence.
The definition of talent in recent years has drastically and completely changed the perspective on how talent is perceived and thought: it can be defined as a set of mindsets, approaches, sensitivity, recurring behavioral filters and patterns every individual possesses, which can be furthermore trained and developed.
Have you ever had to perform an activity or a task that you initially thought particularly difficult and in the end it turned out to be less complicated than expected? Or again, talking with a friend of yours, did it ever happen that she ask how you have been able to do it so well and quickly?

Those are clear signs that, to perform that task attaining such a great results, you fielded some of your talents.
The good news is that the more you are going to train those capabilities, the easier and more natural you will be able to transform them in exceptional performances.

Most professional athletes, speaking on how they were been able to develop their talents, they cite three important factors: having discovered early about their talents (intuition), having trained it a lot and with continuity (perseverance), having been stubborn in believing in yourself (trust and faith).

One trick would seem to match talent with passion, actually, being two faces of the same coin: this factor, on its own, allow everyone to persist during strenuous training sessions, without feeling too much fatigued, giving free rein to an inner necessity.
Thus, achieving the fluency that the Tai Chi practitioners indicate to be the ‘Ri’ stage in the ‘Shu-Ha-Ri’ learning process, where there is no anymore the necessity to give names to the techniques learned, these ones are now used and executed naturally because they already are in the muscle-memory.

Talents are always looking for new challenges, anything else, earlier, would fail them into boredom.
Facing challenges allow them to learn and improve and refine their abilities, in a never ending cycle of continuous process improvement (do you remember the Deming’s PDCA Cycle or even the Kaizen practice from Masaaki Imai?)
People like these are the ones every leader would have on board in their teams. This is even more important when managing projects with high complexity, high specialization, multifaceted systems and technology: projects like these necessitate outstanding skills to be effectively managed.

This is what the authors of the agile manifesto intended when they wrote the values and principles of that document.

They stressed the necessity to value individuals and their interactions, to build project around motivated people, not the other way round, furthermore they described the urgency in pursuing continuously the technical excellence and that the best architectures, requirements, and designs emerge from self-organizing teams.

This is what Peter Druker wanted to tell us with the statement:

People should perform tasks according to their strengths.

Do not waste time trying to get them better with their weaknesses
This is the reason why leaders should discover as soon as possible, their collaborators’ talent helping them to nurture it, transforming those people from good worker to excellent performers.
This last should be a fundamental rule in every agile team.

WordPress Themes