Monday, February 28, 2011

Emergent Design

I'm just reading Scott L. Bain's book again. For the fourth or so time. Well worth a read for anyone in the software business, even if you don't work at the codeface.

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.
The book uses Java for the examples but c# and vb programmers (and probably any other OO developers will be able to follow.

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?
Having a framework like this really helps you get some clarity.

No comments:

Post a Comment