Skip to main content

Module 1: Welcome to the DevOps World

πŸ—‚ Back to the Roadmap Index

Module Overview

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​

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​

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​

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​

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​

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 a specialist and generalist 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 for M-Shaped and Comb-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​

1.8 Project - HiveBox Phase 1​

Follow the instructions in the HiveBox project phase 1.


If you are done, πŸ—‚ Back to the Roadmap Index