Slides

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

http://agilemanifesto.org/

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

http://agilemanifesto.org/principles.html

Beware of Dark Agile

aka Faux Agile or Evil Agile

https://ronjeffries.com/articles/018-01ff/abandon-1/

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

https://en.wikipedia.org/wiki/Extreme_programming_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)

Retrospectives

see cadence and retrospectives lessons