Editorial note: I originally wrote this post for the Monitis blog. You can check out the original here, at their site. While you’re there, take a look at their offering for monitoring your software in production.
In the software development world, we pay a ton of attention to the performance of our code in production. And rightfully so. A slow site can make you hemorrhage money in a variety of ways.
To combat this, the industry has brought some of its most impressive thinking to bear. The entire DevOps movement focused on bringing things to production more efficiently and then managing it more efficiently. Modern software development emphasizes this, staffs for it, and invests in it.
But looking beyond that, we leverage powerful tools. Monitoring solutions let us get out in front of problems before users can discover them. Alerting solutions allow us to configure those solutions to happen more effectively. Entire organizations and industries has sprung up around creating seamless SaaS experiences for end users.
But in spite of all this, I’ve found that we have a curious blind spot as an industry.
A Tale of Misery
Not too long ago, I sat in a pub having a beer, waiting on my food to arrive. With me sat a colleague that works for a custom app dev agency. In this capacity, he visits clients and works on custom software solutions in their environments.
Over our beers, he described their environment and work. They had some impressive development automation. This included a continuous integration setup, gated builds, and push-button or automated deployments to various environments. And once things were in production, they had impressive instrumentation for logging, tracking, and alerting about potential issues.
I told him that he was lucky. He countered in a way that caught me a bit off guard. “Yeah, it’s impressive, but actually working there as a developer is pretty rough.”
I asked him to clarify, so he did. He told me about having to use slow, old development machines. He talked about unit test suite runs taking forever locally and even longer in the build environments. They had a lot of best practices in place, but actually getting anything done was really hard. Even the source control server was flaky, sometimes kicking back attempted commits and creating issues.
This struck me as a fascinating contrast.