SlideShare a Scribd company logo
WHY IS SOFTWARE
DEVELOPMENT SO HARD?
SEI 2015 Munich
Michael Lamont
lamont@post.harvard.edu
Dragon’sTriangle
Mysterious area off coast
of Japan where ships sink,
planes crash, and all kinds
of weird things happen
Software
BalancingAct
Successfully complete a
project plan while meeting
changing demands and
constraints
Unreasonable Constraints
• Set schedules & budgets without a detailed design
• Estimations performed without input from developers
• Ignoring interlocking relationships between cost, schedule, and
features
Three Sides of Software Dragon’s Triangle
• Scope
• Resources
• Schedule
SoftwareProject
Failure
Interrelated problems of
“Dragon’s Triangle” cause
a significant number of
software projects to
disappear
Non-Software
Industries
Is the grass greener
elsewhere?
Construction
Trade in your Nerf gun for
a nail gun? How much
harder can it be?
Easy&Straight-
Forward,Right?
• Clear requirements
• Expectations are easy
to manage
• Detailed plans
(blueprint)
• Well-established
principles
• Knowledgeable staff
• On time, on scope, on
budget
• $$$ for everyone!
NotActuallyThat
Simple…
• Construction doesn’t
often lend itself to a
cookie-cutter
approach
• Estimation can be
more of a dark art
than a simple process
• Experience and
intuition > science and
engineering
HowContractors
ActuallyGetPaid…
• No change to original
plans, no profit for
contractor
• Changes to original
blueprint are virtually
guaranteed
• Profit comes from
charging for changes
Softwareis
AlwaysNew
Every software system is
different from those that
came before, with its own
set of challenges and
issues.
There are real &
substantial differences
between building in the
real world and building
software.
When building software,
it’s impossible to predict
the problems you’ll face
before you’re well into the
development process.
Development teams love
to work on shiny new
projects, but complexity
lurks within
Physical objects have
tactile properties –
software does not.
Comparison of Hardware/Software Properties
Phenomenon Hardware Software
Manufacture of exact duplicates A challenge Not a problem
Wearing out with use or passage of
time
A major issue Not a problem
Human sensory experiences Not a problem Not experienced
Progress measured during
construction
Observable Observable only via a
baseline process
Cost, schedule, and planning Experienced
physically
Requires speculation
and relatively high risk
We can see & touch our
progress when building
things in the physical
world
In the real world, following
sequential steps gives us
incremental completion
we can experience and
evaluate
In early stages of software
development, all we have
are design and
architecture documents to
experience.
SoftwareIsA
LeapofFaith
All stakeholders have to
trust the process, and
believe progress is being
made.
Software engineering’s
track record at anticipating
and mitigating risks isn’t
great compared to
engineering in the physical
world.
Engineering in the physical
world is based on
unchanging laws that
make the future
predictable.
Lack of hard-and-fast
principles in software
world lets unpredictable
major setbacks occur in
moments.
When developing
software, it’s easy to get
forced into dealing with
simultaneous problems:
• Scheduling
• Cost
• Features
3 Points of the Dragon’s Triangle
Scope
Resources Schedule
3 Points of the Dragon’s Triangle
Scope
Resources Schedule
Softwareprojects
aren’t
deterministic
There isn’t a linear
relationship between
staffing and schedule, and
the relationship can even
go inverted (adding more
people makes the project
take longer)
7 8 9 10 11 12
1 2 3 4 5 6
7 8 9
1 2 3 4 5 6
1 2 3 4 5 6
TimeMarchesAt
AConstantRate
Why Is Managing Software So Hard?
FeatureCreep
The list of required
features always seems to
grow longer as a project
progresses – never shorter.
The“SadTruths”
NegativelyImpact
Morale
Dev team sees the size of
the project increase,
without a corresponding
increase in time and
resources
HiringNewPeople
MakesThings
Worse
New employees (or even
old employees who are
new to the project) require
a long runway to get up to
speed, and drain team
resources in the process
Remedies/Repercussions in Hardware &
Software Projects
Situation Hardware World Software World
Behind schedule Add people and/or equipment,
and balance expense
elsewhere
Adding people makes matters worse, so cut
features, which impacts customers and
morale. Or go into Death March Mode.
Over budget Stretch out delivery time; you
might lose incentive fees.
Adding people makes matters worse, so cut
features, which impacts customers and
morale. Or go into Death March Mode.
Not all features will be
delivered
Renegotiate the contract;
customer might get another
vendor to finish the job.
Reassess, focusing on customer’s “must
have” features; customer expectations might
impact opinion of results. Or go into Death
March Mode.
Remedies/Repercussions in Hardware &
Software Projects
Situation Hardware World Software World
Behind schedule Add people and/or equipment,
and balance expense
elsewhere
Adding people makes matters worse, so cut
features, which impacts customers and
morale. Or go into Death March Mode.
Over budget Stretch out delivery time; you
might lose incentive fees.
Adding people makes matters worse, so cut
features, which impacts customers and
morale. Or go into Death March Mode.
Not all features will be
delivered
Renegotiate the contract;
customer might get another
vendor to finish the job.
Reassess, focusing on customer’s “must
have” features; customer expectations might
impact opinion of results. Or go into Death
March Mode.
“DeathMarch
Mode”
• Slang for quickly
spending ridiculous
amounts of resources
to force a project to
completion
• Caused by the
software manager’s
failings
Deterministic
Problem:Hauling
Dirt
• Adding more people
gets the job done
faster
• But not really: still
scaling problems past
a certain point
SoftwareIsn’t
Deterministic
• No way to predict how
long it’ll take to
identify and fix a
specific defect
• “Death March Mode”
leads to mental
fatigue, which leads to
poor productivity and
mistakes
FeaturesCanBe
CutToResolve
Cost&Schedule
Issues
CuttingFeatures
HurtsDevTeam
Morale
Developers are artists, and
won’t be your biggest fan
if you cut a feature they’ve
poured their heart and
soul into for months
IfYouHaveTo
CutFeatures…
• Reassure the affected
developers that their
work is appreciated
• Feature cuts are due
to scheduling reasons,
not the developers’
skill level or work
product
“Wicked”
Problems
• Put forth by design
theorist Horst Rittel
• Describes a class of
problems that don’t
have bounded
solutions
• The more effort you
put into solving the
problem, the larger
the problem becomes
until infinity
• Software development
is a “wicked” problem
Criteria For “Wicked” Problems
• Cannot be definitively stated
• Software requirements change in unpredictable ways
• No rule or guideline to determine when the problem is solved
• Development on a product only stops when you run out of time or
money
• Solutions are “good” or “bad” – not “right” or “wrong”
• Software provides thousands of ways to meet even the most detailed
specifications
• Some solutions are better than others, even though they all meet spec
Criteria For “Wicked” Problems
• Cannot be definitively tested
• No scientific way to accept or reject a specific software solution
• Spec issues can be argued without clear rights and wrongs
• Solutions are too big (i.e., expensive) to experiment with
• Building multiple software systems and choosing the best is prohibitively
expensive
• There are unlimited solutions, and unlimited criteria for
evaluation
Criteria For “Wicked” Problems
• Every problem is unique
• Symptomatic of higher-level problems
• “Solving” one part of the problem can lead to unanticipated problems in
other areas
Conclusion:
Softwareisa
“WickedProblem”
Project success depends
on:
• Using what we know
when the project
starts
• Using the data we
gather over the course
of the project
• Trusting our data
enough to use it to see
the project through to
completion
Lotsofsoftware
development
“myths”have
takenonapatina
oftruth.
Software Development Myths
1. Software is easier to change than hardware
Large-scale projects in the
physical world undergo
intensive planning before
anyone touches a shovel
With software, it’s too
easy to think we “see” the
solution and start coding
immediately, without
really understanding the
problem.
Example: Y2K
Software Development Myths
1. Software is easier to change than hardware
2. Processes aren’t needed in “maintenance mode”
Aircraft maintenance
processes provide a useful
template for software
maintenance.
Careful records are kept of
every issue and action
taken, and analyzed to
improve results.
Without metrics,
processes, and clearly
defined methods,
everyone loses.
Especially our end users.
Software Development Myths
1. Software is easier to change than hardware
2. Processes aren’t needed in “maintenance mode”
3. Source code is self-documenting
Some developers actually
remove other people’s
comments from code.
Argument: Documentation
is going to be out of date
soon, so I’m saving us time
by removing it before that
happens.
Arguments for removing
comments fail to take staff
turnover issues into
account.
Fix with a simple
requirement: every
developer responsible for
verifying comments are
correct before checking in
changes.
Have QA do basic spot-
checking to verify.
Software Development Myths
1. Software is easier to change than hardware
2. Processes aren’t needed in “maintenance mode”
3. Source code is self-documenting
4. Quality can be tested into a software system
Henry Ford’s rolling
assembly line built quality
into the production
process:
• Break process into
small steps
• Execute each step
perfectly
• Quality inspections at
key milestones during
production
Pre-war Japanese industry
used high-quantity, low-
quality production
processes
Post-war Japanese
industry focused on high
quality products at the
expense of quantity.
Testing only tells you if
quality is present – it
doesn’t help increase a
product’s quality.
Quality products have a
chance to be successful.
Low-quality products end
up where they belong: the
scrap pile.
Software Development Myths
1. Software is easier to change than hardware
2. Processes aren’t needed in “maintenance mode”
3. Source code is self-documenting
4. Quality can be tested into a software system
5. We sell code, not analysis and design documents
Successful engineering has
always depended on
careful analysis, design,
and planning.
A carefully designed plan,
agreed to by the
development team, is
much more likely to lead
to a successful outcome.
Software Development Myths
1. Software is easier to change than hardware
2. Processes aren’t needed in “maintenance mode”
3. Source code is self-documenting
4. Quality can be tested into a software system
5. We sell code, not analysis and design documents
6. We don’t need QA – good programmers don’t make mistakes
QA’s job isn’t testing
software to find bugs – its
job is to prevent bugs in
the first place.
Software Development Myths
1. Software is easier to change than hardware
2. Processes aren’t needed in “maintenance mode”
3. Source code is self-documenting
4. Quality can be tested into a software system
5. We sell code, not analysis and design documents
6. We don’t need QA – good programmers don’t make mistakes
7. Increasing compensation increases performance
Increasing pay doesn’t
make unhappy developers
happy.
The company is signaling
that they like the way
things are going, and they
aren’t going to make any
changes.
Make sure developers
know any overwork
scenario is a short-term
situation
Software Development Myths
2. Processes aren’t needed in “maintenance mode”
3. Source code is self-documenting
4. Quality can be tested into a software system
5. We sell code, not analysis and design documents
6. We don’t need QA – good programmers don’t make mistakes
7. Increasing compensation increases performance
8. Rewarding managers with perks will make management
positions desirable.
PerksDriveWrong
KindOfPersonInto
Management
Managers would rather be
coding, don’t deal
effectively with HR issues,
and are generally
miserable.
PayShouldBeTied
toValue,Not
Position
Many managers at
successful firms are paid
less than some of the
engineers who work for
them.
Software Development Myths
3. Source code is self-documenting
4. Quality can be tested into a software system
5. We sell code, not analysis and design documents
6. We don’t need QA – good programmers don’t make mistakes
7. Increasing compensation increases performance
8. Rewarding managers with perks will make management
positions desirable
9. Processes are great, as long as you aren’t behind schedule
Balance
Don’t abandon your
processes, but don’t
slavishly follow processes
that don’t make sense for
your situation.
GoodProcesses
AreUsefulIn
Emergencies
Effective processes have
evolved over time to work
in both ordinary and
extraordinary
circumstances.
Example:Out-of-
stockAirplane
Parts
Passenger aircraft
manufacturers have
processes to get out-of-
stock parts into customer
hands ASAP.
Manufacturing and quality
processes are streamlined,
but no steps are skipped.
Software Development Myths
4. Quality can be tested into a software system
5. We sell code, not analysis and design documents
6. We don’t need QA – good programmers don’t make mistakes
7. Increasing compensation increases performance
8. Rewarding managers with perks will make management
positions desirable
9. Processes are great, as long as you aren’t behind schedule
10. We have to be first to market, and formal processes just slow
us down
DefiniteFirst-To-
MarketAdvantage
First company to offer a
product in a new market
niche usually grabs 60%-
80% share.
LockUp
Difficult to compete in a
saturated market – “rip
and replace.”
…But how long does it
really take to put together
some reasonable
processes?
“LandRush”
Development
Actually takes more time
to develop a marketable
product in “Land Rush”
mode than it will if you use
defined processes to
organize workflow and
reduce bugs.
Software Development Myths
6. We don’t need QA – good programmers don’t make mistakes
7. Increasing compensation increases performance
8. Rewarding managers with perks will make management
positions desirable
9. Processes are great, as long as you aren’t behind schedule
10. We have to be first to market, and formal processes just slow
us down
11. We can tie together several COTS packages and mostly avoid
writing new code
CommercialOff
TheShelf(COTS)
COTS packages are
designed to solve a
specific problem in a
specific way – probably
not yours.
Using COTS makes your
software the same as
everyone else’s – why
bother to develop it in the
first place?
IntrinsicCOTS
Issues
Some popular COTS
systems introduce
significant latency into
real-time and interactive
software.
Integration of multiple
COTS systems isn’t as easy
as you might think.
Software Development Myths
7. Increasing compensation increases performance
8. Rewarding managers with perks will make management
positions desirable
9. Processes are great, as long as you aren’t behind schedule
10. We have to be first to market, and formal processes just slow
us down
11. We can tie together several COTS packages and mostly avoid
writing new code
12. Formal processes cause talented people to leave
AvoidingProcesses
toAvoidChange
Some poor managers are
afraid of change, others
are afraid that processes
will reveal their poor
leadership.
Instituting formal
processes usually
improves development
team morale (and
productivity).
Process-Induced
Failures
All failure stories lack
detail – the real story is
that the dev team tried
out a method, and had
problems.
Usually the problems
would have been
resolvable, but the
software manager freaked
when code didn’t start
rolling out the door and
abandoned the processes.
Maintaining
ScheduleControl
Time marches forward no
matter what you do.
Too easy to not realize
how far behind a software
project is until it actually
fails.
GodzillaDoesn’t
KillSoftware
Projects
Schedules almost never
slip because of a single
catastrophic event.
DucksKill
SoftwareProjects
A single bite from a duck
won’t kill you, and a small
schedule issue won’t kill a
software project.
Actually,LOTSof
DucksKillSoftware
Projects
A missed delivery or
milestone is a “duck”.
Lots of small schedule slips
add up to big schedule
slips.
If enough ducks show up,
your project’s dead.
Dragon’s Triangle of Software
Scope
Resources Schedule
Software
ManagementIsn’t
AnExactScience
No definite right or wrong
answers, processes, or
solutions.
Key Take-Aways
• Rules, principles, and experience in the physical world doesn’t
often apply to software
• Quality affects performance of both the product AND your
team
• Small scheduling slides very quickly add up to a large slip
Why Is Managing Software So Hard?

