Learning a little philosophy
I'm reading the book "Object Thinking" by David West. So far he's led me through a philosophical history lesson, talking about (and quoting) Plato, Ed Yourdon, Christopher Anderson, Dijkstra, Greeks, Romans, structured programming, etc. This definitely isn't a "fill the book with program listings" type of book. It's making me think. Here's one of the lessons so far:
"If you think about design using an implementation language - as programmers and especially extreme programmers are wont to do - your designing will be enhanced or severely restricted by that language."
David challenges people to look at creating software not as a science with formal, ridged processes, but as an art with lots of creativity. He proposes that extreme programming and agile development techniques aren't only for small teams and non-critical software. He says that critics tend to put these concepts into a corner because it's harder to think creatively. That it's harder to teach someone to be an artist than it is to follow rote process and procedures. As a result the formal computer science programs self-validate themselves in their formal thinking and trivialize non-conforming thinkers.
Hm. More on this later...