It wasn’t all that long ago that there were distinct job titles in the world of IT. You could be a systems administrator or a developer.
Developers would write software in their cubicles, and there was another team hiding out in a server room somewhere who were responsible for security, compliance, software updates, and sending grumpy responses to support tickets.
Thanks to the growth of ‘Agile’ teams, many companies are embracing the idea of DevOps. The theory is that by empowering developers to use continuous delivery methodologies, they can make small, incremental improvements in their software, allowing for more rapid application development.
A DevOps engineer does some of the jobs of a software developer, but also takes care of the build, deploy, and operations aspects of their product, taking advantage of automation tools to make their workflow easier.
They aren’t actually systems administrators, but they do a lot of the same work within the scope of the application they’re working on. Essentially, they bridge the gap between the development team and the operations team.
DevOps engineers work in several areas. In terms of real-world skills, here’s what they do:
- Automating configuration management with Terraform
- Version control with Git
- Package management with Docker
- Deployment with Jenkins
- Running applications on cloud services
- Monitoring applications using Prometheus and Grafana
The above are just some examples. The tasks, such as automation, version control, and package management are always the same. The tools used, however, could change between employers or evolve over time.
DevOps is a rapidly transforming field. It wasn’t all that long ago that SVN was as common as Git, and people used virtual machines instead of Docker, for example. Ultimately, DevOps teams should always be ready to learn new things.
How to Become a DevOps Engineer
DevOps is a complex field, and it’s not something an inexperienced developer can move into as a first job. Usually, people start in one area of computing, then gradually expand their skillset before moving into a DevOps position.
Useful skillsets include:
DevOps engineers aren’t always specialist programmers, but they are expected to know enough to be able to read error messages and debug small chunks of code. A DevOps engineer should be able to fix a missing dependency or spot that a compile error is down to a simple typo. Having experience with build tools and popular programming languages is a huge plus.
Systems Administration Knowledge
Knowing your way around a timeline, when to use sudo and how to set up chrooted environments is a must. DevOps engineers are responsible for automating the deployment of packages and need to be able to manage their systems confidently.
Cloud and Network Knowledge
DevOps engineers should know how to configure Azure or AWS instances, be familiar with Jenkins and Kubernetes, and have an idea of the inner workings of various protocols and APIs. More importantly, they should be able to get up-to-speed with new technologies quickly.
This last characteristic is vital, as many users who have sight impairments or even hearing impairment can find that most software is not set up to allow for use with screen readers or have alternatives to sounds when it comes to alerts.
Security and Software Testing
If something’s running as a cloud service, that means it’s on the Internet and is vulnerable to attack. DevOps engineers should understand how to configure systems in a robust way, which accounts should have which privileges, and what users various scripts should be running as.
Testing often falls, at least partly, into the hands of a DevOps engineer too. There may be a dedicated QA department, but the DevOps team will carry out automated testing as a part of the deployment process.
Finding Good DevOps Engineers
Some smaller companies struggle to find a person in-house who can serve as a DevOps engineer because the role requires such a breadth of expertise. One useful solution is to outsource DevOps to a nearshore software development company.
Nearshoring offers small and mid-sized companies the chance to build a rich talent pool, working with experienced developers or DevOps experts in nearby countries. Finding a reliable and experienced DevOps engineer who can integrate well with your team, and perhaps help your existing developers or QA staff upskill as ‘future DevOps’ specialists will help you improve the efficiency of your software development lifecycle.