For the layperson, computer programming may be an unfathomable world of algorithms populated by incomprehensible terms and rules. While our iPhones, smart homes, video games, and apps may have taught us the basics of how to use these tools, the idea of actually programming them to answer questions or navigate to the nearest restaurant (all in a smooth British accent) are completely out of our league. That’s cool, though, because we all know some Sheldon Cooper (a la Big Bang Theory) type that can probably fix the WiFi when it goes down.
Ironically, there is one specialization within software engineering that even some developers can’t define. DevOps is an anomaly within software engineering because the definition of the practice varies widely between organizations. Yet, today the majority of businesses with IT teams use some form of DevOps engineering to bridge the gap between development and operations.
Here’s our best answer to the question, “What the heck is DevOps?”
Many organizations struggle with internal silos that stymie the productivity of the whole organization. In both large and small companies, there is at least occasional tension between sales teams and marketing, because sales can blame marketing for not producing the right collateral to help close deals. There are also inter-departmental squabbles between siloed departments. Like personal relationships, getting all of the separate pieces of the corporate engine to mesh is complicated and sometimes downright messy.
In IT, there is tension between hardware operations and software developers when deployments of new digital products don’t roll on time or on budget or if there is an interoperability issue between business tools. In these instances, development and operations can point fingers at each other with a dialogue that goes something like, “It’s not my machines—it’s your code!” And vice versa.
It is precisely this divide that led to the creation of development operations, or DevOps for short.
The practice of DevOps launched about a decade ago, and by 2017, DevOps adoption had increased to 78% in the small to mid-sized business (SMB) market, while enterprise organizations used DevOps engineers 84% of the time.
In the search to define DevOps, we found a few definitions of the term. For example, DevOps.com says:
It’s reasonable to describe DevOps as a journey, or perhaps an aspiration, rather than [a] defined destination. DevOps, like lean manufacturing, seeks continuous improvement, seeking higher output, greater efficiencies and even continuous deployment.
Amazon Web Services (AWS) says:
DevOps is the combination of cultural philosophies, practices, and tools that increases an organization’s ability to deliver applications and services at high velocity: evolving and improving products at a faster pace than organizations using traditional software development and infrastructure management processes. This speed enables organizations to better serve their customers and compete more effectively in the market.
No matter the definition, the goal of DevOps is to smooth out digital application development and operations to a precise and seamless, transparent and fully integrated set of practices under IT. DevOps Engineers improve the collaboration between backend IT functions and software developers.
Of course, DevOps is almost always tasked with making everything faster. That’s the whole point of computers, right? In the IT world, when any organization can achieve continuous integration between hardware and software, automate testing processes, and speed up coding deployments, that’s money in the corporate bank.
But what does all this mean in real-world terms?
Technology can facilitate business advantage or crumble an infrastructure. When buggy software messes up business processes, customers are lost, brand image tarnished, and market share destroyed. We’ve all experienced websites that don’t work properly. If customers have a bad experience, how likely are they to return?
Say, for example, that your organization has an e-commerce website. If the software engineers behind the platform send out an update that crashes when your customer tries to place an order, could that harm your business? You bet—and probably faster than you can say, “Cart abandon.”
The same thing can happen if you use an inventory plug-and-play software application from a vendor or your own custom-made application. The goal of the DevOps engineer is to reduce downtime by ensuring an error-free product deployment, no matter the type of product.
AWS lists some of the big business benefits that DevOps can bring to these scenarios:
Today’s business models are woven irrevocably into the software they use. Companies interact with their customers via these software applications on every digital device. Internally, these same companies use other types of software to improve internal efficiencies in terms of how they communicate, produce goods, or provide services. None of this works as well without the DevOps professional striving for process improvements in our interactions with these digital tools.
That makes DevOps a kind of quiet superhero behind the scenes in most companies today. For the aspiring DevOps Engineer, what kind of skills do you need to get the job done?
To get to the bottom of what makes a good DevOps pro, we interviewed Andy H. (DevOps superhero name: AndyFosho), who works for a software engineering firm in the Midwest.
Artisan Talent: Why is the definition of DevOps so hard to pin down?
AndyFosho: It’s because it’s the ultimate chameleon role. No one organization’s need for DevOps is the same. The tools you work with are always different. The responsibilities and where you start vary from job to job. DevOps is basically a change management role within IT. The goal is to remove the silos between development and operations, but how you do that and what tools you use depend on a lot of variables that you can’t predict and the technology is evolving so fast now that you have to just roll with it.
What tasks do you take on every day?
That’s what’s so cool about it—the tasks vary. The goal is to make everything run more smoothly so that customer value happens faster. You may work on value stream mapping on a whiteboard to determine why a technology process is taking so long. You could work on automating software testing or a code deployment or maybe integrating new infrastructure. These tasks could take 30 seconds, two hours, or two days; it just depends on the complexities of the internal systems you’re dealing with. For the average software developer or IT engineer, you spend a lot of time in the weeds. But then DevOps comes in and looks at the big picture, creating, investing in, and deploying tools that make things faster. So, what do I do every day? The answer is: It depends on what’s on fire.
What skills do you need to be in DevOps?
I’m not aware of any DevOps degree. A lot of the job is troubleshooting, which is really one of the best skills you can bring to the table.
Writing clean code is important. You should have some programming languages under your belt, like Python, JavaScript, or Ruby. That’s why DevOps Engineers are also called DevOps Developers.
You also have to know something about scripting using Windows PowerShell or Bash. Understanding data and database response times, as well as on-premises or cloud infrastructures, is important. You also have to be comfortable moving from integration [to] testing, new releases, or deployment.
Knowing a little bit about all parts of the software lifecycle helps, along with soft skills like the ability to work collaboratively with teams. But troubleshooting and being able to figure things out in the face of almost constant change is really what makes a good DevOps Engineer.
What happens to a career that is more IT troubleshooting than defined job description? DevOps.com says, “We are still at the beginning of the DevOps story, with many exciting chapters still to be written.”
There are a number of trends predicted over the next few years that will shape the role of the DevOps Engineer, including:
The DevOps role is evolving as quickly as the digital technologies we use. That’s why the definition of these positions varies so widely between companies and job descriptions. One thing that will stay the same is the need for operational engineers that can bridge the gap between software and hardware while deciding which infrastructure approach is the best to reach your business goals. This has led to predictions that say, “By 2020, every company will be a DevOps company.”
Having an expert that can connect all the various technologies during software development is what makes today’s DevOps Engineer so valuable—and so difficult to find. The good news is, if you’re reading this, you have a staffing firm standing by to help you build a DevOps-focused IT team. Call us to start the conversation.