Yesterday and today have been jam-packed with interesting sessions. The best of the bunch by far, though, was the roundtable discussion on agility and architecture Bob Martin led this afternoon.
I'm still trying to decide whether SD was incredibly smart or incredibly silly in putting this session in a rather small room. Bob Martin is the most engaging speaker I know, and his sessions are always packed. This one was no exception: standing room only, with plenty of people doing just that. While a larger room would have fixed that, I think the small room actually increased the quality of the discussion by forcing everyone into such close proximity. (So I'm going to go with incredibly smart.)
The discussion was deep and funny and wide-ranging (Bob's opening question: "Which white dwarf is closest to our sun?") and illuminating. The most interesting points for me:
- Agility does not mean not doing architecture; rather, it means basing that architecture on and validating it with working code.
- When asked what you do when you get ninety percent of your application written and then discover that your architecture won't work for the last ten percent, Bob replied "Ship that ninety percent!"
- The only way to guarantee that your code/design/architecture can evolve is to constantly evolve it.
- Agility enables architecture. Agility makes architecture a continuous topic of conversation.
- The first, most important part of making code flexible is to surround it with tests.
- The ability to test your code is much more important than your architecture will ever be.
- The valuable part of planning is the act, not the resulting documents. So repeat the act over and over and over so that you gain ever more practice with it.
- Architects figure out what needs to be done and then sell that to the teams doing the work. The best way to do this selling? Pair program the implementation with them.
Bob Martin is one of a very few people whose talks I attend just because he is the speaker. Sessions like this are the reason I attend SD.