More Related Content

PPTX
Poor Man's Kanban
PPTX
Lean Software Delivery
PPT
Software Development in 21st Century
PDF
Post mortem Review
PPTX
Lean Software Development
PPT
Agile Executive Briefing - Situational Assessment + 50k Ft View
PPTX
Introduction to Agile and Lean Software Development
PPTX
Extreme programming
Poor Man's Kanban
Lean Software Delivery
Software Development in 21st Century
Post mortem Review
Lean Software Development
Agile Executive Briefing - Situational Assessment + 50k Ft View
Introduction to Agile and Lean Software Development
Extreme programming

What's hot (20)

KEY
Intro to Lean Software Development
PDF
Lean Software Development
PPTX
Agility and planning : tools and processes
PPTX
Lean Software Development
PPT
PDF
The Real Reason That Projects Fail and How to Fix it - An Introduction to Cri...
PDF
Agile 2 - The Next Iteration of Agile - Lisa Cooney for Agile Nova 7-29-2021
PPT
Lean Software Development Principles
PPTX
Introduction to Agile
PPTX
Lean Software 101
PDF
Lean Software Development Presentation
PDF
5 Secrets of Smarter, Faster, & Cheaper Construction In NYC
PPSX
Major Projects - Faster Better Cheaper
PDF
Improving Focus and Predictability on Projects with Critical Chain Project Ma...
PDF
An introduction to Critical Chain Project Management (CCPM)
ODP
Intro to Agile and Lean Software Development
PDF
Technical Debt 101
PDF
Agile Methods: The Good, the Hype and the Ugly
PPT
Lecture 1 introduction to applied software project management
PDF
Introduction to Agile
Intro to Lean Software Development
Lean Software Development
Agility and planning : tools and processes
Lean Software Development
The Real Reason That Projects Fail and How to Fix it - An Introduction to Cri...
Agile 2 - The Next Iteration of Agile - Lisa Cooney for Agile Nova 7-29-2021
Lean Software Development Principles
Introduction to Agile
Lean Software 101
Lean Software Development Presentation
5 Secrets of Smarter, Faster, & Cheaper Construction In NYC
Major Projects - Faster Better Cheaper
Improving Focus and Predictability on Projects with Critical Chain Project Ma...
An introduction to Critical Chain Project Management (CCPM)
Intro to Agile and Lean Software Development
Technical Debt 101
Agile Methods: The Good, the Hype and the Ugly
Lecture 1 introduction to applied software project management
Introduction to Agile
Ad

