Much of my time at work is spent on testing nowadays, so I'll probably write more about this as time goes on (and more coherently than tonight's braindump).
I learned about testing and debugging - informally, out of necessity - almost as soon as I learned there was something called "software" and that you could "program" it to do stuff. I used to loathe testing, but found it important. Then I learned about unit testing and (almost simultaneously) test-driven development and kind of enjoyed it and found it even more important. Then I was drafted for Tim's TOPP test team and learned about session-based testing and the context-driven school and now adore testing and think it's ridiculously important - especially manual tests that aren't boring. Really. I spent a lunch break reading through the resources on this wiki. I'm looking for more. And I enjoy breaking things. A lot.
It's not so much that the tests themselves are important. They are - it's important to make sure your project functions as intended - but that excites me far less than the mental modes you have to push yourself into to be able to tell (and even then, only with greater degrees of imperfect certainty) what works and what doesn't. Testing is a great way to learn epistemology in an applied manner; it's a very constructionist way of getting your hands dirty and doing something "productive" while figuring out more about how your brain thinks and how you know that you know things.
The first three principles of the context-driven school are especially resonant to me, and hold true for all practices I've encountered so far, technical and nontechnical*.
- The value of any practice depends on its context.
- There are good practices in context, but there are no best practices.
- People, working together, are the most important part of any project's context.
*why do I continue to split the world like this so often?
In other words, "What are you optimizing for?" The "best" option depends on the criteria you use to define "best," and there is no "best" set of criteria for "best-ness" that does not itself have another external set of "bestness" criteria determining its ranking. (I'd like to make an oblique to Godel here, but the analogy doesn't quite fly.) The related notion of optimization being socially constructed has tickled me pink ever since it started rattling around my brain last spring (thanks to Prof. Silbey's sociology class).
I also greatly enjoyed this presentation on the role of emotions in finding bugs. Alas, it's Powerpoint. And I must be off to bed so I can try to get a spot in I.House as early as possible.
It's rather convenient to have the light switch right next to your bed.