Software Engineering
for CEOs
Gabe Hamilton
And Product Managers, Tech Writer, Implementers, etc...
all the members of a software ecosystem.
a lot of companies are Software companies
and you’re
wondering...
When will it
be done?
*specifically when will Mario Kart 8 be done
Or you’re an engineer who needs to Communicate about software projects.
And engineers forget
Engineers become Director, CTO, CEO
and start wondering,
“when will it be done?”
The Problem with
Software Projects
Problems
The right Metaphor
Diseconomy of Scale
Knowledge Work Trilemma
Problems
The right Metaphor - Planning
Diseconomy of Scale - Communication
Knowledge Work Trilemma - Speed / Features /
Quality
Planning
Scaling Communication
Speed / Features / Quality
Problems Solutions
Agile planning
Pair Programming
Feature-Slip Iterations
Team Size
Hiring
Planning
Communication
Speed / Features / Quality
Problems Tech Solutions
Test Driven Development
Distributed Version Control
Continuous Integration
Deployment Pipeline
Problems
The right Metaphor - Planning
Construction
Everyone has at least some familiarity with
Construction so it’s a natural metaphor.
And it works fairly well
For the right kind of construction project
Building houses is a good metaphor for
installing software
Repeat roughly the same process many times and expect some variability.
Putting together a shed takes days, building a house takes weeks.
Installing a program on your computer takes 10 minutes, setting up a server
may take a few days.
Building something new
Something that
has never been
done before.
Software that will
make a mark on
the world!
Custom Software Systems
Have more in common with large,
ambitious construction projects.
Huge bridges, tunnels under the
ocean, mag-lev rail lines.
Billion dollar projects
In other words things that fail
Airports are a good metaphor for
software engineering.
Major Airports
Start operating when
partway done.
Each one is different.
Try difficult new things.
Projected Cost: $1.1 Billion
Actual Cost: $4.8 Billion 16 months late
Unique feature: automated baggage system
Projected Cost: $7.5 Billion
Actual Cost: $20 Billion
Unique feature: built on the ocean
https://www.infoq.com/articles/standish-chaos-2015
In my experience
10 large,
multi-year
software
projects.
Three that were
“challenged”, ie
way over time
and budget.
Each of the
three had a
well defined
plan of what
to build over
the next year.
Two were built over five years.
One was stopped after two years.
Solutions
We have found a useful metaphor for discussing
software.
It has construction and operations at the same
time. It is complex and unique.
However it is a cautionary tale, “Don’t build
software as a mega-project unless you want to fail
like a mega-project.”
Solutions
Fortunately we
don’t have the
same
constraints as a
mega-construc
tion project.
We can plan viable standalone
pieces.
We can deliver those pieces and
get feedback (MVPs)
Especially if we plan to open
before the whole thing is
complete.
Solutions
We can plan for failure.
If we know our plan won’t
be right, how do we fail
gracefully.
Deadlines need to be
feature slip.
Required features need
to be time slip.
Diseconomy of Scale
Programs are extremely complex.
To change one you need to know how it works.
*where ½ = lots. Other half is rumored to consist of perspiration & inspiration.
Software is ½*
communication
Imagine a
flowchart
that explains what
1 programmer
wrote today.
Collect each day’s in a book
Add a page
explaining how
it relates to
yesterday’s
flowchart.
Give this book to the new person
Would you like
everyone else’s book
from this month?
Brooks’s law
adding [people] to a late
software project makes it
later
"Nine women can't make a baby in one month."
Communication Paths
1 person
2 people
what was I doing 3
months ago?
Communication Paths
3 people
4 people
3 paths
6 paths
# of Communication Paths
1st person has a path to each of the others
2nd person needs a path to everyone except the 1st, …
4 people = 6 paths = 3 + 2 + 1
5 people = 10 paths = 4 + 3 + 2 + 1
It’s the Summation of 1..N-1 = (N-1 x N) / 2
yay, combinatorial growth
6 people
8 people
15 paths
21 paths?
?
?
?
12 people
20 people
66 paths
190 paths
100 people ~5,000 paths
?
? ?
?
Now wait
We have 65 years of solutions to this
problem, just in software.
Hierarchy, teams, departments; Procedural,
Imperative, Functional, OO Programming;
APIs; Extreme, Agile, Scrum, Kanban Iterations;
project, product, development - lead, manager,
architects.
Many forms of Communication
More managers: build system managers, report managers.
Teams that build and maintain layers of communication
between other teams (APIs).
Technical debt as lack of communication, lurking problems
and inefficiencies throughout the code.
Solutions
The Surgical Team
We can only cluster 8
people around each
patient.
Pair Programming
Consistently pay
communication costs
upfront.
Hiring
Great people who get
more done means less
communication load.
Version Control, CI,
Branching / Merging
strategies
Communication flows
and gateways.
Trilemma: you can constrain two, the
third will move.
Speed, Features, Quality
Speed Features
Quality
Development Cost
Sales
Sales
Maintenance Cost
There are many constraints in building software, most of them are tied to the core
tradeoff between Speed, Features, and Quality.
Speed Features
Quality
There is a lot of pressure in favor of Speed and Features
And for decades this was the dominant shape
4pts
Next round, you have 6 points
Start with 10 points
Quality determines the speed limit
Every few months you have to reallocate.
4pts
2pts
Speed Deal Value
Quality
Sales for example
Same tradeoff in other knowledge work
I need you to sell $100K to these 25 customers this month
Our sales team will have the same problems
Bad requirements: these couple customers aren’t qualified
Can they be sold in a month?
I don’t know, I haven’t talked to anyone at the company yet.
Ok we sold them all!
Just don’t look at how we had to squeeze quality to do so (sold features we
don’t have, unrealistic timelines, etc)
Speed Features
Quality
Some options
A strategy from Open Source projects: Even / Odd releases
Stability release New feature release
Solutions
Agile planning
Deliver regularly
(Iterations)
Feature-Slip what makes
it into those iterations.
Hold Quality Constant
with
Pair Programming
Test Driven Development
Continuous Integration
Solutions
Next level
Continuous Delivery
“In Summary
“We need to get these
features in by the
deadline”
will kill your business.
CREDITS
Special thanks to all the people who made and
released these awesome resources for free:
╺ Presentation template by SlidesCarnival
╺ Photographs by Unsplash
Image Attributions
CEO cat http://mrg.bz/z9CBmN
Mountain http://mrg.bz/taTQ1v
4 books http://www.morguefile.com/archive/display/189153
Software Engineer
http://en.wikipedia.org/wiki/File:Coding_Shots_Annual_Plan_h
igh_res-5.jpg
Flowchart
http://commons.wikimedia.org/wiki/File:Euclid_flowchart_1.pn
g
Single Textbook http://en.wikipedia.org/wiki/File:Textbook.JPG
Fred Brooks
http://commons.wikimedia.org/wiki/File:Frederick_Brooks_IMG
_2261.jpg
Software Engineering
for CEOs
Gabe Hamilton

