This document discusses the importance of iteration in software development. It argues that the best way to determine the right approach is to start doing and learning quickly through fast, frequent iterations. This allows companies to experiment cheaply, fail fast when something isn't working, and evaluate results to determine the best path forward. The key takeaways are to learn to iterate quickly, fail fast and fail cheaply to minimize costs, and regularly evaluate and change direction based on learnings.
2. Allan Kelly
97 Things Every Programmer Should
Know
Henney, 2010
Context Encapsulation in
Pattern Languages of Program Design
Volume 5, 2006
Business Analysis
and Leadership:
Influencing
change
Penny Pullan &
James Archer
2013
Consulting software
development & strategy
Training for Agile
Author
– Changing Software Development: Learning to
be Agile (2008, Wiley)
– Business Patterns for Software Developers
(2012, Wiley - ISBN: 978-1119999249)
4. I am not saying
Knowingly do the Wrong Thing
I am saying
You only know the Right Thing by
doing
5. Exhibit A - The Alignment Trap
Less
Effective
More
Effective
Highly aligned
Less aligned
‘Alignment trap’
11% companies
+13% IT spending
-14% 3 year sales
growth
‘Maintenance zone’
74% companies
Avg IT spending
-2% 3 year sales
growth
‘IT Enabled growth’
7% companies
-6% IT spending
+35% 3 year sales
growth
‘Well-oiled IT’
8% companies
-15% IT spending
+11% 3 year sales
growth
Source:Shpilberg,Berez,Puryear,Shah:
MITSloanReview,Fall2007
1
2
Doingtherightthings
Doing things right
6. Doing the right thing…
• Costs
– Money: £consultants, $analysts, €managers
– Time: Analysis, research, meetings, discussions
• Assumptions
– There is a right answer
– And it is knowable
– No value in wrong answer
– That wrong & right are definable
7. Exhibit B – Lean Start-Up
• Knowing is difficult
• Get into the market to
find out
• See what people will
$pay for
– Not just what that €say
• Doing need not be
expensive
8. Exhibit C – Changing (Me!)
• Its about Learning
• To Learn we must do
• How can you increase
the pace of learning?
Learning
Change
9. Exhibit D – He who learns fasters
“We understand that the
only competitive advantage
the company of the future
will have is its managers’
ability to learn faster than
then their competitors.”
Arie de Geus, The Living Company 1988
10. How do you learn fast?
• Do
• How do you do?
• Iterate
– Iterate faster
– Iterate more
• Learn
• Learn to iterate faster, learn to aim better
12. Choose your weapon
M16 from Dragunova via WikiCommons, Creative Commons License
L115A3 from Defence on WikiCommon Open Government License
13. Or is your choice more like….
M16 from Dragunova via WikiCommons, Creative Commons License
Berdan Sharps rifle via WikiCommons, Public Domain image
14. Which are you?
Your delivery (supply) side?
Your business (demand) side?
(Ever heard about the M16 delivery team coupled
with a 19th century requirements process?)
15. Choose your weapon
Snipers Rifle
• Known target
• Clear shot
• Time to prepare
• Limited variables
Machine Gun
• Many targets
• Confused environment
• Time short – Action
required
• Many variables
• Frequently miss
16. Choose your approach
Sniper development
• Market is slow moving
• Market it known
• Competitors are slow
• Capital is scarce
• Development is expensive
• Risk of collateral
damage, e.g.
brand, individuals
Machine development
• Market is fast
• Market is changing
• Competitors are fast
• Capital is cheap
• Development is cheap (and
fast)
• Multiple failures, try again
17. Or do tools dictate approach?
“It takes a long time to reload and aim”
Therefore
“take time to make sure every shot counts”
20. Iteration is the key
• Get good at iterating
• Get good at iterating fast
• Get good at learning from results
– Test results with customer
– Test output in the market
– And Evaluate
Close the loop – evaluate
what you do & feedback
21. Let a thousand flowers bloom…
Get good at selecting those to keep - Cull the rest
22. Breaks are good
• Get good at….
– Knowing when to stop
– Stopping
• Technical has TDD, ATDD, BDD to stop
• Corporate breaks
– Portfolio management
– Venture Capital funding model
– Use a Dragon’s Den
23. You can’t see the future…
• You can’t know what will work
• Stop wasting time and money guessing
• Get good at probing – experimenting
• Conduct a lot of experiments
• Learn from experiments
• Stop those which “don’t work”
• Promote those which do
24. Iterate at all levels
Regularly Evaluate -> Set/change direction
Frequently Collect next -> Decide next
Most frequently Developer -> Release
• Build capability to iterate – and USE IT
• Use data gained from iteration
• Iterate your way to to The Right Thing
25. Allan’s
commandments
#1 Do it Right, Do it Fast; Learn & Iterate
#2 Fail fast, Fail Cheap;
Evaluate, Learn
#3 Invest in breaks;
Stop & Turn
26. Take-away
1. Fast iterations allow for
learning
– Learn to iterate fast
– Then iterate in the market
– Learn to evaluate & feedback
2. Fail fast, fail cheap, learn
3. Invest in breaks
allan kelly
Software Strategy Ltd.
www.allankelly.net
allan@allankelly.net
Twitter: @allankellynet