Viewers also liked (20)

PDF
Time value of money Very important concepts
PDF
Mgt402 shortnoteslecture23to45
XLS
Break Even Analysis
PPTX
How to Calculate your Marketing ROI
PDF
Introduction to TCP/IP
PPT
Breakeven Point Presentation
PDF
Pricing Analytics: Segmenting Customers To Maximize Revenue
PPT
Financial aspects
PDF
quantitative analysis(4210)
PDF
Cost behavior and contribution margin reporting
PDF
Pricing Analytics: Estimating Demand Curves Without Price Elasticity
PPTX
Cost Volume Profit Analysis
PPT
Break even analysis- A Comprehensive and Clear Description
PPT
Cost volume profit analysis.
PPTX
BREAK EVEN ANALYSIS
DOCX
Break-Even Analysis and Break-Even Point
PPTX
20 Vital Sales and Marketing Metrics
PPTX
Break even analysis
PPT
Pricing strategies
PDF
Social Network Analysis & an Introduction to Tools
Time value of money Very important concepts
Mgt402 shortnoteslecture23to45
Break Even Analysis
How to Calculate your Marketing ROI
Introduction to TCP/IP
Breakeven Point Presentation
Pricing Analytics: Segmenting Customers To Maximize Revenue
Financial aspects
quantitative analysis(4210)
Cost behavior and contribution margin reporting
Pricing Analytics: Estimating Demand Curves Without Price Elasticity
Cost Volume Profit Analysis
Break even analysis- A Comprehensive and Clear Description
Cost volume profit analysis.
BREAK EVEN ANALYSIS
Break-Even Analysis and Break-Even Point
20 Vital Sales and Marketing Metrics
Break even analysis
Pricing strategies
Social Network Analysis & an Introduction to Tools
Ad

