I was asked the other day what I think is the most important tool in my toolbox. Often DevOps is thought to be merely about automating everything - building beautiful pipelines to ship code. Would that make vim the all-around Swiss army knife of DevOps? No.

DevOps is about the ops team attending architecture meetings from the get-go. It's about having the development team participate in the out of hours rota. Thinking about how the application is deployed, maintained and monitored before a single line of code is written. DevOps is about QA preventing defects proactively, thinking of quality as a feature of the delivery process instead of "finding bugs".

DevOps is about breaking down silos, sharing responsibility and building tools to collaborate effectively. We have a shared goal, after all. We are doing business. We need to build and ship solutions that somebody is willing to pay for. More often than not this means delivering a set of features by a certain date within a limited budget - the axis of evil, if you will. Without a high-performing team that is a beautiful, yet often unattainable goal.

Sure, automating everything is important. Instrumenting and monitoring applications and the delivery process itself - and iteratively improving - is important. The technical competence to choose the best technology for the job in hand is very important.

But the most important tool in DevOps? It's communication.