Allan Kelly
@allankellynet
allan@allankelly.net
http://www.allankelly.net
October 2016
is upside down
SoftwareDevelopment
Mental models
Mental models
“Agile Allan” Kelly…
Agile Training & Consulting for
Agile, adopting Agile, getting better
Organizing teams
Author
– Little Book of Requirements & User Stories
https://leanpub.com/userstories
– Xanpan: Team Centric Agile Software Development
https://leanpub.com/xanpan
– Business Patterns for Software Developers
– Changing Software Development: Learning to be Agile
allan@allankelly.net
http://www.allankelly.net
@allankellynet (Twitter)
Upsidedown
1. Diseconomies of Scale
2. Higher quality is faster
3. Quickest way to learn is to do
4. Do it right, then do the right thing
5. Worse is better
Diseconomies of Scale
Software development…
• Does NOT have economies of Scale
• Development has DISECONOMIES of scale
Milk is cheapest
in BIG cartons
Software is
cheapest in
lots of small
cartons
And small cartons
of software
reduce risk
Consider a large project
Against several small
projects
Project A: Risk = 30% Value at risk = £1m
Therefore risk weighted value = £300,000
Prj B: Risk = 15%
Value @ risk = £½m
Therefore … = £75,000
Prj C: Risk = 15%
Value @risk = £½m
Therefore … = £75,000
E: Risk = 6%
@risk = £200k
Therefore = £12k
F: Risk = 6%
@risk = £200k
Therefore = £12k
G: Risk = 6%
@risk = £200k
Therefore = £12k
H: Risk = 6%
@risk = £200k
Therefore = £12k
I: Risk = 6%
@risk = £200k
Therefore = £12k
Software development…
• Does NOT have economies of Scale
• Development has DISECONOMIES of scale
Therefore
• Stop thinking BIG
• Start thinking SMALL
Higher quality is faster
Quality… makes all things possible
Philip Crosby
"Quality has much in common with sex.
• Everyone is for it. (Under certain conditions of, course)
• Everyone feels they understand it. (Even though they
wouldn't want to explain it)
• Everyone thinks execution is only a matter of following
natural inclinations. (After all, we do get along
somehow)
And, of course, most people feel that all problems in these
areas are caused by other people."
public class RecentlyUsedList {
private List<string> list;
public RecentlyUsedList() {
list = new List<string>();
}
public string this[int index] {
get {
int position = 0;
foreach (string value in list) {
if (position == index)
return value;
++position; }
throw new ArgOutOfRngExcpt();
}
public int Count {
get {
int size = list.Count;
return size; } }
public void Add(string newItem) {
if (list.Contains(newItem)) {
int position =
list.IndexOf(newItem);
string existingItem =
list[position];
list.RemoveAt(position);
list.Insert(0, existingItem);
} else {
list.Insert(0, newItem); }
}
} }
public class RecentlyUsedList {
private List<string> list = new List<string>();
public void Add(string newItem) {
list.Remove(newItem);
list.Add(newItem); }
public int Count {
get {
return list.Count; }
}
public string this[int index] {
get {
return list[Count - index - 1]; }
} }
Code & refactoring from Kevlin Henney – www.curbralan.com
Quality -> Quicker
Capers Jones, 2008
Applied Software Measurement
Projects with low defect potentials
and
high defect removal efficiency
also have the shortest schedules,
lowest costs and
best customer satisfaction levels
Low Quality High Quality
Faster!
Low Quality High Quality
Faster!
How do you improve quality?
T D D
A T D D
B D D
John Cage
Defects are not free.
Somebody makes them, and
gets paid for making them
Quickest way to learn is
to do
"The world you perceive is drastically simplified
model of the real world. ”
Herbert A. Simon
Planning is learning
Planning is valuable
But…
Time to estimate & plan
2 minutes of work?
Average time to estimate:
6⅓ minutes
Average planning (inc. estimates):
11 minutes (total)
Mean average (median slightly less)
Data from 31 teams over 2 years
IBM 360
IBM 360 at Computer History Museum
Dave Ross: CCL license via WikiMedia
46 years …
1970 OS/360 model 195
• 10,000 KIPS (10 MIPS)
• 4096kb (4Mb)
• COBOL on OS/360
• IMS database
• Monthly rental $250,000
(Approx. $1.25m in 2016 prices)
2016 Raspberry Pi 2
• 4,744 MIPS
• 1 Gb
• Linux
• Python, Scala, Ruby, …
• SQL, NoSQL
• Buy $35
CPU cycles €€€->
Planning is cheap
CPU cycles €€€ ->
Planning is expensive
Valueofplanning
Time
Planning has rapidly diminishing
returns
Planning is learning
Planning is valuable
But…
Planning has rapidly
diminishing returns
If you want to finish sooner
Then
Start building sooner
Do it right,
then do the right thing
Humphrey's Law
“Users do not know what they want until they
see working software”
Watts Humphrey
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
He who learns fastest wins
“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
1) Do it right
Build a machine which can iterate
A learning machine
2) Do the right thing
Iterate your way to the right thing
Worse is better
Worse is better
in software making (and
perhaps in other arenas as well)
it is better to start with a
minimal creation and grow it as
needed
Richard “Dick” Gabriel, 1989
https://www.dreamsongs.com/WorseIsBetter.html
Piecemeal growth
Less is more
A complex system that works is invariably found
to have evolved from a simple system that
worked.
A complex system designed from scratch never
works and cannot be patched up to make it
work. You have to start over with a working
simple system.
Gall’s law
John Gall
1975
As a rule, software systems do not
work well until they have been used,
and have failed repeatedly, in real
applications.
Dave Parnas
Start small, grow…
• Software
• Teams
• Processes
• Organization
(Don’t forget Conway’s Law!)
Worse is better mode #2
Sometimestheupsidedownis
upsidedown
Sometimes the upside down is
upside down
Complexity
In software development we are
constantly battling complexity
Upsidedownthinkingmakesitall
morecomplex
Upside down thinking makes it all
more complicated
Today’s lesson:
Think the other way around to make
the world simpler
1. Diseconomies of Scale
2. Higher quality is faster
3. Quickest way to learn is to do
4. Do it right, then do the right thing
5. Worse is better
Questions?
allan kelly
allan@allankelly.net
www.softwarestrategy.co.uk
Twitter: @allankellynet
Xanpan - Amazon or LeanPub
https://leanpub.com/xanpan
½ price discount code: Lille
Little Book
https://leanpub.com/userstories

