As we rush headlong into 2013, many of us prepare the annual document of self-deception otherwise known as our “New Year’s Resolutions”. Most people don’t intend to lie to themselves; it just often ends up that way. If you are lazy then the act of writing down “don’t be lazy” won’t transform you into a marathon runner. Likewise, writing down “lose weight” won’t precipitate an immediate downward spiral in pant size. Why not? Too often, the problem is that our past failures are staring us in the face, informing us up front of the likely futility of our resolutions, and preventing us from moving on.
We have to forget the pain of past failures (though not the lessons), much like one-year-old babies that constantly put stuff in their mouths, even if most times it tastes awful. If memories of past failures prevented them from developing, then they would starve after their first beetle snack.
As we age, our sense of trepidation grows as we learn the consequences of our actions. After suffering a bashed head, or worse, the first time a teenage buddy suggests jumping off a bridge, we learn that next time that just maybe we should wait and see what happens to the other person first. However, we can overdo caution. What if we carry that initial memory around indefinitely and it develops into a phobia (a fear of heights, for example) that thwarts many other ambitions?
Can DBAs overdo caution as well? On the one hand, it is important that we remember and learn from both our good and bad experiences. On the other, if we never break free from any of the pain of past failures, they can forever dog our progress. I spend a considerable portion of my professional life maintaining backward compatibility with my own previous mistakes and failures. Our primary system is so heavily laden with poor choices made 20 years ago (and replicated in multiple systems since, built to replace the previous “broken” systems) that every decision I want to make as an architect has to be considered against a thousand other busted processes. Why don’t I just fix the original problems?
What, if, for example, I could find the time and tools to apply a set of selective DELETE statements to my “bad data” (call it SQL amnesia!), apply a thin layer of CHECK constraints, and reinsert rule-conforming data? I would no longer be tied to past mistakes; I could save hours every single day by not having to write code that remembers that someone may have entered a value like “I ain’t got any idea”, instead of a standard value like “Unknown”!
So this year, let’s make it our New Year’s Resolutions as DBAs and programmers to admit that we failed in the past. If you take decisive action you may get it wrong occasionally, but it is much better to dust yourself down and try again to take control of your life and work. A healthy dose of selective, enforced amnesia about the pain of failure is the answer. Fix bad data, rewrite terrible queries, eliminate unneeded cursor usage, normalize our sloppy table designs, and move on!
Eventually, it will become so difficult to remember how our previous malformed designs worked us stupid that we never look back.