2. Day 1: Growing Software
09.00 - Ready, set...
✓ Registration
✓ Turn on laptops
✓ GTKY
09.30 - Go!
✓ The importance of dependencies in planning software
11.00 - Break
11.15 - The First Step: Assessment
✓ Anti-IF Lab: Growing a simple application from scratch...
13.00 - Lunch Break
3. Day 1: Growing Software (afternoon)
13:45 - Growing Objects...
✓ Distinguish good IFs from bad IFs
✓ Separate the construction phase from the use of objects
✓ Design techniques to get rid of IF and control statement
15:00 - Break
15.15 - Make “Sad” Objects Smile
✓ Anti-IF Lab: Building software one scenario at a time - no IFs required
17.30 - Homeward Bound
4. Day 2: Patterns and Refactoring
09.00 - Feedback
09.30 - Design Patterns and Emergent Design
✓ Recognizing design patterns versus imposing design patterns
✓ Growing patterns: From simple patterns to combinations of patterns
without using IFs
✓ Recognize when patterns add complexity to the design
11.00 - Break
11.15 - Practice with Objects
✓ Emergent Lab: Injecting objects
✓ Anti-IF Lab: Getting rid of unexceptional exceptions in the persistency
layer
13.00 - Lunch Break
5. Day 2: Patterns and Refactoring (afternoon)
13:45 - Emergent Refactoring
✓ Reduce complexity - always - but how?
✓ Be able to recognize when refactoring adds complexity
✓ Criteria for choosing which refactoring to use
15:00 - Break
15.15 - Remodel a skyscraper into a country house
✓ Object Juggling: Learn how to develop new scenarios of a story by
moving from one pattern to another without diagrams and IFs
✓ Anti-IF Lab: Clean up the presentation layer of a Web App
17.30 - Homeward Bound
6. Day 3: Developing with Tests
09.00 - Feedback
09.30 - Test-Driven Development
✓ Growing software with tests as a construction strategy
✓ Criteria and strategies for determining the next incremental test from a
value creation perspective versus functionality testing
✓ Recognizing when testing adds complexity to the system
11.00 - Break
11.15 - Back to Work Again
✓ Emergent-Lab: Many different ways to determine the next test
✓ Emergent-Lab: Constructing software for a sophisticated watch
without bad IFs
13.00 - Lunch Break
7. Day 3: Developing with Tests (afternoon)
13:45 - Back to Work Again
✓ Emergent Lab: Constructing software for a sophisticated watch
without bad IFs (continued)
15:00 - Break
15.15 - Making Conclusions
✓ Map of emergent design: criteria for growing software, using patterns,
refactoring and testing... all without bad IFs
✓ Some suggestions for the future
17.30 - Homeward Bound
La storia di Bob Patton risale al 1994. Per Sun mi occupavo della formazione di ingegneria del software a oggetti.\nE li’ ho conosciuto Bob Patton. Bob Patton era la scusa per la quale i ragazzi dovevano fare un corso di 5 giorni e costruire una applicazione piuttosto complessa. \nCon vi.\nBob Patton era un consulente che aveva deciso di lasciare tutto e partire per le bahamas, lasciando il cliente da solo con un codice bruttissimo. RIcordo che ai tempi consideravo questa una sorta di forzatura. Ma non lo era.\n