Dan North - Agile Troublemaker, Developer, Originator of BDD

ABSTRACT

Software gets complicated fast. Most of good architecture and design practise is about trying to slow the rate at which software gets complicated. You can't stop it, it's a form of entropy. You can only slow it down and do your level best to stay on top.

- Goal of Software development: sustainably minimise lead time to business impact
- Productive is not the same as effective
- Code is not the asset. Code is cost
- What does it mean "understanding code"?
- Code should be stabilised or killed off.

Two complementary patterns:

### Short Software Half-Life

- How long till half of the code-base changes in an unrecognisable way?
- Good code can tell what it does, but not why?
- Good code can tell what it does, but not the 3-4 failed attempts.
- architecture decision record Documenting Architecture Decisions
- Keep a journal of decision made during development

### Fits In My Head

- Little computers passing messages.
- What would James say?