Basic programming and scripting skills are essential in the world of DevOps and software-defined systems.
If the word developer dredges up images of the nerdy guys from the HBO comedy “Silicon Valley,” hopped up on caffeine and hammering away on a keyboard late at night, you’re probably watching too many movies. Programming, maybe once the exclusive realm of developers, has grown and expanded well beyond those early confines. With the explosion of DevOps, almost every professional in the field of IT is either already a developer or needs to add to his or her skill set right away.
At the risk of oversimplification, DevOps means bringing together developers and IT professionals with the goal of automating the build and delivery of IT systems. From the operations side of this equation, DevOps means engaging more closely with developers and using the tools and techniques that they bring to the table. Because so much of IT has turned to virtualization or “software-defined” systems, it makes sense that we need to write software to perform those definitions. Software defined is really another way to say “programmed,” and the gains in productivity by doing things this way mean that it is quickly taking over the industry.
I can recall the early days of my IT experience when building a system meant buying hardware, mounting it in a rack, installing an OS from a disk, and configuring it by hand. Today, I would simply provision a new virtual server from my provider, likely a public cloud provider, and use configuration automation tools such as Chef or Puppet to configure that server appropriately. This is where development enters the picture.
Configuration automation, as mentioned above, has been one of the most important technologies the IT field has ever seen. By writing scripts that define the configuration of our systems instead of manually clicking through user interfaces and installation wizards, we are able to run unit tests against our configuration choices, version the changes we make, apply source control to those changes, and even deploy them systematically for A/B testing or roll-back in the event of a problem.
Those processes come straight from the world of development. These are the tools and techniques that programmers have used for decades, and it’s all but expected that IT professionals today understand how to perform those tasks as well. We must be able to write a script if we’re going to be relevant and marketable.
The world of systems admins isn't the only one affected, however. Like system configuration, software-defined networking relies on scripting and programming techniques, but for the goal of building a dynamic and scalable network. Virtualization allows our deployments to scale dynamically and in a variety of ways to meet changing demands; we need an equally flexible network environment to balance traffic and handle communication between our systems. Even persistent storage has come under the software-defined influence such that policy-driven storage provisioning means we need to codify the rules under which we expand our storage capacity instead of plugging in a new hard drive.
The universe of IT is quickly shifting to a place where development drives much of what we can accomplish. As data centers grow and consolidate, the marketplace for traditional IT professionals is giving way to a new field of DevOps professionals who can build and deploy dynamic implementations to those large data centers. Ensuring you have the development skills in your skill set means you’ll be well positioned to take advantage of this new dynamic.
Ben Finkel has worked in software development for 18 years within a variety of industries, including banking/finance, insurance, and healthcare. He is a Google Certified Trainer, and has been a trainer with CBT Nuggets since 2014.