4. â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)
5. 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
10. Software developmentâŚ
⢠Does NOT have economies of Scale
⢠Development has DISECONOMIES of scale
Therefore
⢠Stop thinking BIG
⢠Start thinking SMALL
12. 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."
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
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
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 360 at Computer History Museum
Dave Ross: CCL license via WikiMedia
24. 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
30. 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
31. 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
32. 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
34. 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
36. 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
43. 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