Upload
lamdat
View
226
Download
4
Embed Size (px)
Citation preview
Lean
Software
Development
for startups and such
Who am I?
3 - 200 people
...
local, across 4 countries
healthcare,
education,
construction,
banking,
insurance,
financial services,
entertainment
agile since 2001
lean since 2005
not an authority on anything
... at all :)
preaching to the choir
Okay then!
Startups
opinionated talk
runa.com
constraints
Less money
Fewer people
Less domain knowledge
Constant change(really)
No time(really)
Fewer customers(none)
Few chances
Startups
-
It’s always a recession!
So... now what?
requirements
Speed
Be iterative
Maximize feedback
Efficient
good luck with that
Fail fast
Lean startup = healthy startup
post-modern
software development
In no specific order...
Just-in-time
minimize inventory
analysis
design
testing
sales & marketing
defects
fix defects first
Stop the line!
root-cause analysis
defects
production problems
schedule slips
lost a customer
change something!
establish flow
deployment
automate (almost) everything
scripts are code too
capistrano, puppet, chef
upfront pain
frictionless deliveries
Risk management
discovery and mitigation
feeds the backlog
set-based
engineering
multiple solutions
at the same time
delay commitment
keep options open
stay flexible
estimation
it adds no value
under-estimated?
over-estimated?
just right != important
priority of stories
how to predict?
reduce job-size
defect = story
“technical work” = story
“technical debt” = story
break everything down
1-2 days in size
things average out
use velocity
iterations
adds no value
under-estimated?
over-estimated?
just-right?
pull-system
reduce batch-size
how to compensate?
release-driven *everything*
not released = not done
concept to cash
Release-driven development
heart-beat
customers = reality
continuous integration
automate everything
done-ness
not released = not done
reduce job-size
reduce batch-size
iterate fast!
continuous releases
(A. B. R.)
feedback
friendly customers
shadow customers
retrospectives
measurements that matter
speed
cycle-time
lines of code
finger-chart
burn-down
massively small
communication
easier planning
democracy
fairness
mistakes = learning
share information
about everything
information radiators
not just dev stuff
open-workspace
food
downtime
gelled teams
massively small
top 1 percentile
top 10 percentile?
1 BA for 2 dev pairs
1 QA for 2 dev pairs
get technical PMs
incentives
money, stock
peers
ambitious goals(world domination)
360-degree evals
people - fail fast
automated testing
no excuses today
unit tests
functional tests
stubs/mocks
...
build system
lines of code
best code = non-existent code
dynamic languages
python
ruby
lisp
erlang
scala...
(yes lisp)
domain-specific
languages
data-stores for web-scale
HBase
CouchDB
HyperTable
etc.
asynchronous everything(mostly)
multi-core is here, already
hosted clouds
etc. etc.
Multi-stage amplifiers
do more with less
Thanks!