Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Scaling Agility: The Technical Angle
Flavius Stef
Mozaic Works
1.0
About me
Flavius Stef
In I.T. since 2002
Agile Coach and Trainer
Was:
– Web Developer
– Project Manager
– Scrum Master
– P...
PRINCIPLES
TEAMS STRUCTURE
ARCHITECTURE AND DESIGN
CONFIGURATION MANAGEMENT
ALIGNMENT
FEEDBACK
A word of warning
#AgileTip: To some folks Scaling Agile is like Scaling
Fish: They keep scraping off stuff until it looks...
PRINCIPLES
●
Don't do it
●
Short term versus long term
●
Bigger teams need bigger processes
●
Identify and fight bottlenec...
PRINCIPLES
TEAMS STRUCTURE
ARCHITECTURE AND DESIGN
CONFIGURATION MANAGEMENT
ALIGNMENT
FEEDBACK
Feature teams
(Agile)
Component teams
(Waterfall)
Favor this
Hybrid model
Feature
team
Feature
team
Feature
team
Component
team
Component
team
Have code stewards
Scalability
Javascript UI
Components
Database
performance
REST API
Oversee system architecture
Oversee system architecture
Experts should have slack
90%John
85%Mike
115%Molly
45%Susan
PRINCIPLES
TEAMS STRUCTURE
ARCHITECTURE AND DESIGN
CONFIGURATION MANAGEMENT
ALIGNMENT
FEEDBACK
Increase modularity
Increase modularity
package hudson;
import hudson.PluginWrapper.Dependency;
import hudson.init.InitMilestone;
import hudso...
Simplify designs
HTML/CSS/Javascript/Ajax
Servlet
REST Services
UI “Middleware”
...
...
...
Custom RPC Engine
...
...
...
...
Simplify designs
HTML/CSS/Javascript/Ajax
Servlet
REST Services
UI “Middleware”
...
...
...
Custom RPC Engine
...
...
...
...
Be careful with published interfaces
Service Facade
Compatible Change
Basic Integration Refinement
Adapter
Strategy
Program defensively
int low_quality_programming(char *input){
  char str[1000+1];     // one more for the null character
 ...
Program defensively
int low_quality_programming(char *input){
  char str[1000+1];     // one more for the null character
 ...
PRINCIPLES
TEAMS STRUCTURE
ARCHITECTURE AND DESIGN
CONFIGURATION MANAGEMENT
ALIGNMENT
FEEDBACK
Reduce build creation time
How long would it take your organization to deploy
a change that involves just one single line ...
Separate release cycles
JS UI
Components
Releases
Product
Release
Use feature toggle
<toggle name="petSurvey">
  <p>Take our new <a href = 'petSurvey'>pet survey</a></p>
</toggle>
Example ...
PRINCIPLES
TEAMS STRUCTURE
ARCHITECTURE AND DESIGN
CONFIGURATION MANAGEMENT
ALIGNMENT
FEEDBACK
Document architecture
Document architecture
Document architecture
Create communities
Communities of practice
Internal Q&A site
Hackathon
Document libraries
Run architecture workshops
At start of release,
or at start of sprint
PRINCIPLES
TEAMS STRUCTURE
ARCHITECTURE AND DESIGN
CONFIGURATION MANAGEMENT
ALIGNMENT
FEEDBACK
Invert the testing pyramid
Run system tests continuously
time time
qualityquality
Waterfall Agile
SP 1 SP 2 SP 3 SP 4 SP 5 SP 6
SYSTEM TESTS
Build a deployment pipeline
Commit
Automated
acceptance
UX testing
User
acceptance
Scalability
testing
git push
automated
...
THANK YOU!
QUESTIONS?
flavius.stef@mozaicworks.com
I'm on Twitter, LinkedIn, FB
Image credits
●
https://flic.kr/p/8zLKRb
●
List designed by TukTuk Designz from the Noun Project
●
http://en.wikipedia.org...
Upcoming SlideShare
Loading in …5
×

Scaling Agility: The Technical Angle

607 views

Published on

Presentation at I T.A.K.E. Unconference 2014. It covers several technical tips on how to scale agility to larger teams.

Published in: Software, Technology
  • Be the first to comment

Scaling Agility: The Technical Angle

  1. 1. Scaling Agility: The Technical Angle Flavius Stef Mozaic Works 1.0
  2. 2. About me Flavius Stef In I.T. since 2002 Agile Coach and Trainer Was: – Web Developer – Project Manager – Scrum Master – Product Owner – Co-founder flavius.stef@mozaicworks.com (Twitter) @FlaviusStef
  3. 3. PRINCIPLES TEAMS STRUCTURE ARCHITECTURE AND DESIGN CONFIGURATION MANAGEMENT ALIGNMENT FEEDBACK
  4. 4. A word of warning #AgileTip: To some folks Scaling Agile is like Scaling Fish: They keep scraping off stuff until it looks like something they can swallow. @WoodyZuill “
  5. 5. PRINCIPLES ● Don't do it ● Short term versus long term ● Bigger teams need bigger processes ● Identify and fight bottlenecks ● Build quality in
  6. 6. PRINCIPLES TEAMS STRUCTURE ARCHITECTURE AND DESIGN CONFIGURATION MANAGEMENT ALIGNMENT FEEDBACK
  7. 7. Feature teams (Agile) Component teams (Waterfall) Favor this
  8. 8. Hybrid model Feature team Feature team Feature team Component team Component team
  9. 9. Have code stewards Scalability Javascript UI Components Database performance REST API
  10. 10. Oversee system architecture
  11. 11. Oversee system architecture
  12. 12. Experts should have slack 90%John 85%Mike 115%Molly 45%Susan
  13. 13. PRINCIPLES TEAMS STRUCTURE ARCHITECTURE AND DESIGN CONFIGURATION MANAGEMENT ALIGNMENT FEEDBACK
  14. 14. Increase modularity
  15. 15. Increase modularity package hudson; import hudson.PluginWrapper.Dependency; import hudson.init.InitMilestone; import hudson.init.InitStrategy; import hudson.init.InitializerFinder; import hudson.model.AbstractModelObject; import hudson.model.AdministrativeMonitor; import hudson.model.Api; import hudson.model.Descriptor; import hudson.model.Failure; import hudson.model.UpdateCenter; import hudson.model.UpdateSite; import hudson.util.CyclicGraphDetector; import hudson.util.CyclicGraphDetector.CycleDetectedException; import hudson.util.IOException2; import hudson.util.PersistedList; import hudson.util.Service; import jenkins.ClassLoaderReflectionToolkit; import jenkins.InitReactorRunner; import jenkins.RestartRequiredException; import jenkins.YesNoMaybe; import jenkins.model.Jenkins; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; import org.apache.commons.io.FileUtils; … and 15 more!
  16. 16. Simplify designs HTML/CSS/Javascript/Ajax Servlet REST Services UI “Middleware” ... ... ... Custom RPC Engine ... ... ... Linux Kernel
  17. 17. Simplify designs HTML/CSS/Javascript/Ajax Servlet REST Services UI “Middleware” ... ... ... Custom RPC Engine ... ... ... Linux Kernel HTML/CSS/Javascript/Ajax Servlet REST Services UI “Middleware” ... ... ... ... Linux Kernel What's the simplest thing that could possibly work?
  18. 18. Be careful with published interfaces Service Facade Compatible Change Basic Integration Refinement Adapter Strategy
  19. 19. Program defensively int low_quality_programming(char *input){   char str[1000+1];     // one more for the null character   // ...   strcpy(str, input);   // copy input   // ... } int high_quality_programming(char *input){   char str[1000];   // initialize the string NUL characters   memset(str, 0, sizeof(str));          // …      // copy input, always leaving room for a NUL character   strncpy(str, input, sizeof(str) ­ 1);    // ... }
  20. 20. Program defensively int low_quality_programming(char *input){   char str[1000+1];     // one more for the null character   // ...   strcpy(str, input);   // copy input   // ... } int high_quality_programming(char *input){   char str[1000];   // initialize the string NUL characters   memset(str, 0, sizeof(str));          // …      // copy input, always leaving room for a NUL character   strncpy(str, input, sizeof(str) ­ 1);    // ... } More? Check and sanitize inputs Use assertions Standardize exception handling
  21. 21. PRINCIPLES TEAMS STRUCTURE ARCHITECTURE AND DESIGN CONFIGURATION MANAGEMENT ALIGNMENT FEEDBACK
  22. 22. Reduce build creation time How long would it take your organization to deploy a change that involves just one single line of code? Do you do this on a repeatable, reliable basis? Mary Poppendieck, Implementing Lean Software Development “
  23. 23. Separate release cycles JS UI Components Releases Product Release
  24. 24. Use feature toggle <toggle name="petSurvey">   <p>Take our new <a href = 'petSurvey'>pet survey</a></p> </toggle> Example from: http://martinfowler.com/bliki/FeatureToggle.html
  25. 25. PRINCIPLES TEAMS STRUCTURE ARCHITECTURE AND DESIGN CONFIGURATION MANAGEMENT ALIGNMENT FEEDBACK
  26. 26. Document architecture
  27. 27. Document architecture
  28. 28. Document architecture
  29. 29. Create communities Communities of practice Internal Q&A site Hackathon
  30. 30. Document libraries
  31. 31. Run architecture workshops At start of release, or at start of sprint
  32. 32. PRINCIPLES TEAMS STRUCTURE ARCHITECTURE AND DESIGN CONFIGURATION MANAGEMENT ALIGNMENT FEEDBACK
  33. 33. Invert the testing pyramid
  34. 34. Run system tests continuously time time qualityquality Waterfall Agile SP 1 SP 2 SP 3 SP 4 SP 5 SP 6 SYSTEM TESTS
  35. 35. Build a deployment pipeline Commit Automated acceptance UX testing User acceptance Scalability testing git push automated manual Build (war, gems, minified js/css) Run unit tests Static analysis Run component tests Deploy artifacts CI Server monitors launches git push Manual test environments Automated test environment
  36. 36. THANK YOU! QUESTIONS? flavius.stef@mozaicworks.com I'm on Twitter, LinkedIn, FB
  37. 37. Image credits ● https://flic.kr/p/8zLKRb ● List designed by TukTuk Designz from the Noun Project ● http://en.wikipedia.org/wiki/File:Deployment_Diagram.PNG ● http://en.wikipedia.org/wiki/File:CheckEmail.svg ● http://blog.adrianbolboaca.ro/2013/01/architectural-kata/img_0507/ ● http://3.bp.blogspot.com/-gU9fWdBfB1Y/Ul3861lVk1I/AAAAAAAALpA/J2YRGrQH

×