This question is one of the most common among beginners who want to start practicing DevOps and build a successful career in a company that produces digital products. The amount of information about this concept on the Internet is overwhelming, and the variety of technologies and stacks look impossible to grasp within an average human life. And on top of that, new tools and concepts are being introduced often, so even for experienced DevOps engineers, it feels like a Red Queen’s race: “Now, here, you see, it takes all the running you can do, to keep in the same place. If you want to get somewhere else, you must run at least twice as fast as that!”.
To stay actual on the market, you must constantly learn new things and master your existing skills. In such a competitive and dynamic environment, it is scary to start, and many beginners have fair concerns about where to begin to make their DevOps journey as efficient as possible. Today we want to cover a few topics and advise you on this matter.
Let’s dive into it!
The first piece of advice for beginners – begin!
Now, you have decided that you want to devote your professional life to DevOps. We are not going to cover motivation and how to keep it at a high level long enough to succeed; a lot of literature can help you with that. But as in any other profession, you will have to spend a significant amount of time to reach a certain level of expertise. There is a well-known rule of 10,000 hours you must pay to master in some area; it is not something accurate, and it varies for different people and domains. Still, roughly it gives you a feeling of the magnitude of effort required. Four hours every day will end up with almost seven years; a full-time 40-hours weeks job will consume 10K hours in five years. Refrain from stressing much about the numbers, it is a continuous learning process, a journey, not a fixed-time trip.
So, we assume that you are determined enough to put in significant effort and invest your time to become a professional. It would be best if you had some initial guidelines on how to do it the most effectively.
Begin with reading and understanding the basic concepts of DevOps, even Wikipedia will work fine to get yourself familiar with basic definitions. A high-level understanding of the DevOps philosophy and the business problems it solves will help you realize what type of technologies to use at which stage of the software development and delivery process. Make sure you have a clear picture on these stages, what happens during each of them and why it has to be looped into a continuously improved cycle: Plan -> Code -> Build -> Test -> Release -> Deploy -> Operate -> Monitor and closing the loop going back to another iteration starting from planning a new release.
Follow the roadmap!
You are not alone in this journey, and you are not the first person who wants a somehow structured pathway to follow. Once you understand the concepts, you can start mapping them to the technologies you want to learn. To ensure that you build up your knowledge from a solid foundation, you can follow a roadmap like this https://roadmap.sh/devops.
For each category of DevOps toolset, choose one main option and one alternative based on your preference and understanding of usefulness & applicability. For example, for scripting, you can select Python as the primary language and learn the basics of Javascript to understand how it works in web development. Try to dive into each area sparingly, but make sure you solve some practical and meaningful tasks using these technologies; theory without practice will be just effaced from your memory very fast.
Practice is the key!
You can read hundreds of books on hammering a nail, but if you do not try it – you will never master it. Whenever you learn some new concept – find a way to apply it. Even if your current work does not require such skills, create something based on your interests or a hobby – build your website, deploy it to a virtual machine, set up a web server, and configure monitoring and logs collection. Start with a simple static web page and then add interactivity to it, write and build your code with Git & CICD tools, automate updates, learn how to work with DNS, Load Balancing, try to make it highly available, and test failure scenarios. Make the complexity grow organically. You will face errors and misconfigurations, which is also an essential part of the learning process. Debugging, troubleshooting and effective “googling” is a skill in itself. You will have to read through tons of documentation, but solving such challenges will improve your understanding of the concepts and cement it in your memory.
Everything as code
Get used to writing code daily, read others’ code, and learn and adhere to best practices for clean code. Remember, the code is written once and read many times. Tomorrow you will appreciate it if your code is comprehensive and concise. Even if you work alone, set up Git, GitHub or GitLab (even self-hosted Git), and work with your code there so you will be prepared for team work later, design templates and modules to reuse them in the future. This also may help you to showcase your skills to a potential employer.
You do not have to be a software engineer or application developer to write code, but you will have to do it as a DevOps professional. Almost everything can be stored and tracked in Git as code – Infrastructure as Code (e.g. Terraform, CloudFormation, Azure Bicep, etc.), Configuration as Code (Ansible, Puppet, Chef, etc.), Pipelines as Code (Jenkins, Gitlab CI, HitHub Actions), Deployments as Code (Kubernetes + Helm) Documentation as Code (e.g. markdown & Readthedocs, GitHub pages, etc.), let alone automation scripts, unit tests and much more.
Make your GitHub your homepage, and make sure to work with code regularly.
Community
Join DevOps groups and events (both offline and online), ask questions & help others, contribute to the DevOps community and Open Source software even with small documentation tasks, style edits, answering Stackoverflow questions that you know the answer to. Team up with others who just started their DevOps journey, help each other, share knowledge and materials, and review each others’ code. This will help you to work in a team and potentially can grow into a long professional relationship and a real friendship.
And of course, last but not least – have fun and enjoy the journey. This is the essential ingredient of success – if you do not enjoy the process and constantly force yourself, the chances that you will drop off are pretty high. Prepare to have highs and lows, get rest when needed and remember – this is not a sprint, not even a marathon; this is a hike with slow but steady growth as a DevOps professional to the higher and higher pinnacles of your career.
The sky is the limit!
If you want to know more about Cloud and DevOps practices, learn how to apply them in real-life scenarios, build IT solutions and deploy them into Clouds – join our Project Based Learning courses and stay tuned for new posts in our blog!
Top comments (0)