SLIDE 1 How did we end up here?
Todd Montgomery - @toddlmontgomery Martin Thompson - @mjpt777
SLIDE 2
SLIDE 3
SLIDE 4
SLIDE 5
SLIDE 6
How bad can things really be?
SLIDE 7 Successful Challenged Failure
Ad-hoc 49% 37% 14% Iterative 61% 28% 11% Agile 60% 28% 12% Traditional 47% 36% 17% Software Project Success Rates
SLIDE 8 < 10 11 - 25 > 25
Ad-hoc 70% 58% 40% Iterative 88% 68% 55% Agile 83% 70% 55% Traditional 69% 51% 50% Software Project Success Rates – by Team Size
SLIDE 10 Successful: 32% Challenged: 44% Failure: 24%
– Standish Group Chaos Report 2010
Software Project Success Rates
SLIDE 11 < $350,000: 20% $350,000 - $1,000,000: 25% > $1,000,000: 28%
– Gartner 2012
Software Project Failure Rates
SLIDE 12 “...the larger the company, the greater the chance that what drives tech investments isn't what's best for the business, but what's best for the decision-maker's career.”
– Information Week (EA Section)
SLIDE 13
Sacred Cows - It’s BBQ Time!!!
SLIDE 14
Enterprise Software
SLIDE 15 ent•ter•prise
noun \ˈen-tə(r)-ˌprīz\ : a project or activity that involves many people and that is often difficult : the ability or desire to do dangerous or difficult things or to solve problems in new ways
Source: http://www.merriam-webster.com/
SLIDE 16
SLIDE 17 Are you selling code, people, or
Enterprise Software
SLIDE 18
SLIDE 19
Product Management
SLIDE 20
Minimum Viable Product ?
SLIDE 21
Product Owner ?
SLIDE 22
SLIDE 23
Technologists ARE part of the business
SLIDE 24
Take responsibility for ROI
SLIDE 25
Agile Methods
SLIDE 26
SLIDE 27
SLIDE 28
Water-scrum-fall
SLIDE 29
What really matters?
SLIDE 30
Need to focus on learning, feedback cycles, and outcomes
SLIDE 31
There is an uncomfortable truth…
SLIDE 32
Bug Triage
SLIDE 33 tri•age
noun \ trē-ˈäzh, ˈtrē-ˌ\ : the sorting of and allocation of treatment to patients and especially battle and disaster victims according to a system of priorities designed to maximize the number of survivors.
Source: http://www.merriam-webster.com/
SLIDE 34
SLIDE 35
“Worse is Better...”
SLIDE 36
Really???
SLIDE 37
SLIDE 38 “The bitterness of poor quality is remembered long after the sweetness of a low price is faded from memory.”
SLIDE 39
SLIDE 40
Shared Mutable State
SLIDE 41
Shared Mutable State... the most feared words in computing
SLIDE 42
…if not they should be!
SLIDE 43
SLIDE 44
SLIDE 45
Shared Mutable State should only be used for systems programming
SLIDE 46
Embrace append-only, single writer, and shared nothing designs
SLIDE 47
If you don’t... math will hunt you down and there is nowhere to hide!
SLIDE 48 Universal Scalability Law
2 4 6 8 10 12 14 16 18 20 1 2 4 8 16 32 64 128 256 512 1024
Speedup Processors
Amdahl USL
SLIDE 49
Text Encoding
SLIDE 50
SLIDE 51
But it’s human readable...
SLIDE 52
Binary is hard to work with...
SLIDE 53
SLIDE 54
SLIDE 55
Big Data
SLIDE 56
Communications Battery life and bandwidth?
SLIDE 57
Synchronous Comms
SLIDE 58
Bad things will happen!!!
SLIDE 59
Synchronous Communication is the crystal meth of distributed programming
SLIDE 60
Causes a coupling in location and time
SLIDE 61
Errors need to be first class messages
SLIDE 62
Full-duplex vs Half-duplex
SLIDE 63 Are your micro services
SLIDE 64
Abstraction
SLIDE 65 “All non-trivial abstractions, to some extent, are leaky.”
SLIDE 66
“The detail of underlying complexity cannot be ignored.”
SLIDE 67 “the purpose of abstracting is not to be vague, but to create a new semantic level in which
- ne can be absolutely precise”
- Dijkstra
SLIDE 68
We could say the main issue is that people don’t understand abstractions...but...
SLIDE 69
Sins committed in the name of Abstraction
SLIDE 70
ORMs !!!
SLIDE 71
Functional Programming
SLIDE 72
What is the biggest issue with functional programming?
SLIDE 73
Functional Programmers
SLIDE 74
Functional programming is
NOT
the answer to multi-core
SLIDE 75
Software Transactional Memory was a failed experiment!
SLIDE 76
No Mechanical Sympathy?
SLIDE 77 “...software is not constrained by the physical world... don’t be a douche”
SLIDE 78
SLIDE 79
SLIDE 80
However there is genuine brilliance in functional programming
SLIDE 81
Collaborate and great things can happen...
SLIDE 82
Cloud Computing
SLIDE 83
Why has cloud computing taken off?
SLIDE 84
BOFH
SLIDE 85
Business Prevention Office
SLIDE 86
Opportunity Cost!!!
SLIDE 87 “Optimise for speed of delivery and you will deliver so fast you reduce costs”
SLIDE 88
Virtualization
SLIDE 89
SLIDE 90
SLIDE 91
Jigsaw
SLIDE 92
Throw hardware at it… development is too expensive
SLIDE 93
The free lunch is over…we cannot be sloppy anymore…
SLIDE 94 L0 1534 µops LB 28 µops
Loops
LB 28 µops
SLIDE 95
Code must be simple and composable
SLIDE 96 Cache Sub-System
L1(D) - 32K L2 - 256K L3 – 8-20MB LF/WC Buffers L1(I) – 32K L0(I) – 1.5k µops
32 Bytes / cycle
System Agent TLB Pre-fetchers TLB Pre-fetchers
128 bits / cycle
MOB Memory Controller QPI
QPI Bus Memory Channels 16 Bytes / cycle Ring Bus
PCI-e Controller
32 Bytes / cycle 32 Bytes / cycle
SLIDE 97
Patterns of access and locality are key to performance
SLIDE 98 Accumulated Improvement Time Bandwidth Latency
Memory Sub-System Performance
SLIDE 99
What does this mean for software?
SLIDE 100
Diversity
SLIDE 101
Testosterone Driven Development
SLIDE 102
SLIDE 103
What did the Carnegie Mellon studies show?
SLIDE 104
SLIDE 105 “As soon as you realise that most people don’t know what they are doing the world makes a lot more sense…”
– Farley’s second law
SLIDE 106
We need to look seriously at training programmers
SLIDE 107
Coaching and Apprenticeships
SLIDE 108 “The most important thing I've accomplished, other than building the compiler, is training young people.”
SLIDE 109 “'Do you think we can do this?' I say, ‘Try it.’ And I back 'em up. They need that. I keep track of them as they get older and I stir 'em up at intervals so they don't forget to take chances.
SLIDE 110
In closing…
SLIDE 111 What are the greatest achievements
SLIDE 112
The Scientific Method
SLIDE 113
Understanding of Evolution
SLIDE 114
Don’t feel bad… We are living in the era of Software Alchemy
SLIDE 115
SLIDE 116 Questions?
@mjpt777 – Martin Thompson @toddlmontgomery – Todd Montgomery
“It does not matter how intelligent you are, if you guess and that guess cannot be backed up by experimental evidence – then it is still a guess.”