Lean Software Delivery

Post on 11-May-2015

3.256 views 5 download

Tags:

Transcript of Lean Software Delivery

Lean Software Delivery

Get lean and mean without being stretched too thing

UrbanCode Inc. ©2013

Lead Consultant & Tech Evangelist

Eric is Lead Consultant at Urbancode where I help customers get the most out of their build, deploy and release processes.

Today he works with customers and industry leaders to figure out this DevOps thing.

Eric Minickeminick@us.ibm.com@EricMinick

UrbanCode Inc. ©2013

Why Lean? Need to do more

­ Agile: Faster pace of builds & releases­ More complex architectures­ Distributed, even global teams

Adding more people unlikely Only solution is to increase efficiency

UrbanCode Inc. ©2013

Lean Software By analogy, inspiration and even direct mapping from

Lean Manufacturing

More focused on principles than practices­ 7 Lean Principles­ Complements and underpins Agile and DevOps

Provides a low-risk approach to increasing efficiency

UrbanCode Inc. ©2013

Lean increases efficiency by removing waste

7 Wastes: of Manufacturing

InventoryExtra ProcessingOverproductionTransportationWaitingMotionDefects

7 Wastes: of Software

Partially Done WorkExtra ProcessesExtra FeaturesTask SwitchingWaitingMotionDefects

UrbanCode Inc. ©2013

Wastes: 1 Partially Done Work

Waste: Work you get no value from Risk: Untestable.

­ Can’t verify you’re on the right track

Commons.wikimedia.org

UrbanCode Inc. ©2013

Wastes: 2 Extra Process

Wastes: Paperwork that nobody really reads is “theater” at best, a complete waste at worst.

What happens if we skip or delay this process? Is any value to the customer lost?

Image: http://upload.wikimedia.org/wikipedia/commons/d/d9/Paperwork_-_by_Tom_Ventura.jpg

UrbanCode Inc. ©2013

Wastes: 3 Extra Features

Waste: All planning, development and testing time was useless. No value was delivered.

Worse: Extra complexity was introduced

Image: http://commons.wikimedia.org/wiki/File:IPhone_3G.png

UrbanCode Inc. ©2013

Wastes: 4 Task Switching

Waste: “Reloading” the information for various concurrent process is expensive when switching between them.

Another useless meeting… now where was I on this?

UrbanCode Inc. ©2013

Wastes: 5 Waiting

Waste: When the project is not moving forward, value is not being delivered.

Waiting tends to generate more task switching as well.

UrbanCode Inc. ©2013

Wastes: 6 Motion

Each hand-off represents a risk due to incomplete knowledge.

Can my developer quickly understand a feature, or does she need to ask someone; who asks someone; who asks someone?

UrbanCode Inc. ©2013

Wastes: 7 Defects

Severity of Defect * Time undetected

UrbanCode Inc. ©2013

In Short

Build the right thing

Deliver it promptly

UrbanCode Inc. ©2013

In Short

Build the right thing

Deliver it promptly

Execute Efficiently

UrbanCode Inc. ©2013

In Short

Build the right thing

Deliver it promptly

Execute Efficiently

Agile focuses here

DevOps focuses here

UrbanCode Inc. ©2013

In Short

Build the right thing

Deliver it promptly

Execute Efficiently

Agile focuses here

DevOps focuses here

DevOps also helps with feedback

UrbanCode Inc. ©2013

Build the right thing: Strategy by situation When requirements are well understood

­ Document them well

When big picture is understood but details are shaky­ Tight customer collaboration­ Rapidly deliver to QA and user acceptance for validation

When big picture of the app is shaky­ Use ‘Lean Startup’ approach of Minimum Viable Product

• Get something in front of customers quickly and measure

UrbanCode Inc. ©2013

Should I support ‘Log-in with Facebook’?

UrbanCode Inc. ©2013

Should I support ‘Log-in with Facebook’?

UrbanCode Inc. ©2013

Should I support ‘Log-in with Facebook’?

Pro: Lower sign-up barrier to entry. More customers!Con: My company is B2B. Maybe Facebook is too personal

1) Acknowledge uncertainty

UrbanCode Inc. ©2013

Should I support ‘Log-in with Facebook’?

Pro: Lower sign-up barrier to entry. More customers!Con: My company is B2B. Maybe Facebook is too personal

2) Establish a Thesis

10% of People who would otherwise ‘bounce’ will attempt to sign up w/ Facebook

UrbanCode Inc. ©2013

Pro: Lower sign-up barrier to entry. More customers!Con: My company is B2B. Maybe Facebook is too personal

3) Test it cheaply. Then decide

10% of People who would otherwise ‘bounce’ will attempt to sign up w/ Facebook

Add button that doesn’t work for X% of visitors. Measure attempted use.

Something went wrong. Try again.

Should I support ‘Log-in with Facebook’?

UrbanCode Inc. ©2013

Experimentation may depend on delivery

Build the right thing

Deliver it promptly

Execute Efficiently

Agile focuses here

DevOps focuses here

DevOps also helps with feedback

UrbanCode Inc. ©2013

Visualize waste with lean techniques

Spaghetti Diagramming­ shows motion, such as handoffs and the flow of artifacts

between people

Value Stream Mapping­ shows the temporal division between work being done

(value being added) and waiting (waste)

image credits: http://commons.wikimedia.org/wiki/File:Diagram_spaghetti_kilka_produktow.PNGhttp://www.michaelnygard.com/blog/2008/02/outrunning_your_headlights.html

UrbanCode Inc. ©2013

Example: Sign-off Process

