Understanding the Programming Landscape for DevOps Professionals
Written on
Chapter 1: My Unexpected Journey into DevOps
Three years ago, I embarked on my first job in the tech industry, albeit not in the position I had initially aspired to. I was determined to become a developer, convinced that coding was my strongest skill. However, I found myself stepping into a DevOps role instead.
Initially, I felt disheartened and attempted to shift my position, but the company was resolute. They offered a supportive work environment and assured me that after three years, I could transition to my desired role, which encouraged me to stay.
After about six months of training, the only DevOps expert who had been mentoring me departed, leaving me to oversee an entire department responsible for managing a large data environment. The beginning was challenging, but gradually, I adapted and improved. Now, I believe I'm managing my responsibilities effectively.
I’ve noticed that many of you engage in programming as part of your DevOps duties, which prompted me to reflect on my own experience. My programming work mainly consists of writing small scripts or crafting an Ansible playbook occasionally.
Section 1.1: My Programming Contributions in DevOps
Here are some of the programming tasks I have undertaken in my DevOps position:
- Developing Lambda Functions in Go: I created Lambda functions to build more user-friendly APIs for our cloud infrastructure, particularly when the existing APIs were either too open or lacked the necessary flexibility.
- Collaboration with Development Teams: I worked alongside development teams to implement Prometheus in our codebases, ensuring scalability while preventing cardinality issues.
- Creating a Kubernetes Operator: I developed a Kubernetes Operator to manage the lifecycle of our applications on the Kubernetes platform.
- Scripting for Continuous Integration: I contributed additional features to our CI system using Python.
Subsection 1.1.1: The Role of Automation in My Work
We frequently utilize Ansible for automating various tasks. However, I’ve realized that there are scenarios where employing a full-fledged programming language is far more suitable. For example, Python enables me to achieve tasks without having to stretch Ansible beyond its intended use. Yet, when Ansible proves convenient—especially when a pre-built module meets my needs—I opt for it.
As a side note, I’ve actively advocated for integrating more programming into my role, and my voice has largely been acknowledged. Some colleagues prefer sticking with Ansible, which is perfectly acceptable. This simply means we tackle different challenges while remaining satisfied with our respective projects.
Section 1.2: Tools of the Trade
In my current role, I frequently work with Terraform, Ansible, Bash, and Python. Writing CI/CD pipelines in YAML is also a significant aspect of my responsibilities. The variety of tools and languages at our disposal keeps the work dynamic.
Chapter 2: The Broader Perspective on DevOps
The greatest hurdle in our field is the misinterpretation of the term "DevOps," which has often been reduced to merely an Ops professional who possesses some coding skills. Originally, it was intended to signify a collaborative approach among teams, with an emphasis on continuous enhancement.
As for my current focus, I spend a lot of time coding in Python, but I have also worked with Go, Ruby, Ansible, Terraform, Groovy, Chef, Bash, and a plethora of YAML.
This encapsulates my journey and the programming I've engaged in within DevOps. What about you? What programming languages do you use in your DevOps role?
Join me on my DevOps and Cloud adventure!
To be part of this journey:
- Follow me on Medium @thecloudarchitect.
- Share your insights in the comments and give a round of applause if you enjoyed this post.
- Subscribe for email notifications for future updates.