Software Development is Upside Down

  • 1.
  • 2.
  • 3.
  • 4.
    “Agile Allan” Kelly… AgileTraining & Consulting for Agile, adopting Agile, getting better Organizing teams Author – Little Book of Requirements & User Stories https://leanpub.com/userstories – Xanpan: Team Centric Agile Software Development https://leanpub.com/xanpan – Business Patterns for Software Developers – Changing Software Development: Learning to be Agile allan@allankelly.net http://www.allankelly.net @allankellynet (Twitter)
  • 5.
    Upsidedown 1. Diseconomies ofScale 2. Higher quality is faster 3. Quickest way to learn is to do 4. Do it right, then do the right thing 5. Worse is better
  • 6.
  • 7.
    Software development… • DoesNOT have economies of Scale • Development has DISECONOMIES of scale
  • 8.
    Milk is cheapest inBIG cartons Software is cheapest in lots of small cartons And small cartons of software reduce risk
  • 9.
    Consider a largeproject Against several small projects Project A: Risk = 30% Value at risk = £1m Therefore risk weighted value = £300,000 Prj B: Risk = 15% Value @ risk = £½m Therefore … = £75,000 Prj C: Risk = 15% Value @risk = £½m Therefore … = £75,000 E: Risk = 6% @risk = £200k Therefore = £12k F: Risk = 6% @risk = £200k Therefore = £12k G: Risk = 6% @risk = £200k Therefore = £12k H: Risk = 6% @risk = £200k Therefore = £12k I: Risk = 6% @risk = £200k Therefore = £12k
  • 10.
    Software development… • DoesNOT have economies of Scale • Development has DISECONOMIES of scale Therefore • Stop thinking BIG • Start thinking SMALL
  • 11.
  • 12.
    Quality… makes allthings possible Philip Crosby "Quality has much in common with sex. • Everyone is for it. (Under certain conditions of, course) • Everyone feels they understand it. (Even though they wouldn't want to explain it) • Everyone thinks execution is only a matter of following natural inclinations. (After all, we do get along somehow) And, of course, most people feel that all problems in these areas are caused by other people."
  • 13.
    public class RecentlyUsedList{ private List<string> list; public RecentlyUsedList() { list = new List<string>(); } public string this[int index] { get { int position = 0; foreach (string value in list) { if (position == index) return value; ++position; } throw new ArgOutOfRngExcpt(); } public int Count { get { int size = list.Count; return size; } } public void Add(string newItem) { if (list.Contains(newItem)) { int position = list.IndexOf(newItem); string existingItem = list[position]; list.RemoveAt(position); list.Insert(0, existingItem); } else { list.Insert(0, newItem); } } } }
  • 14.
    public class RecentlyUsedList{ private List<string> list = new List<string>(); public void Add(string newItem) { list.Remove(newItem); list.Add(newItem); } public int Count { get { return list.Count; } } public string this[int index] { get { return list[Count - index - 1]; } } } Code & refactoring from Kevlin Henney – www.curbralan.com
  • 15.
    Quality -> Quicker CapersJones, 2008 Applied Software Measurement Projects with low defect potentials and high defect removal efficiency also have the shortest schedules, lowest costs and best customer satisfaction levels
  • 16.
    Low Quality HighQuality Faster!
  • 17.
    Low Quality HighQuality Faster!
  • 18.
    How do youimprove quality? T D D A T D D B D D
  • 19.
    John Cage Defects arenot free. Somebody makes them, and gets paid for making them
  • 20.
    Quickest way tolearn is to do "The world you perceive is drastically simplified model of the real world. ” Herbert A. Simon
  • 21.
  • 22.
    Time to estimate& plan 2 minutes of work? Average time to estimate: 6⅓ minutes Average planning (inc. estimates): 11 minutes (total) Mean average (median slightly less) Data from 31 teams over 2 years
  • 23.
    IBM 360 IBM 360at Computer History Museum Dave Ross: CCL license via WikiMedia
  • 24.
    46 years … 1970OS/360 model 195 • 10,000 KIPS (10 MIPS) • 4096kb (4Mb) • COBOL on OS/360 • IMS database • Monthly rental $250,000 (Approx. $1.25m in 2016 prices) 2016 Raspberry Pi 2 • 4,744 MIPS • 1 Gb • Linux • Python, Scala, Ruby, … • SQL, NoSQL • Buy $35 CPU cycles €€€-> Planning is cheap CPU cycles €€€ -> Planning is expensive
  • 25.
  • 26.
    Planning is learning Planningis valuable But… Planning has rapidly diminishing returns
  • 27.
    If you wantto finish sooner Then Start building sooner
  • 28.
    Do it right, thendo the right thing
  • 29.
    Humphrey's Law “Users donot know what they want until they see working software” Watts Humphrey
  • 30.
    The Alignment Trap Less Effective More Effective Highlyaligned 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
  • 31.
    He who learnsfastest wins “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
  • 32.
    1) Do itright Build a machine which can iterate A learning machine 2) Do the right thing Iterate your way to the right thing
  • 33.
  • 34.
    Worse is better insoftware making (and perhaps in other arenas as well) it is better to start with a minimal creation and grow it as needed Richard “Dick” Gabriel, 1989 https://www.dreamsongs.com/WorseIsBetter.html Piecemeal growth
  • 35.
  • 36.
    A complex systemthat works is invariably found to have evolved from a simple system that worked. A complex system designed from scratch never works and cannot be patched up to make it work. You have to start over with a working simple system. Gall’s law John Gall 1975 As a rule, software systems do not work well until they have been used, and have failed repeatedly, in real applications. Dave Parnas
  • 37.
    Start small, grow… •Software • Teams • Processes • Organization (Don’t forget Conway’s Law!)
  • 38.
    Worse is bettermode #2 Sometimestheupsidedownis upsidedown Sometimes the upside down is upside down
  • 39.
  • 40.
    In software developmentwe are constantly battling complexity
  • 41.
  • 42.
    Upside down thinkingmakes it all more complicated
  • 43.
    Today’s lesson: Think theother way around to make the world simpler 1. Diseconomies of Scale 2. Higher quality is faster 3. Quickest way to learn is to do 4. Do it right, then do the right thing 5. Worse is better
  • 44.
    Questions? allan kelly allan@allankelly.net www.softwarestrategy.co.uk Twitter: @allankellynet Xanpan- Amazon or LeanPub https://leanpub.com/xanpan ½ price discount code: Lille Little Book https://leanpub.com/userstories