http://www.infoq.com/presentations/cockburn-bury-not-praise-agile
Slides: http://alistair.cockburn.us/get/2754
What is software without analogies/metaphors?
- people making ideas concrete in an economic context
Swamp Game
If you only have one round to play you just try and build it as quickly as possible, but if there's another round, the strategy changes.
Two Conflicting Goals
- Deliver this software
- Setup for the next game
- Refactoring, adding tests, junior devs -> senior devs
Project managers never happy, need to do more refactoring/tests
Inside the game only 3 moves
- Invent
- Decide
- Communicate
The situations don't (almost never) repeat... the terrains always changing, have to be alert
Communication/control strategies change when you add more people or criticality increases - the swamp changes underneath you.
Communication Effectiveness
Face-to-face is most effective (whiteboard)
Phone strips out visual cues
email strips out vocal infelections
Paper is least effective
Recorded video is better than paper
People issues determine speed of project
Craft -
Software has discipline envy of engineering, engineering has discipline envy of physics
Craft - pay attention to skills and medium (language)
Crafts
- Deciding what to build (requirements)
- Managing (people and projects)
- Modeling
- Designing the external view
- Large-scale design (architecting)
- Fine-scale design (programming)
- changes every 5 years, need to reset yourself every 5 years
- Validating the work)
People Learn in 3 Stages (Kanban)
- Learn (Shu)
- start off by copying something
- run into it's limitations
- Collect Techniques (Ha)
- Invent / Blend Techniques (Ri)
- just do it
- I don't know, I'll make it up when we get there
3 pillars
Cooperative Game
Craft
Lean
Lean
Software Development similar to manufacturing if you consider unit of inventory = unvalidated decision
Users & Sponsors -> UI Designers / BAs -> Programmers -> Testers
Software Development has several correction loops
Manufacturing hates feedback - screws up your life
New work queue, rework queue
How do we manage the rework queue? Fights for attention with new work queue
The programmers are the only ones who can get rid of their feedback loops (don't produce bugs: test first, regression tests, automated tests)
Aim for continuous flow