infrastructure code in agile software development
DESCRIPTION
This presentation i gave in an ILTAM group meeting discusses common problems with Infrastructure code development and how Agile helps to deal with themTRANSCRIPT
![Page 1: Infrastructure code in Agile software development](https://reader035.vdocuments.us/reader035/viewer/2022062319/554f4a16b4c905b9508b47ea/html5/thumbnails/1.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062319/554f4a16b4c905b9508b47ea/html5/thumbnails/2.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062319/554f4a16b4c905b9508b47ea/html5/thumbnails/3.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062319/554f4a16b4c905b9508b47ea/html5/thumbnails/4.jpg)
Software infrastructure Software infrastructure The traditional way -The traditional way -Common problemsCommon problems
![Page 5: Infrastructure code in Agile software development](https://reader035.vdocuments.us/reader035/viewer/2022062319/554f4a16b4c905b9508b47ea/html5/thumbnails/5.jpg)
#1 - It’s never DONE#1 - It’s never DONE
![Page 6: Infrastructure code in Agile software development](https://reader035.vdocuments.us/reader035/viewer/2022062319/554f4a16b4c905b9508b47ea/html5/thumbnails/6.jpg)
#2 - Too big to handle#2 - Too big to handle
![Page 7: Infrastructure code in Agile software development](https://reader035.vdocuments.us/reader035/viewer/2022062319/554f4a16b4c905b9508b47ea/html5/thumbnails/7.jpg)
#3 – Who’s code is this?#3 – Who’s code is this?
![Page 8: Infrastructure code in Agile software development](https://reader035.vdocuments.us/reader035/viewer/2022062319/554f4a16b4c905b9508b47ea/html5/thumbnails/8.jpg)
#4 – Becomes the bottleneck#4 – Becomes the bottleneck
![Page 9: Infrastructure code in Agile software development](https://reader035.vdocuments.us/reader035/viewer/2022062319/554f4a16b4c905b9508b47ea/html5/thumbnails/9.jpg)
#5 – Too much functionality#5 – Too much functionality
![Page 10: Infrastructure code in Agile software development](https://reader035.vdocuments.us/reader035/viewer/2022062319/554f4a16b4c905b9508b47ea/html5/thumbnails/10.jpg)
#6 – House of cards#6 – House of cards
![Page 11: Infrastructure code in Agile software development](https://reader035.vdocuments.us/reader035/viewer/2022062319/554f4a16b4c905b9508b47ea/html5/thumbnails/11.jpg)
#7 – Hero culture#7 – Hero culture
![Page 12: Infrastructure code in Agile software development](https://reader035.vdocuments.us/reader035/viewer/2022062319/554f4a16b4c905b9508b47ea/html5/thumbnails/12.jpg)
#8 – #8 – Component TeamsComponent Teams
![Page 13: Infrastructure code in Agile software development](https://reader035.vdocuments.us/reader035/viewer/2022062319/554f4a16b4c905b9508b47ea/html5/thumbnails/13.jpg)
#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](https://reader035.vdocuments.us/reader035/viewer/2022062319/554f4a16b4c905b9508b47ea/html5/thumbnails/14.jpg)
#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](https://reader035.vdocuments.us/reader035/viewer/2022062319/554f4a16b4c905b9508b47ea/html5/thumbnails/15.jpg)
Software infrastructure Software infrastructure The agile wayThe agile way
![Page 16: Infrastructure code in Agile software development](https://reader035.vdocuments.us/reader035/viewer/2022062319/554f4a16b4c905b9508b47ea/html5/thumbnails/16.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062319/554f4a16b4c905b9508b47ea/html5/thumbnails/17.jpg)
Incremental developmentIncremental development
![Page 18: Infrastructure code in Agile software development](https://reader035.vdocuments.us/reader035/viewer/2022062319/554f4a16b4c905b9508b47ea/html5/thumbnails/18.jpg)
SimplicitySimplicity
![Page 19: Infrastructure code in Agile software development](https://reader035.vdocuments.us/reader035/viewer/2022062319/554f4a16b4c905b9508b47ea/html5/thumbnails/19.jpg)
Shared code ownershipShared code ownership..
![Page 20: Infrastructure code in Agile software development](https://reader035.vdocuments.us/reader035/viewer/2022062319/554f4a16b4c905b9508b47ea/html5/thumbnails/20.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062319/554f4a16b4c905b9508b47ea/html5/thumbnails/21.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062319/554f4a16b4c905b9508b47ea/html5/thumbnails/22.jpg)
Business results oriented.Business results oriented.
![Page 23: Infrastructure code in Agile software development](https://reader035.vdocuments.us/reader035/viewer/2022062319/554f4a16b4c905b9508b47ea/html5/thumbnails/23.jpg)
Infrastructure growsInfrastructure grows
![Page 24: Infrastructure code in Agile software development](https://reader035.vdocuments.us/reader035/viewer/2022062319/554f4a16b4c905b9508b47ea/html5/thumbnails/24.jpg)
Collaborative.Collaborative.
![Page 25: Infrastructure code in Agile software development](https://reader035.vdocuments.us/reader035/viewer/2022062319/554f4a16b4c905b9508b47ea/html5/thumbnails/25.jpg)
spiral (waterfall) vs. iterative spiral (waterfall) vs. iterative
![Page 26: Infrastructure code in Agile software development](https://reader035.vdocuments.us/reader035/viewer/2022062319/554f4a16b4c905b9508b47ea/html5/thumbnails/26.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062319/554f4a16b4c905b9508b47ea/html5/thumbnails/27.jpg)