Technical Pain Behaviors In my family’s history of the past 10+ years, we have become well versed in nagging, ongoing, non-debilitating pain. In some ways, the lessons we have learned about physical pain correlate all too well to the types of pain that we technical people are involved with daily. But there is a huge difference, even if we don’t always seem to treat them differently. A Few Medical Terms There are different types of pain you deal with, and I want to talk about those classified as chronic or acute pain. The difference really comes down to how long this pain lasts and if it can be treated. Acute pain is typically pain that goes away reasonably quickly and has a specific cause and usually, a treatment. Chronic pain lingers, often for years and may not even have an apparent reason or useful treatment. (This is a simplification, of course, read more here if I have inadvertently piqued your medical interest.) One of the most interesting things about pain is that when we have it regularly, we tend to develop what are known as pain behaviors. Glossing over a very complicated medical discussion, these are coping mechanisms that we use to deal with the long-term pain we have to deal with. For example, say you break your arm. The doctor gives you a sling and some medicine and a time frame to wear the sling. If you still feel pain after it heals, you might develop a pain behavior of rubbing your shoulder and wearing the sling that makes you feel better, despite it not actually helping you (and perhaps actively making things worse). I suspect you may know where this is headed As I learned about this concept of pain behaviors, I realized we do the same stuff in technology. We have acute pains such as: server crashes, DBA/programmers oopses (yeah, we all have done something and said a variant of "oops" a time or two in our careers), and sometimes an outside non-friendly force (like a hacker or computer virus). Just like in medicine, we develop treatments that fix things, and ideally, processes that prevent future mishaps. However, chronic issues are where things get interesting. The server always seems slower than the customer expects. Some code breaks randomly in a way that “isn’t our fault”. Our projects are not moving fast enough. The first time we encounter an issue; we try something that we hope fixes it. But when it really doesn’t, there is this tendency to start doing things to make us and our customers feel like we are doing something that is helpful. For example, take that slow performing database. There are a lot of very useful techniques like reindexing, adding indexing, defragmenting the structures; and less useful techniques like whining that your server is inadequate and the granddaddy of them all: restarting the server. Any of these applied with the type of scientific rigor that a decent administrator possesses, taking the time to truly understand a problem, is not bad. But after a while, just like rubbing your knee to try to fix nerve damage in your back…it just becomes a behavior that isn’t doing you any good. But it helps a bit, so what? The problem with these behaviors is that they aren’t really helping things, and in some cases, they make things worse. Technology is not like the human body. There are solutions to every problem out there, you just haven’t found them, treating them with useless treatments only puts off the problem for later (and possibly someone else.) Like I said, the biggest example is restarting your server. For the non-technical user, restarting a device is a perfectly valid temporary solution to a lot of issues. I do it myself occasionally because there are many apps that don’t really behave all that great sometimes. However, restarting a server, especially a database server, where time and possibly money is being lost is not an awesome idea, especially when you have seen a problem more than a time or two. From the simple downtime to the cache that up a cache of data that makes queries run faster (not to mention transactions that are actively being processed), you are rarely fixing anything. Remember that computers are logical, even when they seem otherwise Don’t let your repeated, longstanding problems be something you go through the motions for just to make people feel like you are helping them. Take the time to solve them (or perhaps I mean, fight for the time to solve them!) Do you have examples of pain behaviors that you see people do to just gloss over chronic issues with their business class servers and processes? Louis Davidson (@drsql) Join the debate, and respond to the editorial on the forums |