the seven wastes of software development

155
THE SEVEN OF SOFTWARE DEVELOPMENT Matt Stine WASTES

Upload: matt-stine

Post on 10-May-2015

2.038 views

Category:

Technology


0 download

DESCRIPTION

As presented at Memphis JUG, February 15, 2011.

TRANSCRIPT

Page 1: The Seven Wastes of Software Development

THE SEVEN OF SOFTWARE

DEVELOPMENTMatt Stine

WASTES

Page 2: The Seven Wastes of Software Development

THE SEVEN OF SOFTWARE

DEVELOPMENTMatt Stine

WASTESDeadly Sins

Page 3: The Seven Wastes of Software Development

• Senior Software Architect/Web Developer

• Speaker (JavaOne, SpringOne/2GX, Lambda Lounge, NFJS, RWX, PAX, UberConf)

• Author (GroovyMag, NFJS the Magazine, Selenium 2.0 Refcard)

• President of the Memphis/Mid-South Java User Group

• Past Agile Zone Leader @ DZonehttp://agile.dzone.com/articles/seven-wastes-software

About your speaker...

Page 4: The Seven Wastes of Software Development

Taiichi Ohno

Page 5: The Seven Wastes of Software Development

“All we are doing is looking at the time line, from the moment the customer gives us an order to the point when

we collect the cash. And we are reducing the time line by reducing the

non-value adding wastes.”

Taiichi Ohno

Page 6: The Seven Wastes of Software Development
Page 7: The Seven Wastes of Software Development

Shingo’s seven wastes

• In-Process Inventory

• Extra Processing

• Overproduction

• Transportation

• Waiting

• Motion

• Defects

Page 8: The Seven Wastes of Software Development

MARY and tom’s seven wastes

• Partially Done Work

• Extra Processes

• Extra Features

• Handoffs

• Delays

• Task Switching

• Defects

Page 9: The Seven Wastes of Software Development

Partially done work

Page 10: The Seven Wastes of Software Development
Page 11: The Seven Wastes of Software Development
Page 12: The Seven Wastes of Software Development

CLUTTER

Page 13: The Seven Wastes of Software Development
Page 14: The Seven Wastes of Software Development

//TODO

Page 15: The Seven Wastes of Software Development

//FIXME

Page 16: The Seven Wastes of Software Development
Page 17: The Seven Wastes of Software Development
Page 18: The Seven Wastes of Software Development
Page 19: The Seven Wastes of Software Development
Page 20: The Seven Wastes of Software Development
Page 21: The Seven Wastes of Software Development
Page 22: The Seven Wastes of Software Development

@SuppressWarnings(“unchecked”)

Page 23: The Seven Wastes of Software Development

it gets in the way!

Page 24: The Seven Wastes of Software Development

Avoiding Partially Done Work

Page 25: The Seven Wastes of Software Development

Limit your work in progress

Page 26: The Seven Wastes of Software Development

short cycles

Page 27: The Seven Wastes of Software Development

January 1, 2011 February 25, 2011

Minimize

BranchesLong Running

Page 28: The Seven Wastes of Software Development
Page 29: The Seven Wastes of Software Development

Continuous

integrationQA

Deploymentdelivery

Page 30: The Seven Wastes of Software Development

Merciless Refactoring

Page 31: The Seven Wastes of Software Development

ExtrA Processes

Page 32: The Seven Wastes of Software Development

ceremony

Page 33: The Seven Wastes of Software Development

Integration

Page 34: The Seven Wastes of Software Development

TESTING

Page 35: The Seven Wastes of Software Development

Version Control

Page 36: The Seven Wastes of Software Development

Databasemigrations

Page 37: The Seven Wastes of Software Development

Deployment

Page 38: The Seven Wastes of Software Development
Page 39: The Seven Wastes of Software Development
Page 40: The Seven Wastes of Software Development

Solutions?

Page 41: The Seven Wastes of Software Development

The Butler Formerly Known as Hudsonhttp://jenkins-ci.org

Page 42: The Seven Wastes of Software Development

http://gradle.org

Page 43: The Seven Wastes of Software Development