Software engineering for CEOs

  • 1.
  • 2.
    And Product Managers,Tech Writer, Implementers, etc... all the members of a software ecosystem.
  • 3.
    a lot ofcompanies are Software companies
  • 4.
    and you’re wondering... When willit be done? *specifically when will Mario Kart 8 be done
  • 5.
    Or you’re anengineer who needs to Communicate about software projects.
  • 6.
    And engineers forget Engineersbecome Director, CTO, CEO and start wondering, “when will it be done?”
  • 7.
  • 8.
    Problems The right Metaphor Diseconomyof Scale Knowledge Work Trilemma
  • 9.
    Problems The right Metaphor- Planning Diseconomy of Scale - Communication Knowledge Work Trilemma - Speed / Features / Quality
  • 10.
    Planning Scaling Communication Speed /Features / Quality Problems Solutions Agile planning Pair Programming Feature-Slip Iterations Team Size Hiring
  • 11.
    Planning Communication Speed / Features/ Quality Problems Tech Solutions Test Driven Development Distributed Version Control Continuous Integration Deployment Pipeline
  • 12.
  • 13.
    Construction Everyone has atleast some familiarity with Construction so it’s a natural metaphor. And it works fairly well For the right kind of construction project
  • 14.
    Building houses isa good metaphor for installing software Repeat roughly the same process many times and expect some variability. Putting together a shed takes days, building a house takes weeks. Installing a program on your computer takes 10 minutes, setting up a server may take a few days.
  • 15.
    Building something new Somethingthat has never been done before. Software that will make a mark on the world!
  • 16.
    Custom Software Systems Havemore in common with large, ambitious construction projects. Huge bridges, tunnels under the ocean, mag-lev rail lines. Billion dollar projects
  • 17.
    In other wordsthings that fail
  • 18.
    Airports are agood metaphor for software engineering.
  • 19.
    Major Airports Start operatingwhen partway done. Each one is different. Try difficult new things.
  • 20.
    Projected Cost: $1.1Billion Actual Cost: $4.8 Billion 16 months late Unique feature: automated baggage system
  • 21.
    Projected Cost: $7.5Billion Actual Cost: $20 Billion Unique feature: built on the ocean
  • 22.
  • 23.
    In my experience 10large, multi-year software projects. Three that were “challenged”, ie way over time and budget. Each of the three had a well defined plan of what to build over the next year. Two were built over five years. One was stopped after two years.
  • 24.
    Solutions We have founda useful metaphor for discussing software. It has construction and operations at the same time. It is complex and unique. However it is a cautionary tale, “Don’t build software as a mega-project unless you want to fail like a mega-project.”
  • 25.
    Solutions Fortunately we don’t havethe same constraints as a mega-construc tion project. We can plan viable standalone pieces. We can deliver those pieces and get feedback (MVPs) Especially if we plan to open before the whole thing is complete.
  • 26.
    Solutions We can planfor failure. If we know our plan won’t be right, how do we fail gracefully. Deadlines need to be feature slip. Required features need to be time slip.
  • 27.
    Diseconomy of Scale Programsare extremely complex. To change one you need to know how it works. *where ½ = lots. Other half is rumored to consist of perspiration & inspiration. Software is ½* communication
  • 28.
    Imagine a flowchart that explainswhat 1 programmer wrote today.
  • 29.
    Collect each day’sin a book Add a page explaining how it relates to yesterday’s flowchart.
  • 30.
    Give this bookto the new person Would you like everyone else’s book from this month?
  • 31.
    Brooks’s law adding [people]to a late software project makes it later "Nine women can't make a baby in one month."
  • 32.
    Communication Paths 1 person 2people what was I doing 3 months ago?
  • 33.
    Communication Paths 3 people 4people 3 paths 6 paths
  • 34.
    # of CommunicationPaths 1st person has a path to each of the others 2nd person needs a path to everyone except the 1st, … 4 people = 6 paths = 3 + 2 + 1 5 people = 10 paths = 4 + 3 + 2 + 1 It’s the Summation of 1..N-1 = (N-1 x N) / 2 yay, combinatorial growth
  • 35.
    6 people 8 people 15paths 21 paths? ? ? ?
  • 36.
    12 people 20 people 66paths 190 paths 100 people ~5,000 paths ? ? ? ?
  • 37.
    Now wait We have65 years of solutions to this problem, just in software. Hierarchy, teams, departments; Procedural, Imperative, Functional, OO Programming; APIs; Extreme, Agile, Scrum, Kanban Iterations; project, product, development - lead, manager, architects.
  • 38.
    Many forms ofCommunication More managers: build system managers, report managers. Teams that build and maintain layers of communication between other teams (APIs). Technical debt as lack of communication, lurking problems and inefficiencies throughout the code.
  • 39.
    Solutions The Surgical Team Wecan only cluster 8 people around each patient. Pair Programming Consistently pay communication costs upfront. Hiring Great people who get more done means less communication load. Version Control, CI, Branching / Merging strategies Communication flows and gateways.
  • 40.
    Trilemma: you canconstrain two, the third will move. Speed, Features, Quality
  • 41.
    Speed Features Quality Development Cost Sales Sales MaintenanceCost There are many constraints in building software, most of them are tied to the core tradeoff between Speed, Features, and Quality.
  • 42.
    Speed Features Quality There isa lot of pressure in favor of Speed and Features And for decades this was the dominant shape
  • 43.
    4pts Next round, youhave 6 points Start with 10 points Quality determines the speed limit Every few months you have to reallocate. 4pts 2pts
  • 44.
    Speed Deal Value Quality Salesfor example Same tradeoff in other knowledge work I need you to sell $100K to these 25 customers this month
  • 45.
    Our sales teamwill have the same problems Bad requirements: these couple customers aren’t qualified Can they be sold in a month? I don’t know, I haven’t talked to anyone at the company yet. Ok we sold them all! Just don’t look at how we had to squeeze quality to do so (sold features we don’t have, unrealistic timelines, etc)
  • 46.
    Speed Features Quality Some options Astrategy from Open Source projects: Even / Odd releases Stability release New feature release
  • 47.
    Solutions Agile planning Deliver regularly (Iterations) Feature-Slipwhat makes it into those iterations. Hold Quality Constant with Pair Programming Test Driven Development Continuous Integration
  • 48.
  • 49.
    “In Summary “We needto get these features in by the deadline” will kill your business.
  • 50.
    CREDITS Special thanks toall the people who made and released these awesome resources for free: ╺ Presentation template by SlidesCarnival ╺ Photographs by Unsplash Image Attributions CEO cat http://mrg.bz/z9CBmN Mountain http://mrg.bz/taTQ1v 4 books http://www.morguefile.com/archive/display/189153 Software Engineer http://en.wikipedia.org/wiki/File:Coding_Shots_Annual_Plan_h igh_res-5.jpg Flowchart http://commons.wikimedia.org/wiki/File:Euclid_flowchart_1.pn g Single Textbook http://en.wikipedia.org/wiki/File:Textbook.JPG Fred Brooks http://commons.wikimedia.org/wiki/File:Frederick_Brooks_IMG _2261.jpg
  • 51.