#devops At the heart of automation is a simple Aristotelian premise: we are what we repeatedly do.
Don and I have four children, all of whom have had the fortune to take piano lessons (I'm not sure if the youngest would agree he's fortunate at this point in his life but at five, he's not really able to answer the question with any degree of wisdom, anyway. Come to think of it, not sure the other three would agree either. I'll have a chat with them next time they're home).
Anyway, most people who play piano understand the concept of "muscle memory". That's what allows me to sit down at a piano, without music, and play. We call it "memorization" but that's not what it is, at least not in the sense that we're consciously recalling the notes. It is rather that our fingers and wrists are simply trained by repetition to hit the right keys. This is also true for many other physical tasks. You probably don't actually have to think about how to tie your shoes, you just do it. Similarly, touch typing is muscle memory in action. You don't actually think about where the "A" key is any more than I have to think about where G, A or Bb is on the piano keyboard. You just know, because, well, muscle memory.
During one of our youngest son's lessons, he made a mistake on his first try through a piece. His piano teacher patiently explained to him - and me - that if you do it wrong the first time, you're likely to continue doing it wrong and then eventually it's so ingrained in the fingers that it's very, very, very hard to fix. So it's best to go slow and do it right the first time - and subsequent times - to ensure that the muscle memory is correct.
That should have been obvious to me but it wasn't for some reason.
But now that's it been pointed out, it's a great insight into why, as we transition from manual to automated processes in the data center via devops initiatives, that we are careful to ensure we're codifying (and thus burning into the data center's muscle memory) the right steps. The humor behind the well-known "to err is human, to really screw things up requires a computer" boils down to a real truth: if you tell the computer to do something the wrong way, it's going to do it wrong - and much faster than you would. One of the advantages of automation is rapidity; the ability to move faster and with more agility. But it's also about being able to repeat deployment processes successfully. If a core process is automated and it's wrong, the systems are going to repeat that mistake over and over again.
And as Aristotle said, we are what we repeatedly do. If we repeatedly fail, then, well, you can figure it out. But if we repeatedly succeed...
What we do over and over becomes habit. The danger in automation lies in automating inefficient or broken processes that will lead to failure rates beyond what are acceptable to the business and operations. We need to not just automate processes, but automate efficient and successful processes. We need to improve processes that exist but may be outdated, or comprise steps that make no sense in a modern data center.
If we practice long enough executing processes that are efficient and successful, we will train the digital muscle memory of the data center to be successful.
One of the reasons deployment processes often fail is because there is a significant time lapse between deployments. We don't practice, as it were, on a daily basis. We wait until a week before that recital and then we start practicing, only to find that we don't recall the piece well enough to be prepared for the big day. Practice makes perfect - or at least successful execution - and that means the continuous deployment model associated with devops isn't just important for enabling agility of the business and operations, it's also important as the way in which devops and the processes it automates "practice" and improve with each cycle. It's building the muscle memory necessary to ensure that when the big release day comes, everyone is prepared and ready to perform.
Configure. Test. Deploy. Rinse. Repeat. Repetition is vital to ensuring success and rooting out inefficiencies. Whether it's playing the piano, learning to type, or tying your shoes, repetition is the key to enabling successful automation of a process.