WebDriver2

HTTP://geb.codehaus.orghttp://spockframework.org

http://seleniumhq.org

Page 44: The Seven Wastes of Software Development

http://www.liquibase.org

Page 45: The Seven Wastes of Software Development

http://git-scm.com

Page 46: The Seven Wastes of Software Development

https://github.com/capistrano/capistrano/wiki

Page 47: The Seven Wastes of Software Development

http://redcareditor.com

http://macromates.com

http://www.gnu.org/software/emacs

http://www.vim.org

Page 48: The Seven Wastes of Software Development

bash

zsh

ksh

find

grep

pushd

popdawk

sed cat

sh

Page 49: The Seven Wastes of Software Development

http://www.cygwin.com

Page 50: The Seven Wastes of Software Development

http://clojure.org

http://scala-lang.orghttp://www.jython.org

http://groovy.codehaus.orghttp://jruby.org

Page 51: The Seven Wastes of Software Development

ExtrA Features

Page 52: The Seven Wastes of Software Development

Pet Features

Page 53: The Seven Wastes of Software Development

Obsolete Features

Page 54: The Seven Wastes of Software Development

Gold

Plating

Page 55: The Seven Wastes of Software Development

RDD

Page 56: The Seven Wastes of Software Development

PATTERNS

Page 57: The Seven Wastes of Software Development
Page 58: The Seven Wastes of Software Development

Extra code

• Must be tracked

• Must be compiled

• Must be integrated

• Must be tested

• Must be maintained

• Increases complexity

• Adds potential failure points

• Likely will become obsolete before use

Page 59: The Seven Wastes of Software Development

the worst wastE?

Page 60: The Seven Wastes of Software Development

Avoiding extrAFeatures

Page 61: The Seven Wastes of Software Development

Frequent ProductDemos

Page 62: The Seven Wastes of Software Development

Frequent Production

Deployments

Page 63: The Seven Wastes of Software Development

YAGNI

Page 64: The Seven Wastes of Software Development

The cheapest, fastest, and most reliable components of a computer system are those that aren't there.

Gordon Bell

Page 65: The Seven Wastes of Software Development

HANDOFFS

Page 66: The Seven Wastes of Software Development

How the customer explained it...

Page 67: The Seven Wastes of Software Development

How the analyst designed it...

Page 68: The Seven Wastes of Software Development

How the programmer wrote it...

Page 69: The Seven Wastes of Software Development

What the testers received...

Page 70: The Seven Wastes of Software Development

What operations installed...

Page 71: The Seven Wastes of Software Development

What the customer really needed!

Page 72: The Seven Wastes of Software Development

tacit knowledge

Page 73: The Seven Wastes of Software Development
Page 74: The Seven Wastes of Software Development

if each handoff leaves 50% behind:

• 25% of knowledge left after 2 handoffs

• 12% of knowledge left after 3 handoffs

• 6% of knowledge left after 4 handoffs

• 3% of knowledge left after 5 handoffs

Page 75: The Seven Wastes of Software Development

http://en.wikipedia.org/wiki/DevOps

Page 76: The Seven Wastes of Software Development

HIGH-BANDWIDTHCommunication

Page 77: The Seven Wastes of Software Development

Body Language55%

Tone38%

Words7%

Page 78: The Seven Wastes of Software Development
Page 79: The Seven Wastes of Software Development
Page 80: The Seven Wastes of Software Development
Page 81: The Seven Wastes of Software Development
Page 82: The Seven Wastes of Software Development
Page 83: The Seven Wastes of Software Development

Source: Neal Ford, “On the Lam from the Furniture Police” DSSS 2009.

Page 84: The Seven Wastes of Software Development

Source: Neal Ford, “On the Lam from the Furniture Police” DSSS 2009.

Page 85: The Seven Wastes of Software Development

Source: Neal Ford, “On the Lam from the Furniture Police” DSSS 2009.

Page 86: The Seven Wastes of Software Development

e-mail is yourLAST

RESORT!!!

Page 87: The Seven Wastes of Software Development

DELAYS

