Let’s Fly Inside #2: What It Means to Be a Successful DevOps Engineer With 10+ Certifications
Learn how to become a successful DevOps specialist.
Nowadays, with the rise of new standards in CI/CD, the qualification of a DevOps engineer has become highly demanded and trendy throughout the entire IT industry. But is it easy to be one? What skills should a person possess to be a good DevOps engineer?
Today Fively’s DevOps specialist Ilya Mikulski is sharing with us his story of success, numerous professional advice, and secrets of work-life balance. Let’s fly inside!
Thank you for finding the time for this interview! I know this may sound trite, but could you please describe in simple words what DevOps engineering means?
Said simply, DevOps is all about building the right architecture for a product. It also includes providing its full security, stability, maintainability, and reducing costs - all at the same time.
DevOps engineers help to simplify the programmer's work and code deployment, so they need to understand the general principles of programming and building architectures. When a programmer writes a piece of code and pushes it into the Git repository, all the rest is left for a DevOps engineer. He delivers the code to resources and makes it sustainable, operable, and maintainable, minimizing costs, and providing its proper work.
How did you find yourself in DevOps engineering? I mean, there are so many specializations in IT, but why DevOps?
I used to start as a network and virtualization engineer. Working with companies from various countries and raising my experience, I got bored at a certain peak and desired more. They say to reach the limit, yes? This was about me. At that time I heard a lot about DevOps practices, that this is becoming popular and the need for such specialists is growing. I felt like this was something where I could use my knowledge and one day I just decided that the time has come.
Our company is lucky to have a bright specialist with so many certifications: as for now, you have already 12 (CISCO, WMVARE, AWS, GCP, etc.). Was it difficult to pass them all?
The most difficult were probably only the first two, they both were given by CISCO company. The first difficulty was that the certification was something completely new to me, I didn’t know what questions and tasks to expect. The next thing was the price - 300$ for a try. At that time I didn’t even work in the IT industry: I just wanted to test my skills only for myself, so it was a significant sum to spend on a certification.
Despite all that, I didn't give up on my idea and applied for a try. And here came the final difficulty - the way these exams were held. In general, certificates from vendors are always quite difficult to pass, but back in that days, I didn’t know that. The procedure is the following: you need to go to the certification center and solve all the tasks with 2 cameras constantly monitoring what you do. Earlier you even needed to write some programming code for such certifications, but now they changed the rules.
That’s how I passed my first certifications, so yes, it was rather difficult. But afterward, everything was simple: I already knew what to expect, plus I discovered that there are always guides at vendors' resources, which help to prepare for the coming exam. Experience is everything here, so don’t be afraid of passing certifications: it’s difficult to do only for the first time, and later it’s not a big deal.
What do you feel as a professional with another certification passed? Do you become more confident in your services, or probably, it helps to get more customers?
I would say that rather the second. Of course, going through all those difficult and thrilling exams gives you wide experience and enriches your knowledge. But in a general sense, you shouldn’t have a dozen of certificates to be a good specialist, as only practice makes perfect. I myself know the brightest DevOps engineers with no certifications at all, and that’s quite okay.
The other question is about customers. Very often customers want to get some confirmation of your skills, and in this regard, certificates are extremely helpful. Plus, the company you work with: quite often in order to get a project in some field, for example, healthcare, the company needs to have at least several employees with a corresponding attestation showing their competence. Realizing that, I studied a lot and collected the needed certificates (it was Huawei and Cisco at that time) to help the company I worked with build trust with clients and grow.
In general, is it hard to become a DevOps specialist? Please name the most important quality for a DevOps engineer from your point of view.
If you have no experience with networking and virtualization, yes, it may be hard to start from zero. I would rather recommend starting by learning some basic info on Linux OS, networks, and principles of virtualization. I had all this experience before I started my career as a DevOps, so I can say it was rather simple for me having such a background, I didn’t feel any significant stumbling blocks. The only things I learned additionally were the basics of scripting and principles of working with Git repository, and how to deal with Cloud infrastructures (Amazon, GCP, Azure).
I can say that if you want to be a good DevOps, you should know how all the programming languages and their frameworks work, I mean (React, Python, Ruby, etc.,) - you need to know their tiny peculiarities and differences. But the main quality every DevOps engineer should possess is the ability to think critically and quickly decide which solution is the best in every single case.
There can be many ambiguous and tricky situations, as even 1 client can have several chaotic platforms, which need different migration techniques. Here you need to decide whether to perform a migration or it’s better to start with a roll-back into the database, and you need to decide quickly, with no delay in production and development. And in order to do all this, you need a clear mind and critical thinking always on.
"The main quality every DevOps engineer should possess is the ability to think critically and quickly decide which solution is the best in each single case."
Speaking about the best DevOps practices, which are the most important, ones that you should never forget?
The most important rule is to test everything several times, at least 10 (laughs). Despite the fact that I don’t work with testers myself, and testers simply give me an answer on whether the tests were successful or not, I believe that this is the core of any successful integration. As for my part, I fully automate the product (from the code push to the deployment stages) and control the whole process mainly with the team of developers. But without the right testing all our efforts will be spent in vain, so never skip this stage.
The next important rule is to always choose the most sustainable and maintainable architecture from all the possible variants. I also recommend making in your systems as many logs as possible, then you will be able to self-heal and fix small bugs by yourself. You can do it, for example, with the help of the Zabbix monitoring product, where you can write scripts to solve various errors with the help of this monitoring system. I highly recommend using it.
It is also important to choose the proper tools, that fit the given architecture best of all. And you should also have your own integration templates that you’re comfortable working with. Despite the fact that every project has its own integration architecture, you will still have a bunch of your own approaches at hand that you can rely on.
“You should always choose the most sustainable and maintainable architecture from all the possible variants.”
What's the most difficult case you had in your experience? How did you solve the problem?
I can’t remember any certain difficult case, usually, the most difficult thing is just to manage to do everything on time. I can also mark here that cases with complex system administration can be rather difficult: if all your data centers fell, a huge number of clients and applications are just blocked with that, and you need to solve this as soon as possible keeping your head cool.
They say that legacy systems are extremely hard to integrate. Is it true and how often do you work with them?
Of course, every business field, software team, engineering or DevOps specialist aspires to new technologies nowadays, as this is the way it should be. I’m no exception and I like the novelties the hi-tech world brings us. Let’s take, for example, microservices: with their creation, the integration services become much more flexible and profitable. Monolithic architectures are outdated, they are difficult to integrate and scale, so if I met them in my projects, I always try to divide them into microservices.
This concerns almost every new DevOps technology appearing on the market - they make my work faster, easier, and smarter. But still, there is one very important unspoken rule for all DevOps engineers: “If it works well, don’t touch it!” (laughs). Here I mean legacy systems too - if it works and integrates well with other systems, it’s better to leave it as it is, than just break everything down for the sake of modernization. But, of course, if it’s impossible to work with, you should think of how it can be modernized. Every architecture is different, and you need to find the balance between modern and legacy parts to make everything work properly.
"There is one very important unspoken rule for all DevOps engineers: “If it works well, don’t touch it!"
On contrary to legacy systems, microservices, platform engineering, and serverless architecture are boosting in 2022. Is it worth it for companies to implement them in their solutions?
As for me, I really like serverless architecture, and I can definitely recommend companies, programmers, and DevOps engineers pay close attention to it. It is very easy and convenient to work with, it can save you plenty of time due to the automation of processes. This is a hi-tech trend I really admire.
Speaking about trends, DevOps is now actively turning into DevSecOps. Has your working routine changed with embedding security controls early in the development cycle?
Yes, every year there are more and more tests at every deployment, and I think this is the right approach, I like these changes. Because even at testing of the code at the development infrastructure, before and production, you already understand that in 99% there will be no bugs. And this is a sign of a good CI/CD process when you have fewer bugs, and fewer migrations at every stage, and the whole development process goes faster with no loss in quality - I like it 100%.
Need Help With A Project?
Drop us a line, let’s arrange a discussion
But, of course, I realize that it takes a lot of time to test everything, especially if take into account that you are not only a DevOps, but also a DevSecOps now, and should know well all the product vulnerabilities, understand how it’s written, and provide it total security. Yes, it makes my work more complicated, but I like the final result. Plus, with the rise of robust testing automation tools like DogQ, which have multiple testing scenarios, scheduling, and working in team features, you can save plenty of time and effort on testing with no losses in quality.
Some big companies even hire a person for a separate position of SecOps, but of course, everything depends on the project budget. In most cases, a professional DevOps engineer is enough to cover all security needs, but if it’s a complex long-term project, I would recommend hiring a professional SecOps who knows in detail all possible SIM (security information management) programs and can tailor them to your needs.
Thank you for your professional opinion! By the way, what is your personal top list of DevOps tools and services?
I really don’t use lots of them, but I can share the tools that are always handy for me when it comes to system integration:
- Lens - has a very cool graphical interface for working with Kubernetes;
- iTerm - is the best and most powerful terminal application I worked with;
- Visual Studio - a handy integrated development environment from Microsoft;
- AWS CLI - is ideal when you work with Amazon.
I think, all specialists sometimes feel like they're burned out and have no wish to grow. Did you face this situation and how did you overcome it? Can you share your secrets?
I'm a true workaholic, I really like to work, so I haven't ever had burnout! Sometimes it can happen, of course, that I have some routine at work, then yes, I can feel some kind of apathy in this case. But it’s quite rare. I just look at new possible types of solutions, study them, investigate, and give them a go. When I see that the new solution works out, it really inspires me to go ahead and study more and more!
You see, every architecture is different, there can be hundreds of them, and you can never say “that’s it, I have nothing to learn anymore in my job”, no, vice versa, the process of building architecture is always interesting, it’s always a new challenge to overcome.
My secret is simple: diversity in tasks and a desire to study new solutions. When you always feed your brain with new knowledge, you’ll never burn out.
And, of course, you better have something that helps you to relax and stress out. For example, I’m really keen on growing my blueberry plantation, I like spending time there gardening, and it also helps me to switch my brain and thoughts into another field. I can just work there and all of a sudden a solution to a complex task comes to my mind! This is my hobby, and it really helps me to stay energetic and enthusiastic.
“My secret is simple: diversity in tasks and a desire to study new solutions. When you always feed your brain with new knowledge, you’ll never burn out.”
Looking at your huge achievements list, you've certainly set some new goals for the next decade. Can you share them?
Yes, sure! You know, when you already have a couple of certifications, you start wondering “what’s next?”, I mean, you get this passion for achieving new goals and pleasure when you pass one more exam successfully. Now I’m planning to get two certifications: from Amazon and Terraform.
If to sum up all the useful advice you gave above, what can you recommend to those who make their first steps in CI/CD?
Just do not build bad architecture (laughs). But if taken seriously, here are my top 5 tips for junior DevOps engineers.
1) Never stop learning. Google a lot, try to find the solution to anything you don’t get or never met before. It’s also very important for beginners not just to study on their own, but to be interested in other people's integration solutions and automation, as quite often you can find some interesting solutions and implement them in your work.
Even YouTube channels can be handy here. Just find those with the basic functionality explained. For example, on BAKAVETS channel you can find lots of useful info on TerraGrunt and Kubernetes, and ADT-IT is a well-known channel about AWS and TerraForm.
2) Gain more practice. I mean, don’t be afraid to take on a real project, because you can’t become a good DevOps engineer by simply reading the theory or creating small tasks yourself.
3) Use the potential of free resources. For example, you can learn a lot of useful info on CI/CD via Amazon's free resources. AWS allows you to use its integration services free of charge for a whole year, that’s a perfect opportunity. Even if you find a 3 months trial, take it and use it, as the more you train, the better architectures you build.
4) Get used to TerraForm and TerraGrunt. Read the official documentation, make your first steps, and learn from your mistakes - the sooner you master them, the better, as these programs will simplify and speed up your work at times.
5) When you can’t work something out, just take it easy! When you can’t build a working integration the first time, don’t give up and continue to try. If you spend hours trying and didn’t get a result, just relax and switch your brain to other things. Soon the solution will come by itself, and it will be very simple, beautiful, and elegant!
And finally, the most important advice I can give not only to junior but to all DevOps engineers.
Thank you for reading our interview with our ingenious DevOps specialist! How do you find it?
By the way, we provide a wide range of cloud-based services, including cloud migration, integration, maintenance, modernization, and many others, so if you need the help of our talented DevOps specialists, just fill in a contact form to get a free professional consultation and project estimation.
Let’s build architectures that work together!