lean software developmentmiami2009.leanssc.org/wp-content/uploads/2009/11/rathore_lean... · amit...

Post on 10-Apr-2018

224 Views

Category:

Documents

4 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Lean

Software

Development

for startups and such

Who am I?

Amit Rathore

chief software architect

runa.com

amitrathore@gmail.com

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!

top related