A few months ago, Mrs. Cron insisted that I go to the Emergency Room. She insisted that writhing around in pain on the bathroom floor isn’t a great way to spend an evening. She eventually brought me around to her way of thinking. Persuasive woman, Mrs. Cron.
I noticed that after giving me some industrial-strength painkillers, most of the effort was spent trying to look inside my generally opaque body without cutting me open (thanks!). There were blood tests, urine tests, ultrasounds, x-rays, MRIs, CT scans. Probably other tests as well, I don’t remember too clearly thanks to the aforementioned industrial-strength painkillers.
It turns out that I had gall stones, and they needed to remove my gallbladder. When it was time to cut me open, the surgeon already knew exactly what he would find inside and how to take care of it. The incisions were small and I recovered quickly. I’ll never be an underwear model, but that was never a reasonable goal of mine anyway.
The parallel to professional software development is pretty obvious. Many of the tools that we use are about looking inside a complex opaque thing without having to cut it open. We use debuggers, profilers, log analyzers, static analyzers, code coverage tools, and the like. Just like how the ER staff had a diverse set of tools for looking into me, it’s good for coders to have a diverse toolkit for looking into an application.
I just started using the free tier of New Relic for keeping track of how a very complex (and yes, very opaque) legacy application is behaving and it is my new favorite thing in the universe.