Similar to Why Is Managing Software So Hard? (20)

KEY
Another Agile Intro
PPTX
Agile software development
PPSX
Cost estimation
PPTX
Software construction and development.pptx
PPTX
Software construction and Development Lec 3.pptx
PDF
How to Estimate Software Development Project Cost.pdf
PDF
Unit 1 -Introduction to Software Engineering .pdf
PPTX
A Software Engineer
PDF
What scrum masters and product owners should know about software quality and ...
PPTX
The Waterfall Model
PPTX
Critical Capabilities to Shifting Left the Right Way
PDF
A Proven Software Development Process for the Non Technical Founder
DOCX
importance of resources allocation in formal method of software engineering ...
PPTX
The art of execution
PPT
Smart CTO Service
PPTX
Steve mcconnell
PPTX
Applying both of waterfall and iterative development
PPT
Popular Pitfalls In Sdlc Phases 1
PPTX
3.pptx
PDF
Chapter 2
Another Agile Intro
Agile software development
Cost estimation
Software construction and development.pptx
Software construction and Development Lec 3.pptx
How to Estimate Software Development Project Cost.pdf
Unit 1 -Introduction to Software Engineering .pdf
A Software Engineer
What scrum masters and product owners should know about software quality and ...
The Waterfall Model
Critical Capabilities to Shifting Left the Right Way
A Proven Software Development Process for the Non Technical Founder
importance of resources allocation in formal method of software engineering ...
The art of execution
Smart CTO Service
Steve mcconnell
Applying both of waterfall and iterative development
Popular Pitfalls In Sdlc Phases 1
3.pptx
Chapter 2