Page 88: The Seven Wastes of Software Development
Page 89: The Seven Wastes of Software Development
Page 90: The Seven Wastes of Software Development

gatewaydrug

Page 91: The Seven Wastes of Software Development

partially done work

Page 92: The Seven Wastes of Software Development

extra processing

Page 93: The Seven Wastes of Software Development

task switching

Page 94: The Seven Wastes of Software Development

manifestations

Page 95: The Seven Wastes of Software Development

codecheck-in

Page 96: The Seven Wastes of Software Development

big bangintegration

Page 97: The Seven Wastes of Software Development

big “anything” up front

Requirements

PlanningDesign

Analysis

Page 98: The Seven Wastes of Software Development
Page 99: The Seven Wastes of Software Development

testing

Page 100: The Seven Wastes of Software Development

deployment

Page 101: The Seven Wastes of Software Development

fight delays

Page 102: The Seven Wastes of Software Development

CHECK-IN-driven development

Page 103: The Seven Wastes of Software Development

CHECK-IN-driven development

• Write enough test to fail

Page 104: The Seven Wastes of Software Development

CHECK-IN-driven development

• Write enough test to fail

• Write enough code to pass

Page 105: The Seven Wastes of Software Development

CHECK-IN-driven development

• Write enough test to fail

• Write enough code to pass

• Refactor

Page 106: The Seven Wastes of Software Development

CHECK-IN-driven development

• Write enough test to fail

• Write enough code to pass

• Refactor

• CHECK-IN, CHECK-IN, CHECK-IN!!!

Page 107: The Seven Wastes of Software Development

continuous integration

Page 108: The Seven Wastes of Software Development

tighten the feedback loop!

Page 109: The Seven Wastes of Software Development

LIMIT WIP

Page 110: The Seven Wastes of Software Development

continuous qa

Page 111: The Seven Wastes of Software Development

continuous delivery

Page 112: The Seven Wastes of Software Development

TASK SWITCHING

Page 113: The Seven Wastes of Software Development

FLOW

Page 114: The Seven Wastes of Software Development

time disappears

tunnel vision

“in the zone”

total concentration

insanely productiveSource: Neal Ford, “The Productive Programmer: Canonicality/Focus,” NESS 2008.

Page 115: The Seven Wastes of Software Development
Page 116: The Seven Wastes of Software Development
Page 117: The Seven Wastes of Software Development
Page 118: The Seven Wastes of Software Development
Page 119: The Seven Wastes of Software Development

Week 1 Week 2 Week 3 Week 4

Page 120: The Seven Wastes of Software Development

Task ATask B

Task C

Week 1 Week 2 Week 3 Week 4

Page 121: The Seven Wastes of Software Development

Task ATask B

Task C

Week 1 Week 2 Week 3 Week 4

Page 122: The Seven Wastes of Software Development

Task ATask B

Task C

Week 1 Week 2 Week 3 Week 4

Page 123: The Seven Wastes of Software Development

Task ATask B

Task C

Week 1 Week 2 Week 3 Week 4

Page 124: The Seven Wastes of Software Development

Task ATask B

Task C

Week 1 Week 2 Week 3 Week 4

Page 125: The Seven Wastes of Software Development

MinimizeTask Switching

Page 126: The Seven Wastes of Software Development
Page 127: The Seven Wastes of Software Development
Page 128: The Seven Wastes of Software Development
Page 129: The Seven Wastes of Software Development

work on one thing at a time

Page 130: The Seven Wastes of Software Development
Page 131: The Seven Wastes of Software Development

http://www.pomodorotechnique.com/

Page 132: The Seven Wastes of Software Development

sacrificEa

Developer

Page 133: The Seven Wastes of Software Development

shareKnowledge

Page 134: The Seven Wastes of Software Development

DEFECTS

Page 135: The Seven Wastes of Software Development
Page 136: The Seven Wastes of Software Development
Page 137: The Seven Wastes of Software Development

IMPACTx

TOTAL TIME UNDETECTED

=WASTE

Page 138: The Seven Wastes of Software Development

CRITICALx

3 MINUTES UNDETECTED

=

Page 139: The Seven Wastes of Software Development

