Agile Software Development In Theory and Practice Johannes Brodwall

Preview:

Citation preview

Agile Software Development

In Theory and Practice

Johannes Brodwall

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 2

Who am I?

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 3

Johannes Brodwall

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 4

Board member, smidig.no

http://smidig.no/forum/

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 5

Organizer,

Oslo XP Meetup

Every first Monday of the month at Scuba bar (Grünerløkka)

http://xp.meetup.com/13/

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 6

Lead Software Architect

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 7

Sole developer

Small chat solution

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 8

Who are you?

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 9

Who works on ”a large project”?

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 10

Who works on (what you feel is) ”a large project”?

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 11

Who release software infrequently?

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 12

(0)

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 13

Intro

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 14

Course in an agile method

Extreme programming

Scrum

Lean Software Development

DSDM

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 15

Course in an agile method

Extreme programming

Scrum

Lean Software Development

DSDM

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 16

History lesson

SnowbirdAgile 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 Brodwalljohannes@brodwall.com

Slide 17

History lesson

SnowbirdAgile 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 Brodwalljohannes@brodwall.com

Slide 18

Specific for Perl

Test::MoreDevel::Refactor

JiftyPerlActor

Tinderbox

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 19

Specific for Perl

Test::MoreDevel::Refactor

JiftyPerlActor

Tinderbox

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 20

Experience report on using agile techniques in small and large environments

Continuous Integration

Relentless Testing

Frequent releasesCollective Ownership

Refactoring

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 21

Experience report on using agile techniques in small and large environments

Continuous Integration

Relentless Testing

Frequent releasesCollective Ownership

Refactoring

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 22

(1)

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 23

The Problem

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 24

Projects in crisis

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 25

Failure to deliver value

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 26

Barry Boehm: ”Software Engineering Economics”, 1984

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 27

”An infant engineering discipline”

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 28

(2)

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 29

The Response

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 30

”Make sure the reqs are right before you do anything”

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 31

”Make sure nobody changes the requirements”

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 32

”Try Harder!”

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 33

BRUF

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 34

BigRequirementsUpFront

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 35

(Picture: RUP analyst hard at work)

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 36

Trying to stuff everything into my small head!

It hurts!

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 37

And then the world changes!

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 38

When I guessed wrong...

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 39

... my work is wasted

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 40

... it is even harder to change the system

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 41

Speculation breeds complexity

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 42

Complexity breeds complexity

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 43

And again....

.. my crystal ball

is broken!!!

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 44

So I get a poorly divided, rigid design

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 45

Formality:

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 46

make decision ”correctly”

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 47

The right decision

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 48

Change control mechanism

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 49

Just-in-case requirement

(”free” in the beginning)

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 50

Failure to deliver value

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 51

These ”solutions” are part of the problem

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 52

Fixed-price, fixed-scope contract bids

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 53

(3)

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 54

The Alternative

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 55

Instead of just-in-case...

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 56

... just-in-time

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 57

Boehm was wrong

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 58

(or at least Boehm’s phasist readers)

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 59

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 60

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 61

Harness the Power of Myopia

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 62

1... 2... 3...

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 63

1. Focus on short term

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 64

Requirements for current feature

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 65

Design for current requirement

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 66

2. Deliver something

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 67

Ideal: Deliver working, tested features as often as you safely can

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 68

3. Get feedback

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 69

(talk to people!)

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 70

4. Adapt

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 71

Get Feedback

Avoid Speculation

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 72

The cost of speculation

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 73

Myopic requirements

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 74

Analyse the current release

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 75

Myopic development

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 76

Design for the current problem

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 77

Myopic programming

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 78

Write a test – make it pass – Remove duplication

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 79

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 80

(4)

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 81

Changing your minds

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 82

... is not always easy

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 83

... is not always safe

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 84

(painted into a corner)

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 85

(Experience: Sustainable myopia varies with org.)

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 86

Agile: Enabling safe myopia

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 87

Not technology

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 88

Practices, discipline, communication

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 89

1. Prioritize requirements with a backlog

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 90

Prioritize requirements with a backlog

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 91

(NB: Software maintainance)

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 92

Too fully take advantage: Close communication with

stakeholders

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 93

