Chapter 1 – A Pragmatic Philosophy
- It’s Your Life – If you’re frustrated by your current job, opportunities, or skill set, why not change it?
- The Cat Ate My Source Code – Take responsibility for your actions. Admit when you’ve made a mistake. Don’t make excuses, provide options instead.
- Software Entropy – Address all the “broken windows” in your code as soon as they’re discovered. Don’t let entropy win.
- Stone Soup and Boiled Frogs – Remember that people love to join an ongoing success but that it’s also important to remain focused on the big picture.
- Good-Enough Software – Great software today is often preferable to the fantasy of perfect software tomorrow.
- Your Knowledge Portfolio – Invest in your knowledge portfolio the same way you would a financial portfolio: invest regularly, diversify, manage risk, buy low, sell high, and review and rebalance.
- Communicate! – Say what you need to say considering the audience and the context.
Chapter 2 – A Pragmatic Approach
- The Essence of Good Design – The easier software is to change, the better it is designed. This is the ETC (easy to change) principle.
- DRY – The Evils of Duplication – If requirements or specifications change, you should only have to change your code in a single place.
- Orthogonality – Changes in one thing not should affect any other. It should be a trivial task to replace one component with another.
- Reversibility – Organize your project in such a way that if a requirement changes you can easily adjust without re-doing everything.
- Tracer Bullets – It can be a great idea to initially set up a basic working version of your application that demonstrates that each and every component can work together.
- Prototypes and Post-it Notes – In other cases it may seem better to flesh out ideas using a disposable prototype that will be scrapped once the discovery phase has ended.
- Domain Languages – Sometimes it makes sense to develop an application-specific mini-language that allows you to express your intent in a much clearer way than you otherwise could with a general purpose language.
- Estimating –