The course is part of this learning path
This course describes 6 different positions in the cloud computing industry, all of which are in high demand as established companies move to cloud technologies, companies expand IT departments, and new companies form. There’s great opportunity for fulfilling work with great pay. Overall it’s a great time to be in the cloud computing industry (which is rapidly becoming the IT industry).
Hello, and welcome back to the Careers in Cloud Computing course. I'm Adam Hawkins, and I'm your instructor for this lesson. We're discussing the DevOps engineer and site reliability engineer positions in this lesson. Both positions stem from the DevOps movement's goal of improving organizational velocity by bringing different technical people in as equal collaborators in the software development process and lifecycle. The positions have grown to cover concrete technical skills behind abstract organizational principles. I'll cover the role and responsibilities, technical skills, general salary range, and relevant certification or trainings.
The DevOps engineers is a team's duct tape, and that's a compliment if you ask me. Did you know they brought duct tape to the moon, just in case? Now that's saying something. DevOps Engineers routinely glue to spread technical systems together, and are artisans in their own way. They do a little bit of this, and a little bit of that, and like water, they expand to fit their environment. Responsibilities differ greatly between organizations, and perhaps even teams in the same organization. They tend to fill in the gaps, but tend to gravitate to a core technical competency around building, deploying and running software. This mixes all the roles discussed in the course, and more. Building, deploying and running software is no small task, it requires a diverse set of technical skills. The specifics vary by position, but broadly cover the following high level areas.
Automation enters pole position. DevOps engineers are expected to automate a great many things, from provisioning cloud infrastructure, to configuring software on those machines. Most positions ask for experience with one or more of the following, Ansible, Chef or Puppet. Then you'll need experience with a cloud provider like AWS, Google Cloud Platform, or Microsoft Azure. You may need experience working with physical hardware if the position is actually in a data center. Naturally you'll also need Linux experience. Candidates should be comfortable working and maintaining Linux environments. This is where you get the sys-admin flavor. Now don't worry about the specific Linux distribution here, Bash, also known as, "The force that binds all computers together," comes to the territory as well.
Oh, and don't forget containers. Docker and container orchestration are becoming the norm. Familiarity here is a must. You'll also need to equip your favorite programming language optimized for building and delivery here. DevOps engineers are generally not expected to program full-time, nor program at the level of software engineers. You should know how to build, and test and deploy a small application. TDD, or test-driven development skills will probably put you ahead of the pack. Common languages are Ruby, Python, Node.js and Golang.
DevOps engineers are valuable due to their organizational skill, background knowledge, and power to drive organizational change, thus they're some of the best-paying, and technically interesting positions in the industry. Now site reliability engineer, or SRE, is an extension of a DevOps engineer. Google essentially created this position to solve their Google-scale problems. Site reliability engineers focus on availability, latency, performance, efficiency, change management, monitoring, emergency response and capacity planning. An SRE applies software engineering skills to system operations and organizational processes. This role heavily overlaps with the DevOps engineer, so the same general set of skills apply. SREs are expected to be competent software engineers and system designers, but don't expect to skimp on the programming language skills here. Mix and match your cloud providers and configuration management tools.
Don't forget the OS fundamentals like the OSI networking model. Prepare yourself to collaborate with other engineers and non-technical stakeholders. SREs tend to be more collaborative than isolated because achieving their goals involves many different parties. Preparing yourself for either position is tricky, luckily there are some courses, books and certifications to help you along. You will find entry-level DevOps engineer positions, but not for SRE. SRE requires knowledge that only comes from hands-on work, and years in the field. The Cloud Academy DevOps and Cloud Computing learning paths cover these positions wonderfully. The courses should help you prepare for an AWS DevOps Engineer Certification, or perhaps cover some ground towards Google Cloud Architect. Don't consider those certifications as job requirements though, they are nice to have in my experience. The "DevOps Engineer Handbook," "Effective DevOps," and site reliability engineering books provide great insight into the DevOps mindset and technical focus areas.
A DevOps engineer position, or a site reliability engineering position provides a great breadth of technical experience and opportunities with the newest technology. If you like changing technical domains often, this may be a good fit. Now I've prepared a ton of questions to ask perspective employers, or your co-workers, to better understand what it means to work in either position. The next lesson covers the most established and well-known software position, the architect.
About the Author
Adam is backend/service engineer turned deployment and infrastructure engineer. His passion is building rock solid services and equally powerful deployment pipelines. He has been working with Docker for years and leads the SRE team at Saltside. Outside of work he's a traveller, beach bum, and trance addict.