[DevOps] How to become a DevOps Developer

Tonytruong
6 min readDec 28, 2022

--

A Bit on my background

Hello! Welcome to those that stumbled their way here — My name is Tony, and I write Medium posts about DevOps-related technologies, challenges, and solutions based on my 12-year IT career in various different roles ranging from — Systems Administrator, Networking Technician, ServiceDesk Analyst and many others but spending the last 5 years strictly in a DevOps focus.

I’ve had the pleasure of helping transform small and medium-sized businesses — specifically their internal dev teams — to adopt a more modern agile infrastructure framework comprising the best modern practices.

I’m a self-taught DevOps Developer who has an insatiable thirst for continuously improving and continuously developing — Pardon my pun. I hope some of my articles will guide those who are just breaking into this space and the best advice you should part with — if any, is that —

You won’t know everything, and that's okay.

Understanding what DevOps really means…

DevOps is a set of practices that aims to bring development and operations teams together to enable continuous delivery of software. It emphasizes collaboration, communication, and automation in order to improve the speed and reliability of software deployments.

DevOps aims to bridge the gap between development and operations by fostering a culture of collaboration and communication between these traditionally siloed teams. This can involve practices such as continuous integration, continuous delivery, and infrastructure as code, which enable teams to deploy code changes more frequently and with fewer errors.

By streamlining the software development process and enabling rapid deployment of code changes, DevOps can help organizations deliver high-quality software faster and more reliably. It is particularly well-suited to organizations that rely on agile software development methodologies and the rapid delivery of software updates.

The many different technical aspects that a DevOps developer would need to learn are:

Continuous integration (CI)
regularly merging code changes from multiple developers into a shared code repository, and then automatically building and testing the code to ensure that it is ready for deployment.

Continuous delivery (CD)
Automatically building, testing, and releasing code changes to production as soon as they are ready, rather than waiting for a scheduled release.

Infrastructure as code
Managing infrastructure, such as servers and networks, using code rather than manual configuration. This allows infrastructure to be versioned, reviewed, and automated like application code.

Automated testing
Using tools and processes to automatically test code changes as part of the CI/CD process, to ensure that they do not introduce regressions or other issues.

Monitoring and observability
Using tools and processes to continuously monitor the performance and availability of systems, and to gather data about how they are being used in order to identify and resolve issues.

Collaboration and communication
DevOps emphasizes the importance of collaboration and communication between development and operations teams, in order to facilitate the rapid delivery of software. This can involve practices such as pair programming and agile methodologies.

But — how do I start?

There are several ways to improve your DevOps skills:

  1. Hands-on experience: One of the best ways to improve your DevOps skills is to get hands-on experience working on real-world projects. This can be through a job, internship, or even personal projects.
  2. Training and certification: There are many training programs and certifications available that can help you learn about DevOps principles and practices. Some popular options include the Certified Kubernetes Administrator (CKA) and the AWS Certified DevOps Engineer.
  3. Online resources: Online resources, such as blogs, podcasts, and online courses, can help you learn about DevOps. Some popular options include the DevOps Institute, the Cloud Native Computing Foundation, and the Linux Foundation.
  4. Networking: Attend DevOps meetups, conferences, and events to meet other professionals in the field and learn from them.
  5. Stay up to date: The field of DevOps is constantly evolving, so it’s important to stay up to date with the latest tools, techniques, and best practices. This can be through reading industry blogs, following influencers on social media, and participating in online communities.

Here is a list of common technologies one will find themselves learning:

Relax, you won’t have to learn every tool on this list, to truly become a DevOps developer it is best to learn the concepts of what the tool actually does at its core, what problems it solves for developers and why we use these tools. Once you learn one, the rest of them is like learning different programming languages — a matter of picking up different syntax.

Version control systems: Git, Mercurial, and Subversion are popular version control systems that allow teams to track and manage code changes.

Continuous integration (CI) tools: Jenkins, CircleCI, and Travis CI are popular CI tools that automate the build and testing of code changes. Out of the many tools out there I’ve personally used Jenkins, GitLab and GitHub Actions.

Configuration management tools: Ansible, Puppet, and Chef are popular configuration management tools that allow you to automate the provisioning and configuration of infrastructure. In my current organization, we use a mix of Chef and Ansible, both work well feel free to look into Puppet as well. So as long as you up any one of them you will be fine.

Infrastructure As Code Tools: Terraform and Pulumi both are popular. I mainly have used Terraform, simply because I understand the language and file format much easier than I did Pulumi when I first started out my DevOps career.

Containerization tools: Docker, Kubernetes, and OpenShift are popular tools for building, deploying, and managing containers. To start I would suggest learning docker, then Kubernetes as Kubernetes will use Docker containers and to learn both at the same time will be a big hill to climb — doable but just not efficient.

Monitoring tools: New Relic, Grafana, Prometheus, AWS Cloudwatch, and Datadog are popular tools for monitoring the performance and availability of systems.

Logging and analysis tools: ELK (Elasticsearch, Logstash, and Kibana) and Splunk are popular tools for collecting, storing, and analyzing log data.

Collaboration and communication tools: Slack, Asana, and Jira are popular tools for facilitating communication and collaboration between team members.

Test automation tools: Selenium, Appium, and TestNG are popular tools for automating the testing of web and mobile applications.

The following below are a few GitHub repos to assist you with your learning.

https://github.com/tonytruong101/python-learning

If this post was helpful, please click the clap 👏 button below a few times to show your support for the author 👇

--

--

Tonytruong

DevOps Fanatic with a penchant to automate anything and everything — Terraform Nerd, Docker practitioner and self proclaimed AWS guru.