CRITICALx

3 MINUTES UNDETECTED

=Comparatively Low

Page 140: The Seven Wastes of Software Development

MINORx

3 WEEKS UNDETECTED

=

Page 141: The Seven Wastes of Software Development

MINORx

3 WEEKS UNDETECTED

=Comparatively High

Page 142: The Seven Wastes of Software Development

reduce waste by finding defects

asap!!!

Page 143: The Seven Wastes of Software Development

defectdetectionspeedups

Page 144: The Seven Wastes of Software Development

mistakeproofing

tests

Page 145: The Seven Wastes of Software Development

ContinuousIntegration

Page 146: The Seven Wastes of Software Development

exploratorytesting

Page 147: The Seven Wastes of Software Development

antibodytests

“You Are Your Softwareʼs Immune System!”http://agile.dzone.com/articles/you-are-your-softwares-immune

Page 148: The Seven Wastes of Software Development

TOOLS FOR HARD PROBLEMS

Page 149: The Seven Wastes of Software Development

Combinatorial testing tools

Page 150: The Seven Wastes of Software Development

MIRRORPRODUCTION

Page 151: The Seven Wastes of Software Development

RELEASETO

PRODUCTIONASAP!

Page 152: The Seven Wastes of Software Development

That’s all folks!

Please fill out your evaluations!

Matt [email protected]

Twitter: mstinehttp://www.mattstine.com

Page 153: The Seven Wastes of Software Development

credits• http://www.flickr.com/photos/darwinbell/239572495/

• http://www.flickr.com/photos/darwinbell/239573255/

• http://cleavefast.com/wp-content/uploads/2010/06/Taichii_Ohno.jpg

• http://www.flickr.com/photos/pagedooley/3302644588

• http://www.flickr.com/photos/sansumbrella/3489486144/

• http://www.flickr.com/photos/nathancolquhoun/1086854949

• http://www.flickr.com/photos/andidigress/4471100232/

• http://216.92.30.49/tv/posters/hoarders_ver2_xlg.jpg

• http://www.sxc.hu/photo/995894

• The Karate Kid, 1984 Motion Picture from Columbia Pictures

• http://www.flickr.com/photos/nolarisingproject/4896236515/

• http://www.flickr.com/photos/nolarisingproject/4896861104/

• http://www.flickr.com/photos/geoffjones/3690612407/

• http://www.flickr.com/photos/nolarisingproject/4896791356/

• http://www.flickr.com/photos/bigtallguy/148771151/

• http://moparx.com/files/images/commodore_1541.jpg

• http://www.flickr.com/photos/talkingplant/2183210426

• http://www.flickr.com/photos/kplawver/3532822079

• http://www.flickr.com/photos/maisonbisson/3110247253/

• http://www.flickr.com/photos/aagius/3558810758

• The Simpsons, Fox Broadcasting Company

• http://www.flickr.com/photos/nolarisingproject/4896224995/

• http://www.flickr.com/photos/nickpiggott/2545688097

• Office Space,

• http://www.flickr.com/photos/nolarisingproject/4896789584/

• http://www.flickr.com/photos/evilpeacock/2941175262/

• http://www.sxc.hu/photo/1224062

• http://www.flickr.com/photos/nolarisingproject/4896841468/

• http://www.flickr.com/photos/nolarisingproject/4896813004/

• http://www.flickr.com/photos/darwinbell/239572918/

Page 154: The Seven Wastes of Software Development

What about the barrels?

In the wake of the second major engineering failure to happen upon Southeastern Louisiana in the last five years, Rox Steady has produced

these installation pieces of street art. Each representing the seven deadly sins and placed in seven different neighborhoods of New

Orleans, they are representative of the things that have led up to such engineering disasters..

Their symbolism is timely in the wake of the oil spill that BP and their cohorts are now saying is all cleaned up. May a swarm of locusts visit

upon their homes and zombies eat their brains…

From http://www.flickr.com/photos/nolarisingproject/4896789584/

Page 155: The Seven Wastes of Software Development

How the seven wastes were mapped to the seven deadly sins is a thought exercise left to

the attendee.