Module 1: Welcome to the DevOps World
π Back to the Roadmap Index
1.1 Overview - What and Why DevOps?β
DevOps is a set of practices
, cultural
, tools
and most importantly mindset
which aims to improving collaboration and communication between software development (Dev) and operations (Ops) teams. It seeks to dismantle the conventional operational silos and promotes a collaborative, automated, and sustainable culture. Which enhances the efficiency of the whole software development lifecycle (starting from planning, coding, testing, deployment, and operations).
In conclusion, adopting DevOps enhances collaboration between teams, enhances feedback loops, ensures faster time to market, improves quality, increases reliability and stability, increases cost efficiency, and first and foremost, aligns the tech goals with the business objectives.
What you need to knowβ
- In the stone ages, Software Development Life Cycle was linear, that means in short, developers write the code, then send it to system admins to run it.
- Usually the code doesn't work as expected then a loop of
throwing code over a different fence
started and the dev and ops teams blames each other. - Hence, there was a need for a different process where both parts of Dev and Ops working together as early as possible.
- It's also important to know that DevOps has many implementations and topologies, and that's why it's a hard to land your first job as a DevOps Engineer (because that could mean many things! Sometimes that title makes sense, and some other times it's misleading!).
- Finally, just remember that, DevOps is not about Dev doing Ops work or vice versa, but it's actually a
paradignm shift
(i.e., you need to think differently).
Resourcesβ
- What is DevOps? - GitLab: A good starting point to have an overview about the technical aspects of the DevOps.
- State of DevOps Report 2023: A detailed report about DevOps in 2023 by DevOps Research and Assessment (DORA) which covers many aspects of DevOps in real-world like organizational performance, team performance, and employee well-being. You don't really need to read the whole report as a fresh DevOps engineer, but it's good to understand whole aspects of the DevOps! It's not just about technology!
- DevOps is not just a culture, and it is also a role - Ahmed AbouZaid: A blog post explains why "DevOps is a culture, not a role" became actually a clichΓ©, and it doesn't stand in front of the reality.
1.2 Software Production - Software Development Life Cycleβ
The Software Development Life Cycle (SDLC) is a process or set of phases that guide the development of software. It covers the whole process of making the software which includes planning, designing, development, testing, deploying, and maintaining software systems.
What you need to knowβ
- There are many factors and drivers of the software production, but most common what's known as "iron triangle" or "triple constraint" which are: Time, Scope, and Cost. Those there play a key role of software project management.
- There are different SDLC models, like Waterfall, Agile, Spiral, and iterative models. Each one of them works differently to achieve the project goals. For example, in the past, the Waterfall model was common which follows a linear sequence. Nowadays, Agile is more popular, which emphasizes iterative and incremental development with a focus on collaboration and flexibility.
- Apart from the model, all of them will have some core phases like planning, designing, developing, testing, deploying, and maintaining.
- As a DevOps engineer, you need to understand the different kind of SDLCs so you are able to enhance and optimize the process from the early beginning (proactive, not reactive).
- In short, you need a basic knowledge of software project management, especially Agile software product/project management.
Resourcesβ
- The Software Development Life Cycle (SDLC) - The Product Manager: A great resource that covers the main phases and common models of SDLC.
- Introduction to Software Product Management - Coursera: 4 course that covers the foundation of software production.
1.3 Software Production - Agile Software Developmentβ
What you need to knowβ
- In the modern software production, the Agile methodologies are one of the most common practices. You can think about it as the default mode, but also remember there is no silver bullet!
- As mentioned in the previous section, Agile at its core is
iterative
which means it works in phases incrementally to achieve goals instead of linearly (exactly like this roadmap!). - There are many implementations of frameworks of the Agile methodologies like Scrum, Kanban, and Extreme Programming (XP). And in many times there are new frameworks coming out of the original ones like Scrumban (which is a mix between Scrum and Kanban).
- The most important point here is to break down work into bite-size pieces, however, at the same time avoid Scope Creep! In short: Make it work, then make it right, then make it fast!
Resourcesβ
- What Is Agile Product Management - The Product Manager
- Software Processes and Agile Practices - Coursera: 8 hours course that covers the fundamentals of Agile software development and management practices.
- Is the Agile Manifesto still a thing? - Atlassian: This post covers how Agile evolved over time and the changes happened since the release of the Agile manifesto (originally published in February 2001).
1.4 Software Production - Change Management and Golden Triangleβ
What you need to knowβ
- Software production is all about "change"! When, where, and why ... or in other words it's about "Change Management".
- Every new feature done by developers includes a risk! And it should be calculated and mitigated.
- Most of the time, changes affect the main 3 component of any organization which
People, Process, and Technology
. If the change doesn't consider those 3 elements, probably it will be ineffective! So DevOps is not only about technology! - With any change, there is always a "deterioration" of something related to that change (that could be actually anything! Velocity, efficiency, etc.), which's known as
J-Curve
. - Using the mindset of MVP (Minimum Viable Product), which is one of the core Agile methodologies, helps you to manage and mitigate the change risks.
- So, your role as a DevOps engineer that links between two core areas of the software production (Dev and Ops) requires you to have some change management knowledge.
Resourcesβ
- Everything You Need to Know about the People, Process, Technology Framework - Smartsheet: A pretty good overview about how any change touches the main elements of organization.
- 10 tips for effective change management in Agile - TechTarget: Some essential topics to cover when doing a change.
- DevOps, J-Curve, and change management - Ahmed AbouZaid: A blog post show how change management is important in the DevOps world.
1.5 DevOps Methodology - DevOps and DevSecOps Core Pillarsβ
What you need to knowβ
- DevOps is a methodology with an ultimate goal to enhance the software production.
- Because DevOps is a methodology, it actually has many implementations and topologies so always think of DevOps like Shawarma/DΓΆner/Gyros! It comes in many different types and shapes!
- However, there are a couple of DevOps pillars and principles.
- DevOps key pillars:
- Set of practices (SCM, IaC, CI/CD, peer review, etc.).
- Tools (modern tools used in the practices like Git, Jenkins, Kubernetes, etc.).
- Culture (make sure to clear DevOps goals on a high level like organization or department).
- Mindset (positive attitude, fix the right problems, focus on the solution not on the problem, no untracked changes, avoid heroism, etc.).
- DevOps key principles:
- Automation of the software development lifecycle (yet, automation not an end in itself, it is a means to an end).
- Collaboration and communication (communication is always the key, not just between dev and ops team, but in the whole SDLC).
- Continuous improvement and minimization of waste (working in iterative and MVP style, no big bangs).
- Focus on user needs with short feedback loops (technical enhancements without business impact are meaningless most of the time).
- What about
DevSecOps
? Software supply chain security has been one of the hot topics because of the continues attacks and exploits shown in the latest few years. So having a proper security practices is not a luxury anymore! - However, DevOps is not just about Dev and Ops, it implicitly has in-between all other parts of the software production like security, testing, QA, data (science/engineering), etc. Otherwise, it will be something like
DevSecQADataMLOps
(you actually can add anything here). - So in this roadmap we will tread DevOps as DevSecOps, security is embedded by default.
Resourcesβ
- What is DevOps? - GitLab: This article covers the aspects of DevOps like principles, phases, and benefits.
- DevOps is not just a culture, and it is also a role - Ahmed AbouZaid: A blog post explains why "DevOps is a culture, not a role" became actually a clichΓ©, and it doesn't stand in front of the reality.
- About Open Source Security Foundation - OpenSSF: A good place to start reading about security by design and security by default and to learn more about OpenSSF.
1.6 DevOps Methodology - DevOps, Cloud, Platform Engineer, and SREβ
What you need to knowβ
- Maybe the title "DevOps Engineer" is not the most accurate title in the software industry, that's because it could mean many things.
- The different implementations and topologies of DevOps led to different DevOps Engineer criteria, which vary between companies and industries.
- So don't panic when you see two DevOps job descriptions not similar to each other (yet, don't mix it with the fake DevOps role which is just a sysadmin with DevOps label).
- There are also a couple of roles related to
DevOps Engineer
but mostly share at least 90% of the skill set.- DevOps Engineer: Collaboration between development and operations teams to improve the software development and deployment process.
- Cloud Engineer: Designing, implementing, and managing cloud infrastructure and services.
- Platform Engineer: Building and maintaining platforms that support the development and deployment of applications.
- Site Reliability Engineer (SRE): Ensuring the reliability, availability, and performance of software systems.
- In real-world, many companies use the roles and titles exchangeably! So don't rely too much on the naming but the actual job.
- This roadmap focuses on the typical DevOps Engineer, yet, it still shares at least 90% of the needed skills with the other roles.
Resourcesβ
- The Site Reliability Workbook - How SRE Relates to DevOps - Google: A great book in general, and its first chapter covers the relation between SRE and DevOps.
- What is platform engineering? - Platform Engineering: This article discusses the idea of platform engineering and how it evolved from DevOps.
1.7 DevOps Methodology - T-Shaped Skills DevOps Engineerβ
What you need to knowβ
- The
T-shaped skills
refer to combining broad and deep skills in a specific field. The horizontal bar of the "T" represents a broad range of general knowledge and skills across different disciplines or areas, and the vertical stem of the "T" represents deep expertise in a specific area. It's simply a mix between being aspecialist
andgeneralist
at the same time! - It will help you to work in companies with different DevOps patterns. You can easily transition between different areas in the DevOps spectrum. Not only that, but also it will help you to handle new challenges effectively. In fact, the best DevOps engineers I have come across possessed T-shaped skills.
- Does it mean there's no
I-shaped
DevOps engineer who specializes in certain areas and no little knowledge in other areas? I would say it's possible, but it may limit the available opportunities and companies you can work with. - Actually, as you progress in your career, it's better to develop more specialization (i.e., more vertical stems), and after a couple of years in the industry, your next step should be
Pi-Shaped
skills (search also forM-Shaped
andComb-Shaped
skills, but it's a topic for another post). - In summary, you should aim to gain exposure to various areas of DevOps practices and technologies without delving too deep into each one, yet, you need to dive in-depth into some of them (according to the market or organizations of your target). And due to that, your roadmap shouldn't be linear but follow the MVP-style approach!
Resourcesβ
- Why T-Shaped Professionals Are Desirable β DevOps Agile Skills Association: This article that covers the benefits of being a T-Shaped DevOps engineer.
- 3 Ways T-Shaped Skills are Important in DevOps Teams - EXIN: This article discusses what is a T-shaped professional, and why does it matter, and 3 areas where the T-shaped skills so important.
- T-shaped skills profiles and the human factor - McKinsey & Company: This article covers the abstraction of T-shaped and how it affects organizations.
1.8 Project - HiveBox Phase 1β
Follow the instructions in the HiveBox project phase 1.
If you are done, π Back to the Roadmap Index