1. PM emails Dev Manager2. Dev Manager emails PM3. PM emails QA Manager4. QA Manager emails PM5. PM emails Operations6. Operations emails PM

UrbanCode Inc. ©2013

Spaghetti diagrams show flow of work

UrbanCode Inc. ©2013

Value stream map shows delays

---3030303030

111111

Waiting Working

150 6

1. PM Dev2. PM Dev3. PM QA4. PM QA5. PM Ops6. PM Ops

UrbanCode Inc. ©2013

Value stream map after process change

------30---3030

1---1---11

Waiting Working

90 4

1. PM Dev2. ----------3. Dev QA4. ----------5. QA Ops6. Ops PM

UrbanCode Inc. ©2013

Lean Software Takeaways

Inspired by Lean Manufacturing

Strong emphasis on removing “waste”

The 7 Wastes of Lean Software Development

Tools for Visualizing Waste

UrbanCode Inc. ©2013

A Lean view of build & deployment

UrbanCode Inc. ©2013

Common Practice: “Dan the Deployer”

1. Pam emails Dan to deploy to the Development environment

2. Dan the Deployer reads the email 3. Dan moves the build artifacts to the Development

environment4. Dan runs the deployment scripts5. Deployment script runs while Dan monitors

progress via the console6. Dan emails Pam to let her know the deployment is

complete7. Pam reads the email

UrbanCode Inc. ©2013

Dan’s Diagram

UrbanCode Inc. ©2013

1. Pam emails2. Dan reads3. Moves artifacts4. Launches script5. Deploy runs6. Dan emails7. Pam reads

---???0?1

1111

1011

Waiting Working

? 16

Delays from Dan

UrbanCode Inc. ©2013

What if Pam could click a button?

http://commons.wikimedia.org/wiki/File:Big_Green_Button.png

UrbanCode Inc. ©2013

1. Pam triggers2. ----------3. Move artifacts4. ---------- 5. Deploy runs6. System emails7. Pam reads

------0---001

1---1---1001

Waiting Working

1 13

Self-service deployment removes delays

UrbanCode Inc. ©2013

Deployment automation story

Offshore testing team needed to request deploys to test environments­ Due to timezones, average turn-around was 20 hours­ Giving the offshore team direct access to servers was not

an option

Secure, automated deployments allow self-service­ Turn around drops to under one hour

Win: 15% more testing gets done. Defects found faster, cheaper to fix, and product ships quicker.

UrbanCode Inc. ©2013

Bug fix & verify cycle

1. Pam commits a feature2. Feature is built by Bob3. Build with new feature is deployed by Dan4. Tom the Tester tests new feature and reports a bug5. Pam fixes the bug6. Bug fix is built7. Build with fix is deployed8. Tom verifies the bug fix

UrbanCode Inc. ©2013

Manual fix & verify spaghetti

UrbanCode Inc. ©2013

Bug fix & verify value stream

7203600240

2880720

3600240

1515

12060151560

Waiting Working

12000 300

1. Feature build2. Build deployed3. Bug reported4. Pam fixes 5. Fix built6. Fix deployed7. Tom verifies

UrbanCode Inc. ©2013

Adding automation

1. Automated builds (CI); that invokes:2. Automated deployments; that invokes:3. Automated regression tests

UrbanCode Inc. ©2013

1515

12060151560

1. Feature build2. Build deployed3. Bug reported4. Pam fixes 5. Fix built6. Fix deployed7. Tom verifies

7203600240

2880720

3600240

Waiting Working

12000 300

Impact of continuous delivery

UrbanCode Inc. ©2013

7203600240

2880720

3600240

1515

12060151560

1. Feature build2. Build deployed3. Bug reported4. Pam fixes 5. Fix built6. Fix deployed7. Tom verifies

Waiting Working

12000 300

Impact of automated testing

UrbanCode Inc. ©2013

1. Feature build2. Build deployed3. Bug reported4. Pam fixes 5. Fix built6. Fix deployed7. Tom verifies

Waiting Working

12000 300

7203600240

2880720

3600240

1515

12060151560

Impact of automated reporting

UrbanCode Inc. ©2013

Bug fix & verify with Enterprise CD

UrbanCode Inc. ©2013

Bug fix & verify value stream with ECD

000

6000

1440

151530151515

120

Waiting Working

1500 225

1. Feature build2. Build deployed3. Bug reported4. Pam fixes 5. Fix built6. Fix deployed7. Tom verifies

UrbanCode Inc. ©2013

CD impact on bug fix & verify cycle

Partially Done WorkExtra Processes: no bug “hot potato”; Tom tests onceExtra FeaturesTask Switching: Pam quickly notified of defectWaiting: no waiting for builds or deploymentsMotion: fewer handoffs; no bug report adminstriviaDefects: more time testing, can find additional defects

UrbanCode Inc. ©2013

The impact of automated building & testing

90% rise in LOC output/programmerwhen performing builds at least daily

36% reduction in defect ratewhen integration/regression testing at each code check-in

“Trade-offs between Productivity and Quality in Selecting Software Development Practices”, IEEE Software, Sept-Oct 2003

UrbanCode Inc. ©2013

Think at the system level

Image credit: http://52weeksofux.com/post/694598769/the-local-maximum

UrbanCode Inc. ©2013

Urbancode.com/resources

Continuous Delivery Maturity ModelDeployment Automation BasicsValue of Deployment Automation

Blogs.urbancode.com

Twitter.com/UrbanCode

Facebook.com/IBMUrbanCodeProducts

SlideShare.net/Urbancode

Further Resources

Q&Aeminick@us.ibm.com

Slideshare.net/Urbancode@EricMinick

Linked-in group:“Automating Deployment and Release”