More from Michael Lamont (12)

PDF
Pricing Analytics: Optimizing Sales Models
PDF
Pricing Analytics: Price Skimming
PDF
Business Intelligence: Multidimensional Analysis
PDF
Pricing Analytics: Optimizing Price
PDF
Pricing Analytics: Creating Linear & Power Demand Curves
PDF
Understanding Business Intelligence
PDF
Email Address Harvesting
PDF
Antispam Image Filtering Technologies
PDF
Evaluating and Implementing Anti-Spam Solutions
PDF
Installing & Configuring OpenLDAP (Hands On Lab)
PDF
Evaluating Anti-Spam Filtering Solutions
PDF
Business Intelligence: Data Warehouses
Pricing Analytics: Optimizing Sales Models
Pricing Analytics: Price Skimming
Business Intelligence: Multidimensional Analysis
Pricing Analytics: Optimizing Price
Pricing Analytics: Creating Linear & Power Demand Curves
Understanding Business Intelligence
Email Address Harvesting
Antispam Image Filtering Technologies
Evaluating and Implementing Anti-Spam Solutions
Installing & Configuring OpenLDAP (Hands On Lab)
Evaluating Anti-Spam Filtering Solutions
Business Intelligence: Data Warehouses

Recently uploaded (20)

PDF
Softaken Excel to vCard Converter Software.pdf
PDF
Which alternative to Crystal Reports is best for small or large businesses.pdf
PDF
How Creative Agencies Leverage Project Management Software.pdf
PDF
2025 Textile ERP Trends: SAP, Odoo & Oracle
PPTX
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
PDF
Understanding Forklifts - TECH EHS Solution
PDF
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
PDF
Nekopoi APK 2025 free lastest update
PPTX
Transform Your Business with a Software ERP System
PDF
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
PDF
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
PPTX
history of c programming in notes for students .pptx
PPTX
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
PDF
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
PDF
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
PPTX
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
PPT
Introduction Database Management System for Course Database
PDF
AI in Product Development-omnex systems
PDF
How to Choose the Right IT Partner for Your Business in Malaysia
PPTX
VVF-Customer-Presentation2025-Ver1.9.pptx
Softaken Excel to vCard Converter Software.pdf
Which alternative to Crystal Reports is best for small or large businesses.pdf
How Creative Agencies Leverage Project Management Software.pdf
2025 Textile ERP Trends: SAP, Odoo & Oracle
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
Understanding Forklifts - TECH EHS Solution
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
Nekopoi APK 2025 free lastest update
Transform Your Business with a Software ERP System
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
history of c programming in notes for students .pptx
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
Introduction Database Management System for Course Database
AI in Product Development-omnex systems
How to Choose the Right IT Partner for Your Business in Malaysia
VVF-Customer-Presentation2025-Ver1.9.pptx