2. Simple design: Goal and means

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 94

Avoid designs that make change expensive:

Don’t Repeat Yourself!

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 95

For example: Jifty

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 96

Solve the current problem only

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 97

3. Automated regression suite

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 98

Test::Simple

Test::More (Schwern)

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 99

4. Refactor all the time

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 100

Def: Refactor“To transform a program while

preserving its behavior.”

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 101

Refactor to simple design

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 102

5. Continuous Integration

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 103

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 104

6. Collective Ownership

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 105

It’s not: ”Your code and mine code”

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 106

Refactor everything

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 107

Continous integration keeps you safe

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 108

(5)

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 109

Fine tuning your agile process

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 110

Deliveries

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 111

Large organization Less frequent releasesHigh risk Less frequent releases

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 112

Staged (internal delivery)

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 113

Breaking it up

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 114

”The smallest meaningful task”

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 115

Small releases: Penalizes half-work

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 116

One click deployment

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 117

Extreme: Deploy every feature

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 118

Mastering Testing

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 119

”Only test what you want to work”

-- Ron Jeffries

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 120

Many types of test

Acceptance test

Databases

User interfaces

Integration tests

Unit test

Performance/Load/Stress

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 121

All can be automated

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 122

Greatest value: Acceptance tests

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 123

Easiest to implement: Unit tests

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 124

Starting unit testing:

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 125

Don’t

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 126

Try to test everything in the beginning

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 127

Do:

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 128

Focus on ”bang for the buck”

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 129

Good: New features

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 130

Better: Bugs

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 131

Even better: Bug ridden code

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

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 Brodwalljohannes@brodwall.com

Slide 133

Perfecting unit tests

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 134

Remember: Test is a noun!

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 135

Tests as specification

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 136

Write tests first

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 137

Consider test brittleness

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 138

Consider unit test running time

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 139

Implementing Continuous Integation

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 140

Avoid sliding back

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 141

Not useful in small projects (1-3 people?)

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 142

Can at least scale to 50 people

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 143

Be prepared to pay the price

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 144

Continuous Integration will become critical to you org.

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 145

Has given us the ability to do enormous refactorings

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 146

Has enabled us to treat 500 KLOC as one code base

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 147

Communication

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 148

What is the biggest cost driver?

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 149

Misunderstandings

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 150

Misunderstood business needs

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 151

Misunderstood interface to integrate with

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 152

Misunderstanding your neighbours code

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 153

Not knowing that you neighbour is doing the same

as you!

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 154

Techniques:

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 155

Keep your customer close

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 156

Obvious, difficult(But if the customer won’t be close, how

important is the project, really?)

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 157

Pair programming

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 158

Fun, difficult, rewarding, exhaustingHard to sustain (but great if you

can!)

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 159

Stand up meetings

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 160

• ”What did you achieve since yesterday?”• ”What do you plan on achiving today?”

• ”What is standing in your way?”

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 161

Keep it short!

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 162

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 163

Keep it short!

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 164

Fun, easy, rewardingExhausting (if you don’t do it right!)

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 165

Reflection workshops

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 166

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 167

Fun, easy, rewardingValue decreases with time

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 168

(6)

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 169

Conclusion

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 170

Phasist development...

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 171

Forces us to guessForces us to consider a too

much at the same time

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 172

... leads to suffering

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 173

(and our poor reputation as professionals)

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 174

When I speculate, I’m usually wrong

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 175

So instead...

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 176

1. Short-term decisions

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 177

2. Deliver something

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 178

3. Get feedback

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 179

4. Adapt

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 180

(requires practices and tricks)

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 181

Summary of tricks

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 182

Prioritize with a backlog

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 183

Keep in touch with stand-up meetings

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 184

Just-in-time planning and requirements

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 185

Simple design

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 186

Test only what you want to work

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 187

Refactor mercilessly

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 188

Continuous Integration

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 189

Parting words

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 190

Software isn’t a canned good

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 191

It rots during storage

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 192

Good luck with your agile project!

Copyright 2004 – Johannes Brodwalljohannes@brodwall.com

Slide 193

Thank you for listening

http://smidig.no/forum/http://xp.meetup.com/13/

Recommended