| devops - Michael Levan
How to Get DevOps Experience
You may be asking yourself "How do I get into DevOps" or "How do I get a company to hire me so I can get DevOps experience". If you are, this article is for you.
DevOps is an amazing journey down a path of the most exciting technology there is out there. Not only do you get to work on automation with development practices, but you get to work on the infrastructure that can be FUN to automate. In this article, you'll gain the knowledge needed to start your DevOps journey. We will set you up for success for beginning your career in the hottest job around.
Learning DevOps Culture
The idea behind DevOps, which originated in 2009, is to get development and operations teams to work together once and for all. Prior to DevOps, the two teams often struggled to work together, no matter the organization or industry.
Code would be written and then thrown over the wall to operations to deploy. Operations would then have to figure out why it wasn't working on a server. Servers were up and running, so the problem was thrown back over the wall to development. Basically, the silos between the two teams caused a lot of challenges and inefficiencies.
DevOps is about culture, not tooling (but the tooling helps). To give an example, let's say someone asks you to build a house. They give you a hammer and some nails. Did the hammer and nails build the house? Or did you? You did. The hammer and nails helped get the job done.
DevOps is the same way. An engineer and their organization have to practice DevOps properly, and understand what is needed prior to implementing DevOps tooling. Automating a broken process is just putting makeup on the pig.
Recommended Books about DevOps
The first step in your DevOps journey is to understand what DevOps is. Here are three books that can help you develop a sense of the DevOps mindset and approach.
The Pheonix Project
The Phoenix Project is a fictional book about a company failing to ship a product, falling behind the competitors, and how they overcome those challenges. If you've worked in any type of technology position or in leadership, you will benefit from this book.
The DevOps Handbook
This book helps readers understand how to implement DevOps within a team. DevOps starts within a team and makes its way around the organization. The key is that organizations embrace DevOps 100 percent, from top down.
Accelerate helps readers understand how to implement DevOps at the organizational level. It provides many studies about how small and multi-billion-dollar organizations are implementing DevOps.
Learning DevOps technology
Let's take a look at the core DevOps technology that one needs to know to start using DevOps practices and tools.
Development: Knowing How to Code
Development does not mean you need to know how to write an application. It means that you need to understand how to write code at the automation level and how to read code.
As a DevOps engineer you will primarily focus on automation and how to ship your software. If you're shipping software, that means you have to understand the software. If the application is written in C# or Java for example, the need to understand that code is critical because it's not possible to automate shipping software if you don't understand the software. Know the product you're working with to provide value to yourself and the organization.
Automation involves code which will primarily focus in scripting, infrastructure-as-code, and configuration management.
For scripting, PowerShell and Python are a great place to start. 90% of the jobs ask for at least one of these.
Infrastructure-as-code and configuration management will be crucial for deploying infrastructure for on-prem and cloud-based technologies in an automated fashion. I recommend Terraform.
GitHub: Source Control
Once you write code, there needs to be a place to store it. This is where source control comes in. Source control is the management of any changes made to code, allows rollback of code, and shows who made changes to code. This provides the ability to have production-ready code at your disposal.
We recommend GitHub to get started learning source control. GitHub is one of the most popular distributed version control systems on the market.
Four CI/CD Tools You Should Know
Continuous integration (CI) is taking a developer's code and merging into a shared mainline several times a day. After the code is merged, it can be built into an artifact and deployed with Continuous deployment (CD) allows you to deploy your code one, two, or 60 times per day in Dev, UAT, and/or Production.
Azure DevOps is a CICD platform created by Microsoft. Despite the name, you can use Azure DevOps on any platform. This includes deploying to AWS, ESXi, Hyper-V, and other CICD platforms. The beautiful thing about Azure DevOps is that it also serves for a few other collections of tooling:
- Built in Wiki
- Built in boards for work items and tickets
Jenkins is an open-source CICD platform that has been around much longer than most CICD tools. Jenkins was first released in February 2011. Since then, there have been other CICD platforms that were created based on Jenkins. Jenkins provides free plugins that allow you to interact with components like PowerShell, Python, and multiple source control platforms to name a few.
Octopus Deploy is a platform that solely focuses on continuous deployment. The idea behind it is that you already have a continuous integration environment or software packages that you want to deploy. As of now, Octopus Deploy is heavily focused on deploying .NET applications, but that may change in the future.
GitHub Actions CICD is one of the newest platforms in the DevOps world. GitHub quickly realized that the developers that were storing code in GitHub wanted a place to easily deploy their software.
Cloud: Start Learning DevOPs
Cloud-native leads the DevOps technology path. You can 100% practice DevOps on-prem, as well as in the cloud, which is called hybrid cloud. Cloud computing provides on-demand computing resources (virtual machines, storage, networking, etc.). Instead of waiting 1-2 months for servers to be delivered to a data center, cloud computing resources can be set up in minutes.
Using This Knowledge in Your Current Role
You now have core DevOps technology knowledge from a cultural and tooling perspective. Taking it a step further, you can start implementing DevOps in your existing environment.
Start working with developers and see what they're doing. Connect with a developer and ask if you can sit with them and observe the existing process. You will be able to view their code and understand how the application is working, and what is making your organization tick.
Start writing code to automate your existing processes. Whether you're on the help desk, working with infrastructure, networking, or any other tech position, you can start automating processes. Think about the manual things you currently do — creating new users, deploying a new server, network configurations, for example. You can write code to automate all of these deployments and configurations. This will help you gain knowledge in writing code for your resume to show practical experience.
Understand how to provide continuous value to your organization. What does the organization need? How does the organization thrive? What technology helps? These are all questions that you need to ask yourself as a DevOps engineer. One of the sole purposes in DevOps is how to continuously deliver value to everyone in the organization and everyone using the product that the organization delivers.
Find some time with a manager in the development or operations team to ask how you can help with this. Or better yet, start pursuing certifications that will validate the DevOps skills to that manager.
Getting a Job in DevOps
You're ready to take this to the next level. With your DevOps tooling knowledge and understanding of how to implement that success in an existing environment, it's time to get that DevOps engineer job. Here are few things you should start doing.
Finding a DevOps Job in Your Company
Find out if the organization you work for has a dedicated DevOps team and if they do, see if you can start helping them out or transition onto that team. This is a great way to get started and the easiest.
While this tactic can be slightly awkward because you're basically telling management, "Hey I want a new job." But if the management team in your organization is good, they will love that you want to further your skills and career.
Create a GitHub Account
GitHub is a source control repository and is the new resume. Any code that you write should be in your GitHub and your GitHub link should be on your resume. GitHub is free, so you can easily get started right away.
Networking is by far the most important aspect of getting a DevOps job. In DevOps it's about what you know and about who you know. Start interacting with DevOps leaders on social media, go to conferences, attend meetups, and show whoever you can how passionate you are about DevOps. Passion goes a long way.
In this post, we took a hands-on approach to getting into DevOps. We learned what DevOps is from a cultural perspective and a technology perspective. We then started getting familiar with the DevOps technologies.
After that, we explored how to start using DevOps practices in your current organization, or how to land a DevOps engineer role. Good luck making the transition to DevOps!