Why Is Managing Software So Hard?

  • 1. WHY IS SOFTWARE DEVELOPMENT SO HARD? SEI 2015 Munich Michael Lamont lamont@post.harvard.edu
  • 2. Dragon’sTriangle Mysterious area off coast of Japan where ships sink, planes crash, and all kinds of weird things happen
  • 3. Software BalancingAct Successfully complete a project plan while meeting changing demands and constraints
  • 4. Unreasonable Constraints • Set schedules & budgets without a detailed design • Estimations performed without input from developers • Ignoring interlocking relationships between cost, schedule, and features
  • 5. Three Sides of Software Dragon’s Triangle • Scope • Resources • Schedule
  • 6. SoftwareProject Failure Interrelated problems of “Dragon’s Triangle” cause a significant number of software projects to disappear
  • 8. Construction Trade in your Nerf gun for a nail gun? How much harder can it be?
  • 9. Easy&Straight- Forward,Right? • Clear requirements • Expectations are easy to manage • Detailed plans (blueprint) • Well-established principles • Knowledgeable staff • On time, on scope, on budget • $$$ for everyone!
  • 10. NotActuallyThat Simple… • Construction doesn’t often lend itself to a cookie-cutter approach • Estimation can be more of a dark art than a simple process • Experience and intuition > science and engineering
  • 11. HowContractors ActuallyGetPaid… • No change to original plans, no profit for contractor • Changes to original blueprint are virtually guaranteed • Profit comes from charging for changes
  • 12. Softwareis AlwaysNew Every software system is different from those that came before, with its own set of challenges and issues.
  • 13. There are real & substantial differences between building in the real world and building software.
  • 14. When building software, it’s impossible to predict the problems you’ll face before you’re well into the development process.
  • 15. Development teams love to work on shiny new projects, but complexity lurks within
  • 16. Physical objects have tactile properties – software does not.
  • 17. Comparison of Hardware/Software Properties Phenomenon Hardware Software Manufacture of exact duplicates A challenge Not a problem Wearing out with use or passage of time A major issue Not a problem Human sensory experiences Not a problem Not experienced Progress measured during construction Observable Observable only via a baseline process Cost, schedule, and planning Experienced physically Requires speculation and relatively high risk
  • 18. We can see & touch our progress when building things in the physical world
  • 19. In the real world, following sequential steps gives us incremental completion we can experience and evaluate
  • 20. In early stages of software development, all we have are design and architecture documents to experience.
  • 21. SoftwareIsA LeapofFaith All stakeholders have to trust the process, and believe progress is being made.
  • 22. Software engineering’s track record at anticipating and mitigating risks isn’t great compared to engineering in the physical world.
  • 23. Engineering in the physical world is based on unchanging laws that make the future predictable. Lack of hard-and-fast principles in software world lets unpredictable major setbacks occur in moments.
  • 24. When developing software, it’s easy to get forced into dealing with simultaneous problems: • Scheduling • Cost • Features
  • 25. 3 Points of the Dragon’s Triangle Scope Resources Schedule
  • 26. 3 Points of the Dragon’s Triangle Scope Resources Schedule
  • 27. Softwareprojects aren’t deterministic There isn’t a linear relationship between staffing and schedule, and the relationship can even go inverted (adding more people makes the project take longer)
  • 28. 7 8 9 10 11 12 1 2 3 4 5 6
  • 29. 7 8 9 1 2 3 4 5 6
  • 30. 1 2 3 4 5 6
  • 33. FeatureCreep The list of required features always seems to grow longer as a project progresses – never shorter.
  • 34. The“SadTruths” NegativelyImpact Morale Dev team sees the size of the project increase, without a corresponding increase in time and resources
  • 35. HiringNewPeople MakesThings Worse New employees (or even old employees who are new to the project) require a long runway to get up to speed, and drain team resources in the process
  • 36. Remedies/Repercussions in Hardware & Software Projects Situation Hardware World Software World Behind schedule Add people and/or equipment, and balance expense elsewhere Adding people makes matters worse, so cut features, which impacts customers and morale. Or go into Death March Mode. Over budget Stretch out delivery time; you might lose incentive fees. Adding people makes matters worse, so cut features, which impacts customers and morale. Or go into Death March Mode. Not all features will be delivered Renegotiate the contract; customer might get another vendor to finish the job. Reassess, focusing on customer’s “must have” features; customer expectations might impact opinion of results. Or go into Death March Mode.
  • 37. Remedies/Repercussions in Hardware & Software Projects Situation Hardware World Software World Behind schedule Add people and/or equipment, and balance expense elsewhere Adding people makes matters worse, so cut features, which impacts customers and morale. Or go into Death March Mode. Over budget Stretch out delivery time; you might lose incentive fees. Adding people makes matters worse, so cut features, which impacts customers and morale. Or go into Death March Mode. Not all features will be delivered Renegotiate the contract; customer might get another vendor to finish the job. Reassess, focusing on customer’s “must have” features; customer expectations might impact opinion of results. Or go into Death March Mode.
  • 38. “DeathMarch Mode” • Slang for quickly spending ridiculous amounts of resources to force a project to completion • Caused by the software manager’s failings
  • 39. Deterministic Problem:Hauling Dirt • Adding more people gets the job done faster • But not really: still scaling problems past a certain point
  • 40. SoftwareIsn’t Deterministic • No way to predict how long it’ll take to identify and fix a specific defect • “Death March Mode” leads to mental fatigue, which leads to poor productivity and mistakes
  • 42. CuttingFeatures HurtsDevTeam Morale Developers are artists, and won’t be your biggest fan if you cut a feature they’ve poured their heart and soul into for months
  • 43. IfYouHaveTo CutFeatures… • Reassure the affected developers that their work is appreciated • Feature cuts are due to scheduling reasons, not the developers’ skill level or work product
  • 44. “Wicked” Problems • Put forth by design theorist Horst Rittel • Describes a class of problems that don’t have bounded solutions • The more effort you put into solving the problem, the larger the problem becomes until infinity • Software development is a “wicked” problem
  • 45. Criteria For “Wicked” Problems • Cannot be definitively stated • Software requirements change in unpredictable ways • No rule or guideline to determine when the problem is solved • Development on a product only stops when you run out of time or money • Solutions are “good” or “bad” – not “right” or “wrong” • Software provides thousands of ways to meet even the most detailed specifications • Some solutions are better than others, even though they all meet spec
  • 46. Criteria For “Wicked” Problems • Cannot be definitively tested • No scientific way to accept or reject a specific software solution • Spec issues can be argued without clear rights and wrongs • Solutions are too big (i.e., expensive) to experiment with • Building multiple software systems and choosing the best is prohibitively expensive • There are unlimited solutions, and unlimited criteria for evaluation
  • 47. Criteria For “Wicked” Problems • Every problem is unique • Symptomatic of higher-level problems • “Solving” one part of the problem can lead to unanticipated problems in other areas
  • 48. Conclusion: Softwareisa “WickedProblem” Project success depends on: • Using what we know when the project starts • Using the data we gather over the course of the project • Trusting our data enough to use it to see the project through to completion
  • 50. Software Development Myths 1. Software is easier to change than hardware
  • 51. Large-scale projects in the physical world undergo intensive planning before anyone touches a shovel
  • 52. With software, it’s too easy to think we “see” the solution and start coding immediately, without really understanding the problem. Example: Y2K
  • 53. Software Development Myths 1. Software is easier to change than hardware 2. Processes aren’t needed in “maintenance mode”
  • 54. Aircraft maintenance processes provide a useful template for software maintenance. Careful records are kept of every issue and action taken, and analyzed to improve results.
  • 55. Without metrics, processes, and clearly defined methods, everyone loses. Especially our end users.
  • 56. Software Development Myths 1. Software is easier to change than hardware 2. Processes aren’t needed in “maintenance mode” 3. Source code is self-documenting
  • 57. Some developers actually remove other people’s comments from code. Argument: Documentation is going to be out of date soon, so I’m saving us time by removing it before that happens.
  • 58. Arguments for removing comments fail to take staff turnover issues into account. Fix with a simple requirement: every developer responsible for verifying comments are correct before checking in changes. Have QA do basic spot- checking to verify.
  • 59. Software Development Myths 1. Software is easier to change than hardware 2. Processes aren’t needed in “maintenance mode” 3. Source code is self-documenting 4. Quality can be tested into a software system
  • 60. Henry Ford’s rolling assembly line built quality into the production process: • Break process into small steps • Execute each step perfectly • Quality inspections at key milestones during production
  • 61. Pre-war Japanese industry used high-quantity, low- quality production processes
  • 62. Post-war Japanese industry focused on high quality products at the expense of quantity.
  • 63. Testing only tells you if quality is present – it doesn’t help increase a product’s quality. Quality products have a chance to be successful. Low-quality products end up where they belong: the scrap pile.
  • 64. Software Development Myths 1. Software is easier to change than hardware 2. Processes aren’t needed in “maintenance mode” 3. Source code is self-documenting 4. Quality can be tested into a software system 5. We sell code, not analysis and design documents
  • 65. Successful engineering has always depended on careful analysis, design, and planning. A carefully designed plan, agreed to by the development team, is much more likely to lead to a successful outcome.
  • 66. Software Development Myths 1. Software is easier to change than hardware 2. Processes aren’t needed in “maintenance mode” 3. Source code is self-documenting 4. Quality can be tested into a software system 5. We sell code, not analysis and design documents 6. We don’t need QA – good programmers don’t make mistakes
  • 67. QA’s job isn’t testing software to find bugs – its job is to prevent bugs in the first place.
  • 68. Software Development Myths 1. Software is easier to change than hardware 2. Processes aren’t needed in “maintenance mode” 3. Source code is self-documenting 4. Quality can be tested into a software system 5. We sell code, not analysis and design documents 6. We don’t need QA – good programmers don’t make mistakes 7. Increasing compensation increases performance
  • 69. Increasing pay doesn’t make unhappy developers happy. The company is signaling that they like the way things are going, and they aren’t going to make any changes. Make sure developers know any overwork scenario is a short-term situation
  • 70. Software Development Myths 2. Processes aren’t needed in “maintenance mode” 3. Source code is self-documenting 4. Quality can be tested into a software system 5. We sell code, not analysis and design documents 6. We don’t need QA – good programmers don’t make mistakes 7. Increasing compensation increases performance 8. Rewarding managers with perks will make management positions desirable.
  • 71. PerksDriveWrong KindOfPersonInto Management Managers would rather be coding, don’t deal effectively with HR issues, and are generally miserable.
  • 72. PayShouldBeTied toValue,Not Position Many managers at successful firms are paid less than some of the engineers who work for them.
  • 73. Software Development Myths 3. Source code is self-documenting 4. Quality can be tested into a software system 5. We sell code, not analysis and design documents 6. We don’t need QA – good programmers don’t make mistakes 7. Increasing compensation increases performance 8. Rewarding managers with perks will make management positions desirable 9. Processes are great, as long as you aren’t behind schedule
  • 74. Balance Don’t abandon your processes, but don’t slavishly follow processes that don’t make sense for your situation.
  • 75. GoodProcesses AreUsefulIn Emergencies Effective processes have evolved over time to work in both ordinary and extraordinary circumstances.
  • 76. Example:Out-of- stockAirplane Parts Passenger aircraft manufacturers have processes to get out-of- stock parts into customer hands ASAP. Manufacturing and quality processes are streamlined, but no steps are skipped.
  • 77. Software Development Myths 4. Quality can be tested into a software system 5. We sell code, not analysis and design documents 6. We don’t need QA – good programmers don’t make mistakes 7. Increasing compensation increases performance 8. Rewarding managers with perks will make management positions desirable 9. Processes are great, as long as you aren’t behind schedule 10. We have to be first to market, and formal processes just slow us down
  • 78. DefiniteFirst-To- MarketAdvantage First company to offer a product in a new market niche usually grabs 60%- 80% share.
  • 79. LockUp Difficult to compete in a saturated market – “rip and replace.” …But how long does it really take to put together some reasonable processes?
  • 80. “LandRush” Development Actually takes more time to develop a marketable product in “Land Rush” mode than it will if you use defined processes to organize workflow and reduce bugs.
  • 81. Software Development Myths 6. We don’t need QA – good programmers don’t make mistakes 7. Increasing compensation increases performance 8. Rewarding managers with perks will make management positions desirable 9. Processes are great, as long as you aren’t behind schedule 10. We have to be first to market, and formal processes just slow us down 11. We can tie together several COTS packages and mostly avoid writing new code
  • 82. CommercialOff TheShelf(COTS) COTS packages are designed to solve a specific problem in a specific way – probably not yours. Using COTS makes your software the same as everyone else’s – why bother to develop it in the first place?
  • 83. IntrinsicCOTS Issues Some popular COTS systems introduce significant latency into real-time and interactive software. Integration of multiple COTS systems isn’t as easy as you might think.
  • 84. Software Development Myths 7. Increasing compensation increases performance 8. Rewarding managers with perks will make management positions desirable 9. Processes are great, as long as you aren’t behind schedule 10. We have to be first to market, and formal processes just slow us down 11. We can tie together several COTS packages and mostly avoid writing new code 12. Formal processes cause talented people to leave
  • 85. AvoidingProcesses toAvoidChange Some poor managers are afraid of change, others are afraid that processes will reveal their poor leadership. Instituting formal processes usually improves development team morale (and productivity).
  • 86. Process-Induced Failures All failure stories lack detail – the real story is that the dev team tried out a method, and had problems. Usually the problems would have been resolvable, but the software manager freaked when code didn’t start rolling out the door and abandoned the processes.
  • 87. Maintaining ScheduleControl Time marches forward no matter what you do. Too easy to not realize how far behind a software project is until it actually fails.
  • 89. DucksKill SoftwareProjects A single bite from a duck won’t kill you, and a small schedule issue won’t kill a software project.
  • 90. Actually,LOTSof DucksKillSoftware Projects A missed delivery or milestone is a “duck”. Lots of small schedule slips add up to big schedule slips. If enough ducks show up, your project’s dead.
  • 91. Dragon’s Triangle of Software Scope Resources Schedule
  • 92. Software ManagementIsn’t AnExactScience No definite right or wrong answers, processes, or solutions.
  • 93. Key Take-Aways • Rules, principles, and experience in the physical world doesn’t often apply to software • Quality affects performance of both the product AND your team • Small scheduling slides very quickly add up to a large slip