I'll try an paraphrase it a bit:
- Making software should be a profession no less than law or medicine. It's just that the profession has only a 40 year history and hasn't evolved the structures it needs.
- It is also an art and a science.
- Things change, be prepared to change with them. Code with change in mind.
- Stand on the shoulders of giants. Use patterns that have been used before.
- Develop instincts that tell you something smells funny (he actually uses this analogy)
- Constantly refactor. If you have coded for change then it's not a big issue to move things around to make things self contained.
- Think about how you are going to test the stuff you write and unit test it often.
And while we are on books I've found PDFs of Polya's how to solve it book on heuristics in a few different PDF versions. Although the book applies to mathematical problems it's great for finding all sorts of solutions. Having the following checklist in mind is very useful:
- Do I understand the problem?
- Have I got enough info to solve it? If not can I safely make assumptions? Can I get more information?
- Can I draw the problem as a diagram?
- Can I restate the problem in my own words?
- Is it somehow like something I've seen before?
- Can I guess the range of the answer?
- Can I reduce it so more soluble chunks?