So, Now You're An Agilist, What's Next?

Post on 18-Oct-2014

17.028 views 0 download

description

Doing projects better doesn't stop at agile. In this presentation I attempt to distill new advances in software development from the field of complexity science. Complexity science is the study of complex systems, like ecosystems, biological systems, economic systems, etc. "Complexity science" is the scientific approach to "systems thinking". It can be used to understand and explain why complex systems behave the way they do. Ken Schwaber, Jim Highsmith and other experts have explained in their books that a lot of agile concepts have been copied from the study of complex systems. However, agile software development has not covered all there is to learn. I will show why practices must be agile (self-organized) *and* formal (controlled), why any software development method is doomed to fail, why managing scope is a too simplistic interpretation of the principle of “embracing change”, why most process improvement initiatives are linear and wrong, and why some sets of practices will be show chaotic behavior when combined.

Transcript of So, Now You're An Agilist, What's Next?

So, Now You’re an Agilist...

So, Now You’re an Agilist...

What’s Next?

Jurgen Appelo

jurgen@noop.nl

version 3

Jurgen Appelo writer, speaker,

entrepreneur...

www.jurgenappelo.com

Get my new book for FREE! m30.me/ss

A. psychological profiles B. leaders vs. rulers C. organization types D. organizational structures E. risk management F. organizational optimization G. adaptive methods H. non-linear improvement J. tuning process dependencies K. classification of methods

Agile... what’s next?

My ideas, taken from complexity science

photo by blumpy

disclaimer: this is a...

(I sometimes change my opinion)

photo by Randy Son of Robert

complexity what is it?

complex systems are

self-organized

photo by judepics

photo by ClintJCL

complex systems show

emergent behavior

photo by DavidHR

complex systems behave

in a non-linear way

photo by Noël Zia Lee

(many) complex systems are

adaptive

“For example, an ant colony, the brain, the immune system, a Scrum team, and New York City, are self-organizing systems.”

- Ken Schwaber

Agile Software Development with Scrum

“At the heart of complex adaptive systems theory’s relevance to software development

is the concept of emergence, and the factors leading to emergent results.”

- Jim Highsmith

Adaptive Software Development

some books I read…

The 12 Laws of Software Development

Reduce Risk Measure Performance Evaluate Feedback Acquire Knowledge Manage Uncertainty Evolve Practices

Motivate People Empower Teams Align Results Optimize Communication Enforce Discipline Restrain Growth

which led me to “discover”…

? :

? : ? :

? :

? :

? :

? :

? :

? :

? :

a complex system

? :

Agents Connections Rules

? :

? : ? :

? :

? :

? :

? :

? :

? :

? :

#1: the agents must be active

The 1st Law of Software Development

Motivate People

diversity

brings robustness and flexibility photo by woodleywonderworks

what motivates one demotivates another

Don’t agree?

There exists a selection of practices for which the sum of people’s motivational balances is optimal. therefore... “In a software project the optimal method is a function of the psychological profiles of its team members.”

Agreed?

A

? :

? : ? :

? :

? :

? :

? :

? :

? :

? :

#2: the system controls itself

The 2nd Law of Software Development

Empower Teams photo by Elvire.R.

? :

? : ? :

? :

? :

? :

? :

? :

? :

? :

#3: the system is unaligned

?

? ?

?

unaligned self-organization photo by aviplot

aligned self-organization photo by john w

The 3rd Law of Software Development

Align Results photo by The Wandering Angel

self-organization

this was the result of…

photo by hive

photo by Mike Licht

and this too…

ordered complex chaotic

empowerment alignment

ordered organizations need empowerment chaotic organizations need alignment

The Edge of Chaos

Don’t agree? Agreed?

“How to implement agile depends on whether you come from an ordered or a chaotic situation.”

C

? :

? : ? :

? :

? :

? :

? :

? :

? :

? :

#4: the agents communicate

photo by woodleywonderworks

Optimize Communication

The 4th Law of Software Development

photo by foxypar4

? :

? : ? :

? :

? :

? :

? :

? :

? :

? :

#5: the agents stick to rules

1. -----

2. ---

3. -----

1. -----

2. ---

3. -----

1. -----

2. ---

3. -----

1. -----

2. ---

3. ----- 1. -----

2. ---

3. -----

1. -----

2. ---

3. -----

1. -----

2. ---

3. -----

1. -----

2. ---

3. -----

1. -----

2. ---

3. -----

1. -----

2. ---

3. -----

The 5th Law of Software Development

Enforce Discipline photo by kaibara87

? :

? : ? :

? :

? :

? :

? :

? :

? :

? :

#6: the system tends to grow

? :

? :

? :

? :

? :

? :

? :

? :

? :

The 6th Law of Software Development

Restrain Growth photo by mountainamoeba

photo by daisybush

Parkinson’s Law

organizations tend to get bigger

Cope’s Rule

species tend to get bigger image by Bogdanov

