Dials to 11

Modern
Extreme
Programming

@benjiweber

Extreme Programming

Feedback Loops

Turn up what works

@benjiweber

Kent Beck

“My goal… was to take everything I knew to be valuable about software engineering and turn the dials to 10."
(XP Explained)

“We would do everything that was absolutely necessary as intensely as we could imagine and we would ignore anything else.”
(XP Explained)

1 Paired Programming to
Mob Programming

2 Continuous Integration to
Continuous Deployment

3 Broadening
Collective Ownership

4 Test Driven Development to
Monitoring Driven Development

Paired to Mob Programming

"Write all production programs with two people sitting at one machine"
(XP Explained)

Feedback Loop

building the right things

building them right

Woody Zuill

Whole Team on the
Same Problem at the
Same Time using the
Same Workstation

Mob Fridays to
Fluid Mobs

Overconfidence

Continuous Integration
to
Continuous Deployment

"I prefer a synchronous model"
(XP Explained)

"wait for the build to complete and entire test suite to run with no regressions before proceeding"
(XP Explained)

"Synchronous build create positive pressure for a short, clear feedback cycle"
(XP Explained)

"Integrate and build a complete product. If the goal is... to deploy a website, deploy a website"
(XP Explained)

Build Server != CI

Continuous Isolation


Async builds are weak CI

Test Environments are weak CI

Feature Branches are the
opposite of CI

Semver is the opposite of CI

"10 minute build"
(XP Explained)

"XP shortens the release cycle" …
"releases once a quarter"
(XP Explained)

Tools & Tech improved

10min build

10min to Prod

Risky?

Boring

Competitive Advantage

Broadening Collective Ownership

"Anyone on the team can improve any part of the system at any time"
(XP Explained)

Customer is the Bottleneck

Pro - Dev - Ops

Everyone can

  • Change any part of the codebase
  • Change any part of prod infra
  • Influence product direction
  • Run Experiments

Capacity
vs
Speed

TDD
to
Monitoring Driven Development

Types of Testing

User Testing

Exploratory Testing

Load Tests

Behaviour Testing

Many reasons for

System changes, Not just Deploys

Time

Users

Third Parties

Traffic

Infra

Ticking Timebomb

Wrapping Up

1 Paired Programming to
Mob Programming

2 Continuous Integration to
Continuous Deployment

3 Broadening
Collective Ownership

4 Test Driven Development to
Monitoring Driven Development

Feedback Loops

#XPLives

@benjiweber

http://benjiweber.com/xp

Questions?

@benjiweber

http://benjiweber.com/xp

talent@unrulygroup.com