top of page
  • Writer's pictureNana Janashia

How I Learn New Technologies As A DevOps Engineer (Without Being Overwhelmed ๐Ÿ‘)


My tips of learning new tools
My tips for learning new DevOps tools

In this blog article, I talk about the challenge of learning multiple technologies and staying up to date with new ones in the DevOps field and how I personally manage not to be overwhelmed by it and make the learning process much easier. ๐Ÿ’ฏ


I hope sharing my experience and tips on this topic will be useful for some of you ๐Ÿ˜Š


This is the written version of my new youtube video โœ๏ธ ๐Ÿ™‚


Why it's overwhelming ๐Ÿ™‰

As a DevOps engineer, you need to learn so many tools to even start your job as a Junior DevOps engineer. So the minimum entry requirement is already super high. This is logical because DevOps is about creating end-to-end processes for complete software development and deployment, and there are many tools involved in creating these processes.


๐Ÿ‘‰๐Ÿผ More on that here


But in addition to having to learn 5 to 10 technologies right at the beginning, which is you can't just learn them in isolation, but you have to know how to combine them as well as how to integrate them together to build those processes.


But it doesn't stop there. To add to this challenge, the DevOps space is developing really fast, and we see new technologies and new concepts emerging all the time, so many engineers feel pressure to learn new tools to use in their projects. ๐Ÿคฏ


So how can you keep an overview and not get too overwhelmed by all this but at the same time still stay up to date and know when a new tool comes up that can actually make your work easier and more efficient or help you and your team in your software development and deployment process. ๐Ÿค”


Separate Concepts and Tools

First of all, when we're talking about developments in the DevOps space, there are two main categories:

  1. the concepts ๐Ÿ’ก and

  2. the tools ๐Ÿ› 

And it's important to separate them. Concepts are the foundational basis of DevOps processes; they are guidelines for how things should be done. Therefore understanding the concepts before learning the tools is super important.


Tools are just a means to an end.


It's also important to understand that tools are just a means to an end. Every tool is there to solve a problem or to serve some purpose. Understanding the concepts helps you know what processes you have and what problems and challenges are in those processes. And when you have that as a basis, then you can start learning the tools that can actually solve those challenges or implement those concepts.


CI/CD Example: To give you some examples, before learning any DevOps tool, you should actually learn the CI/CD concept first: ๐Ÿ‘‰ What does a CI/CD process look like? ๐Ÿ‘‰ What challenges does it have? ๐Ÿ‘‰ What is its purpose? which is to release application improvements fast and in an automated way to the end users ๐Ÿ‘‰ What does it include? What steps does it have? Like building the application, testing, deploying to development, staging, and so on:


What does a CI/CD process look like?
What does a CI/CD process look like?

And then, you learn the tools that implement this concept and help you achieve its goals.

So if you're just getting started in the DevOps field, this will be the first step or the first concept to learn. ๐Ÿ‘‰๐ŸผHere a video exactly on the topic that you can check out


Infrastructure as Code Example: Another example would be, before learning any Infrastructure as a Code tool, you should learn the Infrastructure as a Code concept first. Again ask yourself:

  • Why is it needed?

  • What is its purpose? Like doing manual work versus automated code for infrastructure provisioning because manual work is more effort. It has more mistakes; it is less transparent, and so on.

And also understand what are the challenges of the Infrastructure as a Code concept, and then again, you learn the tools that implement these concepts. You also understand how these different tools address those challenges.


So now, when you're learning DevOps tools, or you know a bunch of them already, and the new tool comes up, your first question to challenge that technology is to understand what problem it actually solves and if that problem is relevant for you. So you have a big picture of the concepts and the DevOps processes because you learned the concepts first, so now you can easily fit each tool into that big picture by just understanding the main purpose of the tool on a high level. ๐Ÿ™Œ



The Infrastructure as Code concept and tools
The concept and tools of DevOps

Use Cases - What problems does it solve? ๐Ÿค”

So when I start learning a new tool, the first thing I want to find out is not the cool features that it has or the cool UI that it provides or that it can integrate with 100 other technologies in the ecosystem, or that it's super cloud-native, Kubernetes native with automated workflow or other fancy stuff ๐Ÿ™„. Still, instead, my first question is what problem or problems does it solve, and where does it fit on the big picture of DevOps? ๐Ÿ’ฏ The simpler the answer, the better.


And there are tools that solve one main problem, but there are also tools that solve multiple problems. In this case, I want to find out which one of those problems is the most important, the main one, because a tool is usually good at 1 or 2 things, and the rest of the use cases are additional bonus features. So in this step, I investigate the use cases of the tool.


Once the problem is clear, then you can evaluate and measure how important or relevant that problem is to decide whether you want to dig into that tool deeper and basically learn more about it.


Also, for established tools

And for already established tools, like Kubernetes, Docker, Terraform, and so on, which you anyways have to learn, it's still the first step. Because you may know that everyone is using Kubernetes and Docker, but you may not know why ๐Ÿคท๐Ÿปโ€โ™‚๏ธ and that's the first thing you should understand and find out when approaching any new technology.


How does the tool work? ๐Ÿง

After that, you can dive into 'how the tool solves that problem.' There are many tools that address the same issue but in different ways.


So if you are learning an Infrastructure as Code tool like Terraform, you should find out how it does its job, like: Terraform uses state management

  • It has modules and providers.

  • It uses a declarative approach.

  • It has a command line interface with its own commands

  • How it connects to the cloud platforms that you want to provision infrastructure on

  • And also, how does it compare to alternative tools that you may already know about

