The Value of Failure
I really like Ken Perlin’s blog post from last Saturday about the algorithms you never published because they didn’t work. At this point, an awful lot of my value as a graphics programmer is the fact that I spent 20+ years doing things wrong. I have accumulated a wealth of experience in implementing algorithms which looked great but had a fatal flaw, or ones which are great in theory but don’t work in practice, or ones which work but are just too hard to write and maintain to be worth the effort.
When you’re starting out in a field you need to either make all of those mistakes, or listen to somebody else who made them. That often gets left out of the way we teach. We show kids the “right” way in school, and we publish journals which are full of research projects which “worked”. But we hide all of the good juicy stories of what went wrong on this or that project.
Henry Petroski has written a number of great books on how civil and mechanical engineering have progressed over the years by learning from their failures. Everyone in those fields learns about famous screwups like Gallopin’ Gertie or the Challenger O-rings, but in the software world we have a bad habit of not learning from our failures. That’s unfortunate because they’re often worth more than our successes.