Agile Software Development In Theory and Practice Johannes Brodwall
Copyright 2004 – Johannes Brodwall Slide 2 Who am I?
Copyright 2004 – Johannes Brodwall Slide 3 Johannes Brodwall
Copyright 2004 – Johannes Brodwall Slide 4 Board member, smidig.no
Copyright 2004 – Johannes Brodwall Slide 5 Organizer, Oslo XP Meetup Every first Monday of the month at Scuba bar (Grünerløkka)
Copyright 2004 – Johannes Brodwall Slide 6 Lead Software Architect
Copyright 2004 – Johannes Brodwall Slide 7 Sole developer Small chat solution
Copyright 2004 – Johannes Brodwall Slide 8 Who are you?
Copyright 2004 – Johannes Brodwall Slide 9 Who works on ”a large project”?
Copyright 2004 – Johannes Brodwall Slide 10 Who works on (what you feel is) ”a large project”?
Copyright 2004 – Johannes Brodwall Slide 11 Who release software infrequently?
Copyright 2004 – Johannes Brodwall Slide 12 (0)
Copyright 2004 – Johannes Brodwall Slide 13 Intro
Copyright 2004 – Johannes Brodwall Slide 14 Course in an agile method Extreme programming Scrum Lean Software Development DSDM
Copyright 2004 – Johannes Brodwall Slide 15 Course in an agile method Extreme programming Scrum Lean Software Development DSDM
Copyright 2004 – Johannes Brodwall Slide 16 History lesson Snowbird Agile Manifesto We value Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan
Copyright 2004 – Johannes Brodwall Slide 17 History lesson Snowbird Agile Manifesto We value Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan
Copyright 2004 – Johannes Brodwall Slide 18 Specific for Perl Test::More Devel::Refactor Jifty PerlActor Tinderbox
Copyright 2004 – Johannes Brodwall Slide 19 Specific for Perl Test::More Devel::Refactor Jifty PerlActor Tinderbox
Copyright 2004 – Johannes Brodwall Slide 20 Experience report on using agile techniques in small and large environments Continuous Integration Relentless Testing Frequent releases Collective Ownership Refactoring
Copyright 2004 – Johannes Brodwall Slide 21 Experience report on using agile techniques in small and large environments Continuous Integration Relentless Testing Frequent releases Collective Ownership Refactoring
Copyright 2004 – Johannes Brodwall Slide 22 (1)
Copyright 2004 – Johannes Brodwall Slide 23 The Problem
Copyright 2004 – Johannes Brodwall Slide 24 Projects in crisis
Copyright 2004 – Johannes Brodwall Slide 25 Failure to deliver value
Copyright 2004 – Johannes Brodwall Slide 26 Barry Boehm: ”Software Engineering Economics”, 1984
Copyright 2004 – Johannes Brodwall Slide 27 ”An infant engineering discipline”
Copyright 2004 – Johannes Brodwall Slide 28 (2)
Copyright 2004 – Johannes Brodwall Slide 29 The Response
Copyright 2004 – Johannes Brodwall Slide 30 ” ”Make sure the reqs are right before you do anything”
Copyright 2004 – Johannes Brodwall Slide 31 ” ”Make sure nobody changes the requirements”
Copyright 2004 – Johannes Brodwall Slide 32 ” ”Try Harder!”
Copyright 2004 – Johannes Brodwall Slide 33 BRUF
Copyright 2004 – Johannes Brodwall Slide 34 ” Big Requirements Up Front
Copyright 2004 – Johannes Brodwall Slide 35 (Picture: RUP analyst hard at work)
Copyright 2004 – Johannes Brodwall Slide 36 Trying to stuff everything into my small head! It hurts!
Copyright 2004 – Johannes Brodwall Slide 37 And then the world changes!
Copyright 2004 – Johannes Brodwall Slide 38 When I guessed wrong...
Copyright 2004 – Johannes Brodwall Slide my work is wasted
Copyright 2004 – Johannes Brodwall Slide it is even harder to change the system
Copyright 2004 – Johannes Brodwall Slide 41 Speculation breeds complexity
Copyright 2004 – Johannes Brodwall Slide 42 Complexity breeds complexity
Copyright 2004 – Johannes Brodwall Slide 43 And again my crystal ball is broken!!!
Copyright 2004 – Johannes Brodwall Slide 44 So I get a poorly divided, rigid design
Copyright 2004 – Johannes Brodwall Slide 45 Formality:
Copyright 2004 – Johannes Brodwall Slide 46 make decision ”correctly”
Copyright 2004 – Johannes Brodwall Slide 47 The right decision
Copyright 2004 – Johannes Brodwall Slide 48 Change control mechanism
Copyright 2004 – Johannes Brodwall Slide 49 Just-in-case requirement (”free” in the beginning)
Copyright 2004 – Johannes Brodwall Slide 50 Failure to deliver value
Copyright 2004 – Johannes Brodwall Slide 51 These ”solutions” are part of the problem
Copyright 2004 – Johannes Brodwall Slide 52 Fixed-price, fixed-scope contract bids
Copyright 2004 – Johannes Brodwall Slide 53 (3)
Copyright 2004 – Johannes Brodwall Slide 54 The Alternative
Copyright 2004 – Johannes Brodwall Slide 55 Instead of just-in-case...
Copyright 2004 – Johannes Brodwall Slide just-in-time
Copyright 2004 – Johannes Brodwall Slide 57 Boehm was wrong
Copyright 2004 – Johannes Brodwall Slide 58 (or at least Boehm’s phasist readers)
Copyright 2004 – Johannes Brodwall Slide 59
Copyright 2004 – Johannes Brodwall Slide 60
Copyright 2004 – Johannes Brodwall Slide 61 Harness the Power of Myopia
Copyright 2004 – Johannes Brodwall Slide
Copyright 2004 – Johannes Brodwall Slide Focus on short term
Copyright 2004 – Johannes Brodwall Slide 64 Requirements for current feature
Copyright 2004 – Johannes Brodwall Slide 65 Design for current requirement
Copyright 2004 – Johannes Brodwall Slide Deliver something
Copyright 2004 – Johannes Brodwall Slide 67 Ideal: Deliver working, tested features as often as you safely can
Copyright 2004 – Johannes Brodwall Slide Get feedback
Copyright 2004 – Johannes Brodwall Slide 69 (talk to people!)
Copyright 2004 – Johannes Brodwall Slide Adapt
Copyright 2004 – Johannes Brodwall Slide 71 Get Feedback Avoid Speculation
Copyright 2004 – Johannes Brodwall Slide 72 The cost of speculation
Copyright 2004 – Johannes Brodwall Slide 73 Myopic requirements
Copyright 2004 – Johannes Brodwall Slide 74 Analyse the current release
Copyright 2004 – Johannes Brodwall Slide 75 Myopic development
Copyright 2004 – Johannes Brodwall Slide 76 Design for the current problem
Copyright 2004 – Johannes Brodwall Slide 77 Myopic programming
Copyright 2004 – Johannes Brodwall Slide 78 Write a test – make it pass – Remove duplication
Copyright 2004 – Johannes Brodwall Slide 79
Copyright 2004 – Johannes Brodwall Slide 80 (4)
Copyright 2004 – Johannes Brodwall Slide 81 Changing your minds
Copyright 2004 – Johannes Brodwall Slide is not always easy
Copyright 2004 – Johannes Brodwall Slide is not always safe
Copyright 2004 – Johannes Brodwall Slide 84 (painted into a corner)
Copyright 2004 – Johannes Brodwall Slide 85 (Experience: Sustainable myopia varies with org.)
Copyright 2004 – Johannes Brodwall Slide 86 Agile: Enabling safe myopia
Copyright 2004 – Johannes Brodwall Slide 87 Not technology
Copyright 2004 – Johannes Brodwall Slide 88 Practices, discipline, communication
Copyright 2004 – Johannes Brodwall Slide Prioritize requirements with a backlog
Copyright 2004 – Johannes Brodwall Slide 90 Prioritize requirements with a backlog
Copyright 2004 – Johannes Brodwall Slide 91 (NB: Software maintainance)
Copyright 2004 – Johannes Brodwall Slide 92 Too fully take advantage: Close communication with stakeholders
Copyright 2004 – Johannes Brodwall Slide Simple design: Goal and means
Copyright 2004 – Johannes Brodwall Slide 94 Avoid designs that make change expensive: Don’t Repeat Yourself!
Copyright 2004 – Johannes Brodwall Slide 95 For example: Jifty
Copyright 2004 – Johannes Brodwall Slide 96 Solve the current problem only
Copyright 2004 – Johannes Brodwall Slide Automated regression suite
Copyright 2004 – Johannes Brodwall Slide 98 Test::Simple Test::More (Schwern)
Copyright 2004 – Johannes Brodwall Slide Refactor all the time
Copyright 2004 – Johannes Brodwall Slide 100 Def: Refactor “To transform a program while preserving its behavior.”
Copyright 2004 – Johannes Brodwall Slide 101 Refactor to simple design
Copyright 2004 – Johannes Brodwall Slide Continuous Integration
Copyright 2004 – Johannes Brodwall Slide 103
Copyright 2004 – Johannes Brodwall Slide Collective Ownership
Copyright 2004 – Johannes Brodwall Slide 105 It’s not: ”Your code and mine code”
Copyright 2004 – Johannes Brodwall Slide 106 Refactor everything
Copyright 2004 – Johannes Brodwall Slide 107 Continous integration keeps you safe
Copyright 2004 – Johannes Brodwall Slide 108 (5)
Copyright 2004 – Johannes Brodwall Slide 109 Fine tuning your agile process
Copyright 2004 – Johannes Brodwall Slide 110 Deliveries
Copyright 2004 – Johannes Brodwall Slide 111 Large organization Less frequent releases High risk Less frequent releases
Copyright 2004 – Johannes Brodwall Slide 112 Staged (internal delivery)
Copyright 2004 – Johannes Brodwall Slide 113 Breaking it up
Copyright 2004 – Johannes Brodwall Slide 114 ”The smallest meaningful task”
Copyright 2004 – Johannes Brodwall Slide 115 Small releases: Penalizes half-work
Copyright 2004 – Johannes Brodwall Slide 116 One click deployment
Copyright 2004 – Johannes Brodwall Slide 117 Extreme: Deploy every feature
Copyright 2004 – Johannes Brodwall Slide 118 Mastering Testing
Copyright 2004 – Johannes Brodwall Slide 119 ”Only test what you want to work” -- Ron Jeffries
Copyright 2004 – Johannes Brodwall Slide 120 Many types of test Acceptance test Databases User interfaces Integration tests Unit test Performance/Load/Stress
Copyright 2004 – Johannes Brodwall Slide 121 All can be automated
Copyright 2004 – Johannes Brodwall Slide 122 Greatest value: Acceptance tests
Copyright 2004 – Johannes Brodwall Slide 123 Easiest to implement: Unit tests
Copyright 2004 – Johannes Brodwall Slide 124 Starting unit testing:
Copyright 2004 – Johannes Brodwall Slide 125 Don’t
Copyright 2004 – Johannes Brodwall Slide 126 Try to test everything in the beginning
Copyright 2004 – Johannes Brodwall Slide 127 Do:
Copyright 2004 – Johannes Brodwall Slide 128 Focus on ”bang for the buck”
Copyright 2004 – Johannes Brodwall Slide 129 Good: New features
Copyright 2004 – Johannes Brodwall Slide 130 Better: Bugs
Copyright 2004 – Johannes Brodwall Slide 131 Even better: Bug ridden code
Copyright 2004 – Johannes Brodwall Slide 132 Smoke test Def: ”A rudimentary form of testing; power is applied and the tester checks for sparks, smoke, or other dramatic signs of fundamental failure”
Copyright 2004 – Johannes Brodwall Slide 133 Perfecting unit tests
Copyright 2004 – Johannes Brodwall Slide 134 Remember: Test is a noun!
Copyright 2004 – Johannes Brodwall Slide 135 Tests as specification
Copyright 2004 – Johannes Brodwall Slide 136 Write tests first
Copyright 2004 – Johannes Brodwall Slide 137 Consider test brittleness
Copyright 2004 – Johannes Brodwall Slide 138 Consider unit test running time
Copyright 2004 – Johannes Brodwall Slide 139 Implementing Continuous Integation
Copyright 2004 – Johannes Brodwall Slide 140 Avoid sliding back
Copyright 2004 – Johannes Brodwall Slide 141 Not useful in small projects (1-3 people?)
Copyright 2004 – Johannes Brodwall Slide 142 Can at least scale to 50 people
Copyright 2004 – Johannes Brodwall Slide 143 Be prepared to pay the price
Copyright 2004 – Johannes Brodwall Slide 144 Continuous Integration will become critical to you org.
Copyright 2004 – Johannes Brodwall Slide 145 Has given us the ability to do enormous refactorings
Copyright 2004 – Johannes Brodwall Slide 146 Has enabled us to treat 500 KLOC as one code base
Copyright 2004 – Johannes Brodwall Slide 147 Communication
Copyright 2004 – Johannes Brodwall Slide 148 What is the biggest cost driver?
Copyright 2004 – Johannes Brodwall Slide 149 Misunderstandings
Copyright 2004 – Johannes Brodwall Slide 150 Misunderstood business needs
Copyright 2004 – Johannes Brodwall Slide 151 Misunderstood interface to integrate with
Copyright 2004 – Johannes Brodwall Slide 152 Misunderstanding your neighbours code
Copyright 2004 – Johannes Brodwall Slide 153 Not knowing that you neighbour is doing the same as you!
Copyright 2004 – Johannes Brodwall Slide 154 Techniques:
Copyright 2004 – Johannes Brodwall Slide 155 Keep your customer close
Copyright 2004 – Johannes Brodwall Slide 156 Obvious, difficult (But if the customer won’t be close, how important is the project, really?)
Copyright 2004 – Johannes Brodwall Slide 157 Pair programming
Copyright 2004 – Johannes Brodwall Slide 158 Fun, difficult, rewarding, exhausting Hard to sustain (but great if you can!)
Copyright 2004 – Johannes Brodwall Slide 159 Stand up meetings
Copyright 2004 – Johannes Brodwall Slide 160 ”What did you achieve since yesterday?” ”What do you plan on achiving today?” ”What is standing in your way?”
Copyright 2004 – Johannes Brodwall Slide 161 Keep it short!
Copyright 2004 – Johannes Brodwall Slide 162
Copyright 2004 – Johannes Brodwall Slide 163 Keep it short!
Copyright 2004 – Johannes Brodwall Slide 164 Fun, easy, rewarding Exhausting (if you don’t do it right!)
Copyright 2004 – Johannes Brodwall Slide 165 Reflection workshops
Copyright 2004 – Johannes Brodwall Slide 166
Copyright 2004 – Johannes Brodwall Slide 167 Fun, easy, rewarding Value decreases with time
Copyright 2004 – Johannes Brodwall Slide 168 (6)
Copyright 2004 – Johannes Brodwall Slide 169 Conclusion
Copyright 2004 – Johannes Brodwall Slide 170 Phasist development...
Copyright 2004 – Johannes Brodwall Slide 171 Forces us to guess Forces us to consider a too much at the same time
Copyright 2004 – Johannes Brodwall Slide leads to suffering
Copyright 2004 – Johannes Brodwall Slide 173 (and our poor reputation as professionals)
Copyright 2004 – Johannes Brodwall Slide 174 When I speculate, I’m usually wrong
Copyright 2004 – Johannes Brodwall Slide 175 So instead...
Copyright 2004 – Johannes Brodwall Slide Short-term decisions
Copyright 2004 – Johannes Brodwall Slide Deliver something
Copyright 2004 – Johannes Brodwall Slide Get feedback
Copyright 2004 – Johannes Brodwall Slide Adapt
Copyright 2004 – Johannes Brodwall Slide 180 (requires practices and tricks)
Copyright 2004 – Johannes Brodwall Slide 181 Summary of tricks
Copyright 2004 – Johannes Brodwall Slide 182 Prioritize with a backlog
Copyright 2004 – Johannes Brodwall Slide 183 Keep in touch with stand- up meetings
Copyright 2004 – Johannes Brodwall Slide 184 Just-in-time planning and requirements
Copyright 2004 – Johannes Brodwall Slide 185 Simple design
Copyright 2004 – Johannes Brodwall Slide 186 Test only what you want to work
Copyright 2004 – Johannes Brodwall Slide 187 Refactor mercilessly
Copyright 2004 – Johannes Brodwall Slide 188 Continuous Integration
Copyright 2004 – Johannes Brodwall Slide 189 Parting words
Copyright 2004 – Johannes Brodwall Slide 190 Software isn’t a canned good
Copyright 2004 – Johannes Brodwall Slide 191 It rots during storage
Copyright 2004 – Johannes Brodwall Slide 192 Good luck with your agile project!
Copyright 2004 – Johannes Brodwall Slide 193 Thank you for listening