Prevent systems from growing... 1. Limit input and output (keep it simple) 2. Make resources scarce (small budgets) 3. Reduce complexity (remove waste) 4. Clean up regularly (refactoring)

? :

? : ? :

? :

? :

? :

? :

? :

? :

? :

#7: the system is exposed to risk

The 7th Law of Software Development

Reduce Risk photo by rednuht

Self-Organized Criticality

a critical state of high risk photo by lrargerich

Don’t agree? Agreed?

Someone needs to try and reduce the system’s exposure to risk... “Risk management (mitigating potential impediments) can best be done by stepping outside the system.”

E

? :

? : ? :

? :

? :

? :

? :

? :

? :

? :

#8: the system must know how it’s doing

+/+

-/-

The 8th Law of Software Development

Measure Performance photo by xmatt

The Tragedy of the Commons:

using shared resources

photo by ojbyrne

optimize the whole

optimize the whole

= manage shared resources

Don’t agree? Agreed?

“Optimize the whole means to optimize to the largest possible span of control, which can mean: don’t optimize the individual software projects.”

F

? :

? : ? :

? :

? :

? :

? :

? :

? :

? :

#9: the system responds to the input

+/-

-/+

The 9th Law of Software Development

Evaluate Feedback photo by JasonRogers

? :

? : ? :

? :

? :

? :

? :

? :

? :

? :

#10: the system needs ways to learn

!

The 10th Law of Software Development

Aquire Knowledge photo by procsilas

? :

? : ? :

? :

? :

? :

? :

? :

? :

? :

#11: the system must cope with uncertainty

Adaptation to change…

The 11th Law of Software Development

Manage Uncertainty photo by rednuht

The Butterfly Effect

small variations, big impact photo by Hamed Saber

? :

? : ? :

? :

? :

? :

? :

? :

? :

? :

#12: the system figures out how to change

1. -----

2. ---

3. -----

1. -----

3. ---

4. -----

1. -----

2. ---

3. -----

1. -----

2. ---

3. ----- 1. -----

4. ---

5. -----

1. -----

2. ---

3. -----

1. -----

2. ---

3. -----

4. -----

5. ---

6. -----

2. -----

3. ---

5. -----

1. -----

2. ---

3. -----

photo by Sukanto Debnath

genotype (genes)

phenotype (body)

The 12th Law of Software Development

Evolve Practices photo by Hulagway

fixed practices = not complex at all

Don’t agree? Agreed?

Adaptive phenotype... changing requirements Adaptive genotype... changing environment “Not just the project, but the method itself must be adaptable too.”

G

Fitness Landscapes

evaluating performance photo by Hulagway

“It takes all the

running you can do,

to keep in the

same place.”

- Louis Carroll Through the Looking Glass

The Red Queen Effect

PDCA QIP AIM Pr2imer CPI-7

1. Determine Problems Plan Understand Assess Analysis Managing

2. Set Goals Set Goals Analyze Target Targets

3. Define Metrics Plan

4. Identify Improvements

Act Choose Improve Analyzing

5. Implement Improvements

Pilot Improving

6. Execute Processes (implicit)

Do Execute -- -- --

7. Check Measurements

Check Analyze Metricate -- Managing

process improvement

?

linear improvement

stuck on local optimum or walk through the valley

(things get worse before they get better)

Crossover

photo by Kevin N. Murphy

mixing practices from two sources

non-linear improvement

find higher peaks by averaging prior high performers

Don’t agree? Agreed?

“Linear improvement works up to a point, but to find the optimal development process you need a non-linear approach.”

H

moderately connected system

(several optimums)

sparsely connected system

(one optimum)

intensively connected system

(no real optimum)

Don’t agree? Agreed?

“Methods are strong when it’s easy to replace individual practices.”

J

sudden burst of solutions image by Karl J. Niklas

Punctuated Equilibrium

Attractors

convergence of forms photo by Okko Pyykkö

Don’t agree? Agreed?

“We now experience a burst of methods and tools, due to environmental change. This could converge into a few main forms with many small variations.”

K

The 12 Laws of Software Development

Reduce Risk Measure Performance Evaluate Feedback Acquire Knowledge Manage Uncertainty Evolve Practices

Motivate People Empower Teams Align Results Optimize Communication Enforce Discipline Restrain Growth

ANY creative team project

A. psychological profiles B. leaders vs. rulers C. organization types D. organizational structures E. risk management F. organizational optimization G. adaptive methods H. non-linear improvement J. tuning process dependencies K. classification of methods

Agile... what’s next?

Don’t agree? Agreed?

@jurgenappelo

slideshare.net/jurgenappelo

noop.nl

linkedin.com/in/jurgenappelo

jurgen@noop.nl

www.management30.com

http://creativecommons.org/licenses/by-nd/3.0/

This presentation was inspired by the works of many people, and I cannot possibly list them all. Though I did my very best to attribute all authors of texts and images, and to recognize any copyrights, if you think that anything in this presentation should be changed, added or removed, please contact me at jurgen@noop.nl.