HACKER Q&A
📣 mraza007

What skills do you need to pursue DevOps in 2021


What skills do you need to pursue DevOps in 2021


  👤 giantg2 Accepted Answer ✓
Apparently more skills than I have

👤 100011_100001
I am a Lead Developer in DevOps/SRE land. I train both developers on how CI/CD works in the company I work at and Jr DevOps that will end up working with me. This is by no means a perfect list *and* it mostly ignores FAANG, since they have a lot of their own tools for build. Also AWS reliance is a thing, a lot of the tools have AWS equivalents. If a company is using them or not it's semi-arbitrary.

On top of that you have to understand what one company swears by might not be used at all by another company, however if you understand the main concept you can at least parse what is being asked of you. Let's call this rule #1, what is important to one group might totally not be used by another group.

Rule #2 is if a company is using AWS heavily they might or might not use AWS tools. Amazon has its own native tools, but knowing the general ones might give you a better all around knowledge.

Learn how to code. It's a lot easier to teach a Dev the Ops side than it is to teach an Ops person how to write code. What languages to learn is specific to the team and in a way the tools you might be using.

Good languages to learn

    Python
    Java (and Groovy if you are doing Jenkins or CloudBees CI)
    Go
    Javascript (if you are going to be working with an app/webpage kind of company...in general knowing the main language the company is using is good, see rule #1)
Learn Bash and VIM. You will use this a lot when doing Ops stuff or when trying to figure out what's going wrong. RegEx is nice, but honestly I am weak in RegEx, I have to always figure things out.

Have a really strong understanding of version control. Why it's important. Different ways people use version control to keep track of multiple versions of the same code. Git is kind of the defacto version control at this point. So learn Git.

Learn about databases. Learn at least one database tool semi well. As in be able to query things, understand how it works. I hesitate to make suggestions here because one company might only use Oracle, another MongoDB and a third PostgreSQL. (see rule #1)

Learn about some kind of infrastructure automation. Puppet, Ansible are the main contenders here.

Learn about build tools. Maven and Gradle are the main ones. Then there is NPM on the app/webpage side.

Learn about deployment platforms, and here is the main meat and potatoes of DevOps. Kubernetes is huge, so learn that, but there are layers above it. A lot of deployment platforms base things on Kubernetes, but it's not true for everyone (rule #1). However I feel that if you learn Kubernetes and EKS, which is the Amazon version of Kubernetes you can at least understand most ideas, as in how cluster, nodes, networking, security works.

Learn about containerization, as in really understand it. Why is it important? Benefits? Drawbacks? Scalability. Immutability. Most popular tool is Docker, but it's quickly losing steam. It's a good start regardless.

Learn about microservice architecture and how APIs work.

Most importantly, learn how to communicate effectively. Don't use me as an example of that. However being able to explain complex CI/CD workflows to management and regular developers is a mighty skill. A lot of times the DevOps groups do a good job and communicate poorly.

Things that matter but don't at the same time:

* IDE, yeah you might have a favorite but if the company you work for doesn't use it all your IDE knowledge is wasted. Familiarize yourself, to list a few IntelliJ, Eclipse, Atom, Visual Studio and VIM (yes, it's not an IDE, but it kind of is).

* That one super cool tool that automates that one thing really well. This is kind of tongue a cheek but if you work in any IT based industry you will see fads come and go.

------------

This is just some quick thoughts on the subject and I probably missed some big stuff. For example I didn't really talk about security tools at all. The main problem with DevOps is that there is always something new that might be working better, faster and let's not forget be cheaper / free but it totally depends on the company you work for. If you learn all the things above, which might seem like a lot, but honestly developers need to know similar things, just not as much in depth in some cases, so even if DevOps is not for you, it will make you a better developer.