Project Planning, pre-Agile

  • Waterfall
    • NASA-style
  • Auteurism
    • "It's done when it's done"
  • Death March
    • Fixed scope, fixed time, fixed cost =>
    • low quality of code
    • low quality of life
  • the Mythical Man-Month
    • adding more people to a late project makes it more late

Software Development, pre-Agile

  • start coding before you understand the problem
  • keep coding until it seems to work
  • move on to the next problem
  • work alone
  • wait for QA to find bugs
  • react defensively to feedback and bug reports

The Agile Manifesto

We are uncovering better ways of developing
software by doing it and helping others do it.
Through this work we have come to 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

That is, while there is value in the items on
the right, we value the items on the left more.

Manifesto Principles

Beware of Dark Agile

aka Faux Agile or Evil Agile

this obeys Chaffee's Law of Titles: if a discipline's title includes a complimentary descriptor, then that descriptor does not apply

  • Computer Science is not a science
  • Agile is not agile

Agile Methodologies

  • Extreme Programming (XP)
  • Scrum
  • Kanban
  • SAFE
  • ...and several others

Extreme Programming (XP)

Why is it called "extreme"? Mostly it's tongue-in-cheek, but beneath that is an honest experiment:

Instead of saying "we should really do X..."
(and then not)
...what if we do X all the time ?

(where X is testing, code review, incremental design, refactoring, ...)

XP values

  • Communication
  • Feedback
  • Simplicity
  • Courage

XP Practices

XP Practices: Fine scale feedback

  • Pair programming
  • Planning game
  • Release planning
  • Iteration planning
  • Test driven development

XP Practices: Whole team

  • War Room
  • Continuous integration
  • Design improvement (refactoring, domain modeling)
  • Small releases

XP Practices: Shared understanding

  • Coding standard
  • Collective code ownership
  • Simple design
  • Inceptions
  • Clear written acceptance criteria
  • Automated acceptance tests
  • User-centric design (e.g. personas)

XP Practices: Programmer welfare

  • Sustainable pace
  • Continuous process improvement (via retrospectives)

XP Practices: Iterative development

  • Time boxed iterations
  • work, measure, plan, repeat

Yesterday's Weather

The most efficient way to answer the question,

"What will today's weather be?"

is with the question,

"What was the weather yesterday?"

...sure it'll be wrong 20% of the time, but that's a much better rate than every other planning system

Continuous Improvement

First learn the rules

then obey the rules

then improve the rules

(then repeat)


see cadence and retrospectives lessons