You all know that devops is already very popular
and highly demanded. You see organizations adopting it worldwide and it seems like a great
career choice with lots of job opportunities, high salary and generally a very rewarding
work, but maybe devops is not for everyone. It takes a specific type of person to be
interested in devops, so the question is: "is devops profession right for you?" And in
order to answer this question in this video I will explain what are the qualities and characteristics
you should have if you want to get into devops, what kind of thinking and approach is required
in devops with soft skills as well as technical skills you need to have and finally what are
some challenges of being a devops engineer. And if at the end of the video you do find
out and decide that devops is indeed for you, I will also show what next steps you can take
to get into devops. So let's get into it! First of all, you need to be a generalist
rather than a specialist. What does that mean? In devops you don't just learn one
tool or one concept and then specialize in it. Instead you need to master combining many
tools. Some people love focusing on one area of expertise and deepening their knowledge
in it, like if you learn JavaScript you can master it on an advanced level and become an
expert JavaScript developer, but in devops you can't just learn Docker or Terraform and
become an expert Docker or Terraform engineer, you need to have a tool set of various tools you
combine in order to build devops processes. Even as a junior devops engineer just knowing
two or three tools won't help you here, so you should like learning many different
things and building a wide skill set. Because you need many tools you also need to
develop a skill to compare, quickly assess and decide on which tools and concepts you will use
in your projects. Like "do we need GitOps or is it just over engineering for our specific
use case and project". "This tool is great, but is it ready and mature enough to be used
in this project?" "Should you use Terraform or Pulumi ?" It's a strategic decision, right?
Use Terraform which is an industry standard or Pulumi which is more developer friendly and
developer centric. And for those decisions you need to be able to evaluate and test
various tools, you also need to consider many aspects and make efficient comparisons
between different technologies to decide which tools and concepts match to your specific
use case and will work best for your project. In order to make those strategic decisions on
which tools are best for your specific project and use case, you need to have a good high level
overview and end-to-end understanding of DevOps processes. You need to understand which tool
fits into which part of those processes and why you're using them. You need to zoom out to see the
connections between the tools and different roles in your team, the bottlenecks, possible issues
and improvement opportunities. So the scale of high level thinking is one of the most important
ones when you're getting into DevOps. For example, when you're building a CI CD release pipeline you
need to understand the whole software development life cycle, you need to understand which roles
it affects, what steps need to be combined in which order, which systems are affected and who
is responsible for what. Just like an architect, who designs the whole house, considering the
size of the lot, size of the house that needs to be built, the surrounding space, inner space
and all the aspects around it, making a master plan for building the house. The same way you are
architecting the DevOps processes on a high level. As I already mentioned, when you have a good high
level overview, it's easier to identify issues, bottlenecks that slow down the process or possible
improvement opportunities in the DevOps processes, like release pipeline, monitoring
infrastructure management processes etc. So when you see the whole DevOps process
is one continuous line it's easier to see those. Identifying issues is the first step in solving
them and considering that many DevOps processes are pretty complex, it may be challenging to
see those issues and ways to optimize things, so you need to be constantly observing and
actively looking for ways to improve things and fix the issues. For example if you identify
that developers always need to manually perform some tasks, which takes two hours or you notice
that running tasks takes really long, so the CI pipeline runs are very slow, you should actively
look into it and see how how you can speed up or automate things. Things can be optimized endlessly
in DevOps. You don't just build a release pipeline in two months and that's it. It's a continuous
improvement process, just like you don't program an application in two months and be done with it,
you continue adding features and fixing bugs and so on. It's the same with DevOps processes.
This means as a DevOps engineer you need to have a solution oriented approach, constantly
looking for ways to optimize and solve things. Now coming up with those solutions and improvement
ideas will also require creativity and innovative thinking. Why is this especially important in
DevOps? Again because in DevOps the processes are very complex and covers so many parts of
the software development life cycle, things are often not so straightforward. So for one specific
task there may be 10 different ways of doing it, so you need to combine things in a creative
way to find solutions. This means most of the time you need to be creative and think outside
the box when deciding how to solve bottlenecks, how to speed up DevOps processes, how to
increase the quality of product delivery etc. This also requires innovative thinking,
because often the issues you have are very individual for your project. So you need to have a
fresh perspective and approach problems this way. Often you can't just see how other companies solve
the problems or how your company solved it in the past, because it's a completely new and unique use
case so you need to find a unique solution for it. When you make a plan and come up with solutions
that affect many people, various roles in your organization and many team members, of course
those affected people should also be on board with those solutions. You may get resistance
from engineers or people may be opposed to making changes to existing processes. So you need a skill
to persuade people that your plans are really good and will indeed help them in their work and have
positive impact overall on the organization. So as a DevOps engineer you will need to know how
to communicate your ideas and planned changes, get people on board and advocate for your ideas.
So another super important skill you need in DevOps is communication skills. Now let's see
why this one's so crucial. In order to identify the issues, bottlenecks, improvements
and the respective solutions to those, you often need input from various people
and various roles in your organization and good understanding of their work and their
pain points. Once you have identified issues and come up with solutions and persuaded the
team to implement those, you need to also work closely with engineers to actually implement
that plan. So communication is the skill that ties it all together. As a DevOps engineer you
don't work alone. The whole DevOps concept is based on the collaboration between different
roles and team members and often these are the roles that have different interests and tasks and
sometimes even conflicting interests. So you need to enjoy working with people and communicating
with them since this is going to be one of the major elements of your work as a DevOps engineer.
So being a team player is definitely a must here. As part of communication skills you also need
to be able to effectively express your ideas and explain your plans and strategies to the
team members. So this also goes hand in hand with the persuasion skills. Let's see why? As I
already mentioned, your work affects many people, you solve problems and bottlenecks for different
roles, which means you need to get people to work with you but also share your knowledge with
them, explain new concepts and processes and so on. DevOps engineers are also often the mediators
between different roles. So you need to understand and communicate efficiently with people, who have
different interests, tasks and responsibilities. For example let's say you are setting up a CI
CD pipeline. CI/CD pipeline affects developer workflow first of all. So developers need
to be on board with what you're doing and how you are designing their workflow, because
they need to work with it. On the other hand, you need input from them to understand what they
need in order to work efficiently. So you can use this input to implement the CI CD pipeline.
CI/CD pipeline also affects test engineers, system administrators, security professionals.
So the same way you need need to understand what these engineers need in order to do their part of
the job and naturally all their interests need to be aligned as well. So for example, if security
needs to validate any security issues, test engineers may write some automated tests to detect
those security issues and this automated tests will then be integrated into the pipeline or if a
system administrator needs to enforce any policies for developers before deploying the application
changes to let's say a Kubernetes environment, you can help them create those automated policy checks
and then integrate them into the pipeline as well. And if the development fails, help developers
interpret those policies and comply with them. So you see that as a DevOps engineer you are kind
of in the middle of all those different roles, connecting them and basically encouraging and
enforcing this collaboration between different team members. Before moving on I want to give a
shout out to Pulumi who made this video possible. Pulumi is a modern universal infrastructure
as code tool which is gaining popularity. With Pulumi you can use your familiar programming
language tools and software engineering practices to deploy and manage your cloud infrastructure
on any cloud platform. By being able to use standard languages practices and tools uniformly
across infrastructure development and compliance teams it brings them closer together to better
deliver and manage modern cloud applications for example you can deliver infrastructure
and application code through a single CI CD pipeline rather than separate pipelines for each
one this streamlines versioning building testing and deploying cloud applications if you want
to learn more about Pulumi, I actually have a separate video on it where you can see fully
how it works in practice with that let's move on As a DevOps engineer you don't only create
the high level design of the processes like a solutions architect, but you also implement
things like provisioning the infrastructure, configuring servers, writing automation
scripts, infrastructure is code or X as code. So once the high level plan is in place,
the next step is implementation. Now there are differences across organizations on the role
of a DevOps engineer and what its tasks and responsibilities are. Originally DevOps was not
even meant as a separate role, but rather as an overlaying concept. So traditional roles
like developers, system administrators etc were supposed to take on those tasks that are
now done by DevOps engineers, but in practice it emerged as a separate role who designs the DevOps
processes and also works hands-on to implement those processes. So in order to implement
things you need detail oriented thinking, to consider and pay attention to various details
and actually implement the things that you have designed. So you need to be able to focus both
on the big picture and small details or in other words create a zoomed out map with an overview
and then zoom in into specific spots on the map. When needed you also need detail orientation
when troubleshooting issues especially in complex systems like Kubernetes clusters on cloud
environments or in complex infrastructure setups Now let's say you design the processes and
workflows, you implement things and so on. Since these workflows affect other engineers
they need to know how these processes work. When you create a CI/CD pipeline, developers
need to know how to use it and how to develop, what to do and what not to do. So that their code
changes actually get released by that pipeline. Or let's say you have implemented infrastructure
as code concept in your organization. When a new systems administrator or cloud engineer joins
the team, they need to know how the process of creating and configuring infrastructure works.
So documenting things and making them transparent for others in your organization is extremely
important in DevOps. The processes should be transparent for everyone. This will make work
and collaboration of engineers much easier, but also make onboarding new engineers way easier
as well. This means you need to be an organized person, who document things in an organized
and structured way. This could be textual documentation or also graphics and diagrams for
let's say visualizing architecture, workflows and different processes in your organization. Making
things transparent, sharing knowledge, making sure everyone has access to the information they need.
Now apart from personal characteristics you should also have personal preferences for things that are
essential for the DevOps daily work. First of all, you should love dynamic, diverse work with
a wide range of tasks, because as I said you don't just work on one tool but rather your
tasks may range from coding to configuring infrastructure to monitoring, scripting and so
on. This will also mean doing things outside your comfort zone instead of doing comfortable
work, like only doing the tasks in your areas of expertise. In DevOps you keep pushing out of
your comfort zone, constantly working with new tools you don't know. So you should not be
just open to changes, but love the changes and actively drive changes and improvements in
your organization. This also means being on the edge of the technological changes and industry
trends, being the front of your organization that keeps an eye and observes industry changes
and trends and improvements to implement them and bring them into your organization. Another
personal preference that's super important is that you enjoy identifying optimization
opportunities in the existing processes. And I think this is a very important one. For example
you should have fun and enjoy solving bottleneck, spitting up things, automating things and seeing
the progress from slow manual tedious work to smooth streamlined automated processes. Now as
you're probably already thinking DevOps is quite a challenging job. It is definitely exciting and
rewarding, but it comes with some challenges, which you may also want to consider when deciding
whether DevOps is really for you. First of all, constantly learning new technologies and
concepts could be overwhelming for many people. The responsibility and the challenge in
working with people, who may be opposed to your ideas and suggestions or generally resistant to
changes can be very difficult as well. And since you need to communicate with various teams in the
organization, it can be frustrating if they don't cooperate. Another common challenge is that often
there are unclear requirements about DevOps in the companies themselves, because some companies
don't know exactly what DevOps is and where the responsibilities of DevOps actually lie. So you
may get pushed into some role or in doing tasks, which are not really part of the DevOps area.
Now this may change in the future when DevOps processes become more standardized and DevOps role
becomes more standardized as well, but currently this is a common issue across organizations.
Something that may also bother some people is that most tasks are not visual, but rather in the
background, not directly visible by the end users or even the team members. Sometimes the fact
that you don't even notice a DevOps process may in some cases be exactly the purpose of the
DevOps task. Like removing the bottleneck so the processes become more streamlined and smooth and
generally when working with people, you need to be a person who is able to cope with that resistance
and be empathetic and don't get frustrated so easily. So overall being a DevOps engineer is
a bit challenging, but extremely interesting as well especially for people who love to learn
and are always ready to tackle complicated issues. Now apart from the personal qualities
and preferences, there are some hard facts that may be very important and influence your decision
on whether you want to become a DevOps engineer. Something that speaks very strongly for choosing
this career is that DevOps is currently one of the most demanded professions in the IT field and is
probably going to become even more demanded in the next years as DevOps adoption keeps growing. So
if you're someone who takes the market demand into account, then this will be an important factor
in the decision. If after watching this video you think that DevOps is indeed right for you,
then check out my other video from Zero to DevOps engineer, where you see how you can transition to
DevOps with your specific background. Whether you are a systems engineer, software developer, test
engineer or a complete IT newbie. So be sure to check that one out. And if you actually decide
to get into DevOps and become a DevOps engineer and want to commit to learning it, then you
should definitely check out our six month DevOps bootcamp, where you learn all the tools
and concepts you need to become a DevOps engineer in a structured step-by-step way. With that, thank
you for watching and see you in the next video! :)