Blog

Trunk Development of Code

Uncovering DevOps – A Powerful Formula for Success

Challenging the way we think about software development is paramount for innovation. Practices like accelerating software time to production, automated testing and dynamic scalability all help allow development teams to focus on their core objectives. These principles are the heart and soul of DevOps. At its core, DevOps uplifts the software development life cycle for increased efficiency, higher velocity, more reliable delivery, and enhanced security. This methodology represents a cultural change that begins at an organisational level.

DISCOVERING HIDDEN GEMS

My spark for technology developed from a young age. Whilst I found other subjects arduous, mucking around on computers always gave me respite. In short, technology was my passion. I would spend endless amounts of time playing games with friends and creating scripts to exploit game mechanics to our advantage. Despite this motivation, tertiary education did not prepare me for specialisation in the IT world. When I initially moved into the industry, I explored data analytics, full-stack development and security, in pursuit of establishing a well-fitted career path. While I maintained my passion for technology, none of these areas completely fulfilled what I wanted from my career.

Cut to 2020, when I joined a team of developers working on a government project. This project dealt with large scale Application Program Interface (API) development and deployment. I joined the team as a developer and as the project evolved, each dev team was allocated a DevOps Engineer. The DevOps Engineers assisted in day-to-day operations that developers otherwise wouldn’t have the time or investment for. The primary goal was to facilitate and create self-service infrastructure. This infrastructure utilised tools for automation, continuous integration/continuous delivery (CI/CD), deployment, monitoring, and security. Their role significantly uplifted the capability of our dev teams, such that we could focus on our job.

During the engagement, I saw first-hand how the implementation of DevOps practices alleviated tedious manual processes and optimised team delivery. It felt like a no-brainer to prioritise and pursue an area of industry that was pivotal to the fast, smooth delivery and support of all development and operations. Transitioning through university and industry, it was common to hear ‘buzz-word’ career paths. Most common at the time being machine learning, artificial intelligence, web development, data analytics and cybersecurity. What I discovered was how many innovative and leading facets of technology aren’t widely taught; tucked away like hidden gems for developers to uncover themselves. For me, DevOps very much fell into this category.

DEVOPS & THE SEARCH FOR SYNCHRONICITY

So, what is DevOps and how does it affect an organisation? I’ll start with an anecdote to paint a picture.

Put yourself in the shoes of a developer. Now, as a developer, your job is to code software. Day-to-day, your role is to implement features, resolve bugs, and optimise existing code. The more time spent coding, the faster features are developed. After a period of time, the features are complete and a new iteration of software can be released. As a developer, your ability to release code into production now depends on how well the software was tested, the infrastructure required, mitigating security threats, scaling the application for high traffic, and so on… All of this time spent simply promoting software to production takes time away from coding and hence decreases productivity. Such a delay can also increase upfront maintenance costs, limit a team’s ability to stay market-competitive, and completely bottleneck further features from being released.

This dance between development and deployment is the choreography that DevOps attempts to resolve. It starts with a cultural change, adopting core practices that advocate automation and synchronicity. Utilising tools that facilitate and schedule builds, deployments, testing, and monitoring capabilities.

CHOOSING A CAREER IN DEVOPS

During the course of the government project that I worked on, I got to see the true value of DevOps as a career path. Whenever an opportunity presented, I sparked a conversation with the DevOps team and took great interest in learning from them. Unfortunately, my team’s DevOps Engineer moved on, and with that we lost a wealth of knowledge. Our team struggled to find a replacement over the coming weeks. The loss significantly impacted our ability to frequently deliver software and release fixes, and we naturally saw a change in our rhythm. With this gap, I sought the opportunity to pursue a career path in DevOps. Due to significant roadblocks within our team, it was a natural step for me to close this gap.

My daily workload was subsequently split between supporting my team’s DevOps capability and development work. After a while, and with increased demand for a full-time DevOps team member, I made the move permanently into the DevOps space. I went on to support this project in its entirety as a member of the DevOps/platform team. Throughout this time, I made contributions to the governance and quality analysis of code, deployment scripting, API traceability, infrastructure performance, as well as regression, unit and integration testing.

MASTERING DEVOPS

When I first embarked on my journey into DevOps, I had been completely self-taught and motivated. This process led me to find many online resources for up-skilling, and I started by watching YouTube videos like the one below and reading documentation on relevant technologies. Namely, I learned about cloud automation, deployment and release management, GitOps and CI/CD deployment, YAML, Bicep and ARM templating, Agile methodology and practices, and Bash, ZSH and Python scripting. Having a broad understanding of these concepts is important, as they make up the fundamental tools used in DevOps.

DevOps CI/CD Explained in 100 Seconds

Dev Ops Explained - Video View

Credit: Fireship

I continued my journey into specific technologies including Microsoft Azure DevOps (ADO), Amazon Web Services Cloud (AWS), Google Cloud Platform (GCP), Kubernetes, OpenShift, Terraform, Splunk, Elastic Cloud, Jaeger, and Pact-Broker. ADO, AWS, and GCP are all SaaS hosted platforms that facilitate DevOps, while Kubernetes, OpenShift, and Terraform provide infrastructure scalability and containerisation management. Splunk and Elastic Cloud are security monitoring and alerting tools, and Jaeger and Pact-Broker provide micro-service traceability. To pick up these skills, I dove straight into the deep-end and got my hands dirty. I found it easiest to learn and apply the knowledge I had already acquired by using these tools directly.

Certifications are also a reliable way of learning and broadening your knowledge base in DevOps. The tools you see below are some of the few I experimented with:

As you can tell, DevOps spans a broad scope of platforms and skills. While many technologies can facilitate DevOps, the real change comes with understanding the philosophy that it fosters. Understanding every platform and technique that facilitates DevOps is not practical. One of my favourite examples of this is the Cloud Interactive Landscape, by the Cloud Native Computing Foundation (CNCF). This list possesses over 1,000 examples of cloud technology for different use cases of DevOps. Whilst impossible to become proficient in all of them, they all follow the same key principles. I would encourage those with ambitions of pursuing DevOps to understand the different capabilities CNCF illustrate here. Selecting a few of these technologies from each category would be a great starting point for launching your career.

Simply put, DevOps make people’s lives easier. It is an area of technology that is entirely complimentary to all other facets. I have found this career path immensely rewarding and am fortunate to work across the entire development lifecycle.

WHY PURSUE DEVOPS?

It can be hard to find your footing and passion in the tech industry. The variety that tech offers makes it both an enticing but also a daunting field. When I started my career, I struggled with the overwhelming choice. Through my trial in many areas, I stumbled into DevOps and am fortunate to have found people who both shared my passion and were brilliant mentors.

I can confidently say I am genuinely passionate about DevOps and love the work I do. My day-to-day is varied, meaningful and exciting – something that yours can be too! Pursuing a career in DevOps means keeping your brain challenged, problem-solving, and most importantly, supporting your teammates. The skillset you bring can enrich developers’ time, decrease running costs, and improve the efficiency of entire projects. Hopefully, this article has given you some insight into the DevOps world and opened a door to what could be an exciting career journey!