Do you want to be a DevOps engineer
DevOps is not a particular role. It’s a set of practices and a way of working for software teams.
But everyone is using the term DevOps Engineer to identify a person who is building DevOps practices inside an organization and operating the tools to support those practices.
The terms Platform Engineer and Site Reliability Engineer are also being used in a similar context with certain variations in the job scope.
These jobs are currently in high demand and will continue to be so in the foreseeable future as the use of software is on the rise.
A DevOps Engineer’s skillset
If you are aiming to become a DevOps engineer you must build your skills in two dimensions; people skills and technical skills.
People skills
Empathy and communication are the two most important people skills for a DevOps engineer.
A good DevOps engineer is a problem solver for the developers. You cannot effectively solve a problem without understanding it from the other person’s perspective. This is where empathy matters.
Some people are naturally empathetic. But for most of us, empathy is a skill that we must develop through practice.
Technical skills
To stay on top as a DevOps engineer get yourself prepared to learn and unlearn technical stuff in a continuous cycle.
A DevOps engineer has to use numerous tools. CICD tools, IaC tools, workflow automation tools, scripting, databases, cloud services, backup management, networking, APM, tracing, and the list goes on. Do not expect things to stay stable for long periods. Brace yourself to be on a learning curve always.
You cannot be a good DevOps engineer by mastering each and every tool. You must have the competence to decide the right tool for the right job. The competency of selecting the right tool builds upon a solid understanding of the fundamentals of software architecture.
Context switching is a part of a DevOps engineer’s job. You’ll get multiple interrupts during the day. Be prepared to write IaC in the morning and troubleshoot the CICD pipeline in the afternoon.
Asynchronous communication is the lifestyle in software teams. Most software teams are geographically distributed. Communication happens via written mediums. So most of your communication will be in writing.
How to build the DevOps engineer’s skillset
Practicing is the key to building skills.
To practice people skills as a DevOps engineer try to continuously interact with people - the developers and the rest of the persons in software teams. If you are working in IT you’ll already be interacting with these people at your job. If not, meetups and online forums are two effective ways to meet people.
To practice technical skills all you need is a laptop and willingness to sit and work. Start from where you are now and build your skills incrementally.
You don’t need to know coding to be a DevOps engineer. But if you do not know how to code, learning to code and taking on some coding projects is an effective method to learn the concepts of software architecture which forms the foundation of DevOps skills.
Master the DevOps tools by practicing in test labs. You can create test labs on your laptop, on a server if you have access to one, or public cloud if you can afford it.
Most DevOps engineers come from sysadmin or Dev backgrounds. Their full-time job allows them to practice these skills and transform their career into DevOps.
But if you are in a non-IT job, you may not get a chance to practice these skills daily. There are several ways to tackle this challenge. But a surefire way is to learn coding and get yourself employed as a developer first. Once you are a full-time developer, you can build the rest of the skills and eventually switch to DevOps. This method works even if you are still in school.
Watching videos or reading books and blogs cannot make you a DevOps engineer. You must get down to the keyboard and practice… and practice… and practice.
Practicing is the only way to build skills.
What to expect at work
DevOps engineers are responsible for keeping the software lifecycle running.
How the software lifecycle is kept running highly depends on the organization and its work culture, number of developers, customer base, type of product, etc. Each organization operates there software lifecycle with different tools. And each organization is at a different DevOps maturity level. As a DevOps engineer be prepared to adapt to the situation.
Learning new technologies and new tools is an integral part of a DevOps engineer’s life. You need to do a lot of self-learning and hands-on learning to stay relevant and competent. Do not be surprised if what you learned yesterday becomes invalid today.
cloudqubes has a collection of tutorials for you to build your DevOps skills.