I receive a lot of questions on how to get started, which websites, courses, books, or other content to use. There are two main factors to this questions:
- What should you learn?
- How should you learn it?
How should you learn it?
Let me try to answer the second question from my perspective first. As you might have realised already, everyone prefers a different learning style. I like written content with lots of theory and then the opportunity to practice until I understand what is going on. You might prefer to learn from the video content, from someone sitting next to you & guiding you through the material. As you can tell, everyone prefers different content and there is no right answer to it.
However, one thing that I would advise you on: Try not to spend any money on the learning material.
My 100 Days Of Kubernetes Series is largely based on free online learning resources. The only time that I really used a paid resource was at the beginning when I used a book to get started with Kubernetes. I am pointing this out since there are many Bootcamps and similar that ask for a lot of money vs. what the content is actually worth. Note that a lot of content that is taught in Bootcamps is still based on the documentation of the tools you learn about. In some cases, the instructor does not have any real-world/work-on-production-experience either.
So my advice is: Always try to use free online learning resources first before paying for content — and if you do pay for content, make sure to inform yourself on the range of content that is available to you as well as reading up on the person who created the content. Ask yourself questions such as, what is their background, what level of expertise do they have, do they speak at conferences and similar since that is usually an indicator that the person is trusted within the industry.
So next, let's discuss the first question: What should you actually learn?
What should you learn?
The list provided below is some of the technologies, tools and platforms that I found useful focusing on in the beginning or that I wish I would have focused on in the beginning. Note that depending on whom you ask, you will probably receive a different list of tools and technologies that they would recommend. Additionally, the list highly depends on your type of work or the type of work that you want to move into.
You will spend a lot of time in your terminal. Learning even the basic Bash commands can help you work more effectively.
Bash either takes the input from the user or the commands from a script. This can allow you to automate tasks.
A lot of times I am held back by my understanding and use of Bash — I just don't know what commands exist, thus, I cannot use them. Independent of your profession, if you work in tech, you really cannot go wrong learning Bash. However, different to the next tools, Bash is one of those things that you really have to sit down and learn for some time to get comfortable. (At least that is my opinion.)
Independent of you being a full-time backend Engineer or you work in DevOps, if you do anything tech-related, the chances are really high that you will have to work with Git. Git is a version control tool that allows you to keep track of different versions of your files, refer to them over time, and enable cross-team collaboration.
Being comfortable with Git and knowing about the most common commands will make you more productive and likely saves you a lot of trouble over time. (Yes, I sometimes messed up my branch version and needed someone to help me fix my mess; which could have been avoided.)
In addition to Git, you want to become familiar with GitHub and start hosting your projects. This has several benefits. For one, once you start working in a team, you will be more comfortable with the tools used. Even if they use GitLab or another platform to host their repository, there is a lot of knowledge you will be able to apply across platforms. Second, hosting your projects on GitHub gives you more visibility.
Now Git is something you can easily pick up over time by consistently Googling what you are looking for. However, it does help to spend an afternoon learning about it.
VSCode or another Code Editor
I don't necessarily recommend everyone to customize whatever is possible. However, having a good editor is a must. (I mean, you could also use Vim but it will likely take you a decade to become productive with it.)
Visual Studio Code is liked across the industry and has a bunch of integrations for all kinds of platforms and programming languages. Just Google "VSCode tutorial" and get started from there.
Containerization is the new trend. It allows teams and companies to work a lot more efficient, provides consistency over time, and enables advanced deployment strategies; just to name a few benefits. Being comfortable using Docker will make you more productive in modern teams. (I hope you see the theme of this blog — how to be more productive with modern tools, maybe I make this the title instead.)
There are lots of resources to get started with Docker — none of which you have to pay for. I will publish in the next weeks my own Docker starter course, so stay tuned for that and, in the meantime, have a look at the resources that I found useful.
- The official Docker documentation: https://docs.docker.com/
- This Blog has some of the best information: https://vsupalov.com/
Pick a programming language
Don't do this, just don't. Instead, really try to focus on one language and get good at it. There are so many free online resources available. If you prefer conference talks, most conferences post the recordings on YouTube in the weeks after the conference.
Most, if not all projects will use CI/CD platforms to automate repetitive tasks. There are a bunch of different platforms that can be used, CircleCI, Codefresh, GitLab CI, Jenkins, just to name a few. However, I would suggest you get started with GitHub Actions. They feature a large, open-source marketplace with ready to use steps to automate your pipeline. Also, it is free to use as part of your GitHub account and you can find lots of tutorials online. Once you are familiar with GitHub Actions, it is easy to transfer that knowledge between different platforms since they follow common principles.
- GitHub Actions Documentation https://docs.github.com/en/actions
- Fully tutorial on GitHub Actions https://youtu.be/X3F3El_yvFg
Let us know in the comments of the YouTube video which tools you think are useful for beginners. What is an absolute MUST to know about?
If you enjoy my content, think about subscribing to my weekly-DevOps-newsletter.
Hope to see you next time, have a lovely day and thank you for reading!