A few years ago I was sitting on an Alaskan Airlines flight headed from Seattle Washington back to my home city. I had just attended my second year at the annual Powershell and DevOps global summit and had a few thoughts swirling in my head. From the things I had learned that year and the year previous, I knew that the way I was doing work at that time had to change. No longer could I continue with the status quo if I wanted to really put into practice the things that had inspired me at the conference.
I wasn’t sure how things would change to get to the end result, but I knew what the end result was that I wanted. I knew that the way of building out an individual server manually each time had to stop. Servers were no longer the thing to be treated with kid gloves - precious and unique like a precious jewel. No, instead they needed to be treated differently, like interchangeable pieces ready to be replaced at a moments notice if they acted up. This is, of course, one of the dreams of DevOps - to eventually get to a point where server hardware is no longer treated special and instead treated like cattle.
So as I sat there in my seat thinking, I pulled open word and started typing out a few things. I created what I called at the time my Manifesto For Work. This was going to be the framework which I was going to build my work life around and would be used as a guiding principle for how I planned to work going forward. I started the document with the following statement
Technology is evolving at a rapid pace. In order to keep up, we need to change how we as professionals interact with new methodologies and technologies that are released on a frequent basis. With this as a background, it seems crazy that the way a large chunk of work is being done in most places is through manual processes. Automation, and tools to assist with automation, are well established and have begun to change the face of how technology is used in more robust, scalable, reliable, reproducible, and verified environments. This is thanks in part to the principles of Devops being implemented in more organizations. In order to have more reliable, reproducible, and verified environments changes need to be made. This is my manifesto on personally how I will be approaching IT.
And as grandiose as that statement seemed, it ended up being exactly the right phrase to sum up how my work life has gone since then.
I continue to work based on these principals in that document I wrote on April 8th, 2016 - although it has been updated to be more clear and concise from that very rough first draft. These ideas are not perfect by any stretch of the imagination but I am going to put them out there one at a time with a little explanation on each one in order that maybe it will spark an idea for someone else to think upon why and/or how they perform work in their own lives and what (if any outside of moral principals) principals they use to guide how that work is done.
All of that being said. The first tenant of my philosophy of work is as follows:
Perform a manual task more than two times only if necessary
Technology enables amazing things to happen in the workplace, saving time and bringing efficiency to areas that used to be time sinks. With the advent of more open environments (public APIs, modules, web hooks, complete and through documentation, open source projects) the ability to automate processes has gone from being a pipe dream to a force multiplier. It’s now possible to automate infrastructure allowing not only servers to be created, but also validate and correct the configuration of these servers. These configurations are peer reviewed, documented standard which are maintained in a version control system. Getting to this step and making this part of the philosophy a reality requires that the other items in the list are either a work in progress or have already been tackled. This is the end goal of everything else – to allow for a seamless, documented, reliable and repeatable process allowing for the automation of documented manual processes.
Automation is the way companies are moving as they look for ways to get more work done with existing staff. Automation is seen as, for the most part, a force multiplier. More and more companies are opening up their systems to be interacted with by other systems for data exchange in order to allow for companies to automate various workflows. This continued trend is allowing those with the proper skill sets (or knowledge of what to Google) to be at the forefront of helping their companies automate the various workflows that were manual before. This recent trend is only possible thanks to the various APIs vendors provide as well as multiple open source projects created to accelerate the usage of the official APIs. Using the concepts found in DevOps, as well as sticking to the accepted practices of CI/CD ideas such as software defined datacenters/networking/storage are no longer just a thought or a jumbled mess to take care of but a real automated solution which can be managed by fewer people more consistently and at a more rapid pace.
So have you thought about this? Have you thought about how/why you do the work you do? What is your ultimate goal that you want to get to (eventually) on how your work is done?