infrastructure code in agile software development

27
Infrastructure code in Infrastructure code in agile agile software development software development Elad Sofer – Agile coach blog.thescrumster.com [email protected] Twitter : @ eladsof

Upload: elad-sofer

Post on 10-May-2015

2.708 views

Category:

Technology


0 download

DESCRIPTION

This presentation i gave in an ILTAM group meeting discusses common problems with Infrastructure code development and how Agile helps to deal with them

TRANSCRIPT

Page 1: Infrastructure code in Agile software development

Infrastructure code in agile Infrastructure code in agile software developmentsoftware development

Elad Sofer – Agile [email protected]

Twitter :@eladsof

Page 2: Infrastructure code in Agile software development

What is infrastructure codeWhat is infrastructure code??

A Software layer with an API used in a larger context, by multiple users for different reasons. In some cases this layer is completely independent of business and is generally valueless on it’s own.

Page 3: Infrastructure code in Agile software development

Infrastructure code is Good!Infrastructure code is Good!

• Supports the DRY principle.– Copy/Paste is EVIL!– Saves time/money.

• Increase quality of code by reducing complexity.

• Helps managing shared resources.

• Helps defining in-code standards.

Page 4: Infrastructure code in Agile software development

Software infrastructure Software infrastructure The traditional way -The traditional way -Common problemsCommon problems

Page 5: Infrastructure code in Agile software development

#1 - It’s never DONE#1 - It’s never DONE

Page 6: Infrastructure code in Agile software development

#2 - Too big to handle#2 - Too big to handle

Page 7: Infrastructure code in Agile software development

#3 – Who’s code is this?#3 – Who’s code is this?

Page 8: Infrastructure code in Agile software development

#4 – Becomes the bottleneck#4 – Becomes the bottleneck

Page 9: Infrastructure code in Agile software development

#5 – Too much functionality#5 – Too much functionality

Page 10: Infrastructure code in Agile software development

#6 – House of cards#6 – House of cards

Page 11: Infrastructure code in Agile software development

#7 – Hero culture#7 – Hero culture

Page 12: Infrastructure code in Agile software development

#8 – #8 – Component TeamsComponent Teams

Page 13: Infrastructure code in Agile software development

#8 – #8 – Component TeamsComponent Teams

Release feature list:

Feature 1 – A(20%) B(30%) I(50%)

Feature 2 – A(40%) B(20%) I(40%)

Feature 3 – B(50%) C(10%), I(40%)

Feature 4 – A(40%) C(10%), I(50%)

Feature 5 – A(20%) C(50%) I(30%)Total Effort needed:

A – 120

B – 100

C – 70

D – 210

20%

14%

42%

24%

Page 14: Infrastructure code in Agile software development

#8 – #8 – Component TeamsComponent Teams

• Move people from team to team to match requirements.– Decreases job satisfaction, hurts performance.– What will happen next release ?

• Leave team formation as is:– Some teams will be “unemployed” – What will they

do ?• Need to “invent” work for them.

– Other teams will have too much pressure.• Change the scope of the release to equalize

efforts:– Not aligned with business needs.– Still bottlenecks exists on feature level.– The problem will be worst next release.

Page 15: Infrastructure code in Agile software development

Software infrastructure Software infrastructure The agile wayThe agile way

Page 16: Infrastructure code in Agile software development

Agile s/w developmentAgile s/w development

• Iterative / Incremental.• Simplicity.• Shared code ownership.• Flow – Reduce bottlenecks.• Business oriented.• Fast feedback – fail fast!• Collaborative.• Balance discipline and flexibility.

Page 17: Infrastructure code in Agile software development

Incremental developmentIncremental development

Page 18: Infrastructure code in Agile software development

SimplicitySimplicity

Page 19: Infrastructure code in Agile software development

Shared code ownershipShared code ownership..

Page 20: Infrastructure code in Agile software development

Feature areasFeature areas

UI

Business logic

Data model

Infrastructure

Security related Feature

s

User admin related features

Item CRUD related feature

s

Reporting related features

Page 21: Infrastructure code in Agile software development

Feature teamsFeature teams

• All teams have infrastructure development ability.– This might take some time.

• Immediately reduces bottlenecks, reduces risk.– Infra code is tested immediately.

• Increases flexibility – allows development by business value.

• Increases business understanding inside teams.• Requires commitment and effort to implement.

• Requires increased communication between teams (this is a good thing!)

Page 22: Infrastructure code in Agile software development

Business results oriented.Business results oriented.

Page 23: Infrastructure code in Agile software development

Infrastructure growsInfrastructure grows

Page 24: Infrastructure code in Agile software development

Collaborative.Collaborative.

Page 25: Infrastructure code in Agile software development

spiral (waterfall) vs. iterative spiral (waterfall) vs. iterative

Page 26: Infrastructure code in Agile software development

Balance discipline and flexibility. Balance discipline and flexibility.

• Make sure people follow the process.– Communicate changes in the infra.– Do not develop unnecessary functionality.– Transparency.

• Allow people to break the rules and experiment.– Sometimes it’s ok to try new stuff, as long as they

have a business justification.• Failure IS an option

– This allows learning & improving.

Page 27: Infrastructure code in Agile software development