So you learn about the core concept of the tool itself on a high-level overview.


Hands-On Practice with realistic use cases ๐Ÿ‘ฉโ€๐Ÿ’ป

Once โœ… I understand the problem and the use cases of the tool, โœ… now I know why I'm even learning it, โœ… I also understand how it works theoretically โœ… so I know more or less how I could integrate it into my existing workflow processes.


Now it's time to get started and actually use the tool because confidence comes from practice.


Learning with real use cases ๐Ÿš€

And here is a super important thing to understand about practicing a tool hands-on. You should always practice with an actual example use case, something you can actually apply in real-life projects.


So the way I do it is I first define the actual simple, but realistic use case with the tool because starting with hands-on practice without an example use case can be demotivating and confusing.


Let me give you some examples:


1) Docker Example ๐Ÿณ

If you want to learn how to use Docker, just take a simple application and dockerize it with Dockerfile to learn how this process works. Then think about how you can build and run this dockerized application. By implementing these simple steps, you will actually learn much more than just randomly learning some concepts about the tool through official documentation or blog articles.


So you create a use case like, I have a basic Node.js application: ๐Ÿ‘‰ I dockerize it ๐Ÿ‘‰ I build an image ๐Ÿ‘‰ Push it to the repository ๐Ÿ‘‰ Then I run it and test that the application is accessible



 How to use Docker?
How to use Docker?

And for each step, you can learn how to do it and what are the Docker concepts related to implementing those steps ๐Ÿš€


Later you can expand that use case. If you want to add a database connection to your dockerized Node.js application and you want to run multiple Docker containers. So you learn about Docker Compose and how to use it ๐Ÿ‘


2) Kubernetes Example

Another example would be if you're learning Kubernetes. Again think of a simple use case, like you already have a dockerized application with 2 other services. So you want to deploy all of them in Kubernetes with multiple replicas.


By doing just that one simple use case, you will already learn so much about how Kubernetes works and how to deploy applications in it, and again you can expand on that use case and add more steps. ๐Ÿ™Œ


Resources to learn from ๐Ÿ“š

Now, of course, you need some resources to be able to learn how to do this, right? I personally go to the official documentation or blog articles and video tutorials to learn how to do each step individually. So specifically on that topic, because it's much easier to find out resources on specific individual steps than just learning about the whole setup.


And while I'm implementing that individual step, I also learn all the concepts related to that on the way or find tutorials and online courses, like ours, where the instructor guides you exactly through this kind of simple but realistic use case that you can follow along: ๐Ÿ’™ FREE Docker course ๐Ÿ’™ FREE Kubernetes course


And again, you can expand on that by finding more advanced use cases at your work or just by yourself and trying to implement those as well.


Patience while learning ๐Ÿ˜Œ

Now there is another super important thing I want to point out when learning the basics of a tool. Especially if it's a tool like Kubernetes or Docker that you know you will definitely need long-term in your DevOps career, and it is to: have patience while learning. So take your time โฐ when learning the foundational concepts of the tool in order to avoid leaving any knowledge gaps, and trust me, it always pays off in the end because building on good foundational knowledge is way easier because you always have reference knowledge for new stuff. The more you learn, the more things make sense; the things just click more, and learning new stuff becomes easier and easier.


In comparison, if you rush into things ๐Ÿƒ๐Ÿพ because you don't have the patience or you don't have time without really understanding the main concepts and learning things kind of chaotically with lots of knowledge gaps, you may actually get more and more confused if you just add stuff to it. So learning new things may actually become more challenging. ๐Ÿคฏ


Embrace lifelong learning ๐Ÿ˜Ž

As an IT professional, learning never stops because the tech world is rapidly changing:

  • new versions of the existing tools are being released

  • as well as new tools being developed all the time

So with the above techniques that I mentioned, you will have a good foundation for quickly evaluating new tools, whether they are relevant for you and worth learning. also, if you have a good understanding of a specific tool, you can easily learn the new features of that tool as well.


So it's also a mindset of lifelong continuous learning. โ™พ


How to stay up to date? ๐ŸŽฏ

Finally, you, of course, need to be aware of when a new version of a popular tool gets released or a new technology is becoming more mainstream and popular, so you have to adopt that.


For that, you also have many ways to stay up to date with industry developments, like:

  • ๐ŸŒ you can follow some industry peers on social media accounts or blog platforms that basically post about these kinds of new developments

  • ๐Ÿ‘ฅ you can join DevOps communities, either online or offline communities, where people exchange this kind of information

  • ๐ŸŽฌ or you can also subscribe to Youtube channels like ours, but also many other channels that make really great videos on DevOps trends as well

  • and much more ways, like podcasts ๐ŸŽค, newsletters ๐Ÿ“ฉ and so on.

If you're interested, you will find a way to stay up-to-date that suits you.


How are you tackling this challenge? ๐Ÿ™‹๐Ÿฝโ€โ™‚๏ธ

Now I hope sharing my experience and tips on this topic was useful to you. ๐Ÿ˜Š Please share below how you are tackling this challenge and generally share your experiences. How do you keep up with technology developments, and what are some of your tips on that? ๐Ÿค”


ย 

Like, share and follow me ๐Ÿ˜ for more content:

62 views0 comments
bottom of page