“There are no silver bullets in software engineering” is a well worn phrase since it was first coined by Fred Brooks in the eighties. Although most developers probably don’t know where the phrase originated, they intuitively grok the general thesis:
“There is no single development, in either technology or management technique, which by itself promises even one order-of-magnitude improvement within a decade in productivity, in reliability, in simplicity.”
I’m not here to tell you that Brooks was wrong. His analysis presupposes that the industry is following best practices to begin with. While in aggregate we might be approaching them, I know from personal experience and myriad conversations with clients that individual enterprises, with few exceptions, are not.
Best practices are a moving target. It is easy to forgive the developer entering the workforce today if he doesn’t realize that “continuous delivery” isn’t the way things have always been done. After all, why would we ever do it another way if what we really want is quality software that meets user requirements? What, you’re not doing continuous delivery in your own shop? I forgive you, too. Best practices might be common knowledge but they’re certainly not commonly implemented.
And there’s the problem with Brooks’ “no silver bullet” idea. It only applies to those who are already following best practices in architecture, best practices in coding, best practices in testing and so on. If you’re not following best practices – and I think I’ve already established that at least in my opinion, the majority of us aren’t – there really might be some silver bullets lying around. Technologies or strategies you never got around to implementing when they became “best practice” which today provide the potential for substantial – even order-of-magnitude – benefits.
Caching is one such technology. In-memory computing is a much hyped term and the last thing I want to do is throw wood on the fire. That said, I’ve seen many clients nursing a mature Web application along with bailing wire and duct tape who could do much worse than to supplement it with an in-memory data grid (IMDG) to provide an injection of performance, reliability, and scalability. That creaky database you’re scared of touching? Maybe you don’t have to.
This won’t be news to the cool kids running Web companies. But then none of them have serious legacy cruft to deal with. They’re doing continuous delivery, incremental refactoring of code to pay down technical debt, and so on. How quaint a blog post on caching must appear to them. But just because it isn’t sexy for the app dev one-percenters doesn’t mean that it isn’t something you should consider. My recently published Blueprint for Modernizing a Mature Web Application with an In-Memory Cache is a great place to start if you’re a Gartner client.
The good news about being a little behind on software engineering best practices is that you get silver bullets to play with. Use them.