The Case For Making The Transition From Sysadmin To DevOps Engineer
The Case For Making The Transition From Sysadmin To DevOps Engineer
The year is 2019, and DevOps is the hot topic. The day of the system administrator
(sysadmin) has gone the way of mainframes if you will—but really, has it? The landscape
has shifted as it so often does in technology. There is now this thing called DevOps, which
can’t exist without Ops.
I considered myself on the Ops side of the aisle prior to the evolution of DevOps as we know
today. As a system administrator or engineer, it feels like you are stuck in a time warp, with
a small tinge of fear because what you knew and must learn varies greatly, and is now much
more time-sensitive than you might have anticipated.
Why is this situation a problem? Well, it is not so much a problem as it is a bit of a barrier, at
first. Web-scale products are built on Linux and other open source software, and the market
for skilled professionals to maintain them is drying up. The demand has surpassed the
1/5
available pool of talent. As a system administrator, you can no longer continue to operate at
your current skill level. You need automation skills to manage large server/node
environments, as well as to understand how everything works so you know what’s going
wrong, and when and how to heal said environments.
The path you must follow to get to DevOps is paved with many twists and turns as you learn
the new technologies and tools needed to support the ever-changing environments the new
DevOps way. So what is it like, or how can one transition from the system administrator
mentality and world to the way of DevOps? Not surprisingly, this process begins with your
thinking. It is not easy to change the way you have been doing things the last 10 or 20 years,
but it’s mandatory.
To start, embrace the idea that DevOps is not a position, but a set of practices. These
practices lead to cohesion, breaking down silos, mitigating mistakes and bugs, more
frequent and timely software life cycles, better communication between Dev and Ops, and
constant testing and retesting for not only the code but the whole continuous integration
and delivery (CI/CD) process.
Along with changing your mindset comes acquiring the necessary skills in order to sustain
and support your infrastructure, and ensure its reliability and availability to continuously
integrate and deliver applications, services, and software.
One area that you, as an Ops person, may be lacking is programming or coding skills. The
way that sysadmins script as part of automating server patching, managing user accounts
and files, and troubleshooting and documenting problems, is considered somewhat
antiquated. Though scripting is still used on a smaller scale today, DevOps is about large-
scale implementation, testing, building, and deploying.
When you address automation, you have to address your probable weaknesses, which can
be intimidating with the evolution of DevOps and infrastructure automation requiring that
you be programmatic when you are not a developer.
What’s the solution? You have to learn at least one programming language—such as Python
—in order to stay relevant and competitive. It can be hard as an Ops professional, though,
to shake the feeling that programming is for developers, and while you don’t have to
acquire expert programming knowledge, it’s advantageous to know how to script, whether it
be in Python, Bash, or even Powershell.
Learning some programming so you aren’t in the weeds when working with the developers
on the DevOps team, or with a client as a consultant, will demand your time and attention.
Whether it’s 30 minutes or an hour a day, learning this skill has to become a priority.
2/5
While there are common tasks among sysadmins and DevOps, there are some vital
differences. Some have argued that a sysadmin is more focused on configuring, maintaining,
and keeping servers computer systems up and that while a DevOps-principled engineer can
do everything a sysadmin does, a sysadmin cannot do everything a DevOps-principled
engineer does.
I have to mention this because it would do DevOps and system administration a disservice
not to point this out: System administration, in its traditional sense, involves possessing a
certain set of skills and a focus on differing infrastructures. Not a one glove fits all
proposition, but there are many common functional tasks carried out by sysadmins.
Some of the traditional sysadmin tasks include being a handyman or woman of sorts, with
no specialization. You might be the only sysadmin in your organization, so you are a Jack or
Jill of all trades. You do everything from maintaining the printers and copy machines to
performing network-related tasks like configuring and managing routers and switches, as
well as setting firewall policies and rules.
You are also responsible for upgrading hardware, checking and analyzing logs, security
auditing, patching servers, troubleshooting, performing root cause analysis, and automating
—usually through PowerShell scripting, Python, or Bash scripting. One example of scripting
is with user and group account management. Creating users and setting permissions can be
a tedious task since users come and go almost every day. Scripting means freeing up more
time for larger scale infrastructure projects like switch and server refreshes, and other
revenue-generating projects, though IT is often perceived to be a cost center.
The goal of a sysadmin is not to waste time, and to save money any and every way possible.
There are also sysadmins that work as part of a larger team with, say, Linux admins,
Windows admins, database admins, storage admins, and so on. You might be on a
traditional follow-the-sun schedule, or maybe a traditional 9 to 5 schedule, or maybe you
work in a 24-hour datacenter.
3/5
Sysadmins have had to evolve their state of mind over the years and think more
strategically, considering the business in unison with their day-to-day responsibilities. The
teams and departments they work with are challenged by lack of resources while trying to
constantly stay aligned with the day-to-day business parameters.
Sysadmins have the ability to transition to a DevOps team, as long as they are willing to
learn current and emerging technologies, and are open to innovative ideas and solutions.
These sysadmins don’t have to be full-blown programmers if they come from a traditional
operations background, but learning a programming language like Ruby, Python, or Go will
help to galvanize their place on the DevOps team. While sysadmins have traditionally been
more alone in their day-to-day work and often thought of as loners, this is the complete
opposite experience needed for an agile team applying DevOps principles.
The topic of automation has become more and more important. Both sysadmins and
DevOps are interested in scaling quickly, reducing errors, and finding and resolving existing
errors fast. So automation is a similarity among these two fields. Sysadmins are responsible
for cloud services like AWS, Azure, and Google Cloud Platform. They have to understand
CI/CD pipelines and how to carry them out by using Jenkins, for instance.
Also, sysadmins need to use configuration and orchestration tools like Ansible, which is
used to deploy ten or twenty servers in parallel. The premise is Infrastructure as Code.
Everything is software, and software is everything. Essentially, some rethinking is necessary
if the sysadmin of the future is to remain relevant. SysAdmins come from the Ops side and
have to be able to effectively work with developers and vice versa. Two heads are definitely
better than one.
4/5
One last important piece of the puzzle is Git. Git has not traditionally been a part of
a sysadmin's day-to-day responsibilities. This version control management system is used
heavily by software engineering teams, DevOps, development teams, agile teams, and
more. If you are working within the software lifecycle development process, you will work
with it.
Git is vast. You might never learn every Git command, but you will come to understand that
this tool is the nucleus of collaboration, communication, and software production. Having a
fundamental knowledge of Git will be important if you are on a DevOps team.
If you are a sysadmin, you will need to level up your Git knowledge, understand the
psychology of version control, and learn those common commands like git status, git
commit -m, git add, git pull, git push, git rebase, git branch, git diff, and beyond. There
are plenty of online training courses and books on the subject so that you can go from a
novice to a pro with some dedicated focus. There are also Git cheat sheets out there as well
so you don’t have to remember every command, but the more you use Git the better for
you.
Conclusion
Ultimately, it's up to you whether you want to remain a sysadmin or transition to DevOps.
As you can see, there's a learning curve, but there's no time like the present to get started.
Pick a programming language to learn, and while you're learning it, take advantage of the
chance to learn Git, a CI/CD tool like Jenkins, and a Configuration and IT Automation tool like
Ansible. Whatever you decide, make sure to always be learning and labbing.
5/5