The Definition of the DevOps Engineer
When thinking about the DevOps Engineer’s job description, the position is best defined as the contraction of words ‘Developer’ and ‘Operations’; ‘Operations’, in the sense of ‘Exploit’ aka. ‘Use’ of an application delivered by a developer.
Traditionally, development teams and production teams are separate and they communicate solely through means of e-mails and procedures: the DevOps Engineer transcends these boundaries between development and production.
Roles and Tasks of a DEVOPS Engineer
The DevOps Engineer’s purpose is to set up the complete automatization of the production launch for an application, starting with a developer’s commitment of a file. Human intervention must be reduced as much as possible, in order to speed up delivery.
To make the deliveries more reliable, the DevOps Engineer must ensure the set up of a repeatable process, in order to check the quality of the developed software. The verification is made every step of the way, with the help of a chain of monitoring tools.
Based on the team’s maturity and the criticality of the software, the DevOps Engineer must set up a ‘gated check-in’, to ensure unit tests are successfully run. DevOps Engineers may also integrate quality control tools for source code or user test scenarios. At each stage, these tools must automatically decide whether to accept or reject the current build candidate which must be sent into production.
The DevOps Engineer’s skills
The DevOps Engineer is a pivotal role that requires an excellent understanding of the software manufacturing steps, as well as the deployment challenges for that software on various platforms, before reaching production.
There is a vast set of technical skills that needs to be mastered by the DevOps Engineer:
- Programming languages used by the development team: be it Mobile, Front- or Back-End;
- Construction tools (example: Jenkins, Team Foundation Server) and virtualization/ image tools such as Docker, Kubernetes or Vagrant
- Code Repository: Git, SVN or Team Foundation Server
- Scripting languages: Bash/PowerShell or KornShell
- Operating systems (Linux/Windows)
- IaaS or PaaS service providers (e.g. AWS/ Azure or OVH)
- Automated testing tools (QTP) or deployment monitoring tools (for instance, Octopus Deploy).
Of course, a DevOps Engineer can’t control everything, so he/she need to learn quickly how to use innovative deployment tools or technologies. This is a fairly new profession where a DevOps Engineer is a Jack of all trades.
There’s no formal training that allow you to become a DevOps engineer. They are usually developers who are interested in the deployment aspects, or operating engineers, wanting to work more successfully with development teams.
How do you evaluate the skills of a DevOps Engineer?
Seeing that the DevOps Engineer is by definition a Jack-of-all-trades, it’s quite difficult to find the DevOps Engineer who is ‘perfectly’ suited to your needs.
Avoid a keyword-based selection approach and don’t rely solely on targeted technical tests (even thought they can refine or highlight skills related to a particular tool).
- A “process” approach: is this DevOps Engineer able to describe processes and environments in a clear and understandable manner?
- A “tools” approach: what technical environments have they used? Can they cite equivalences? For instance, an AWS expert who is not familiar with Azure could be problematic.
- A “tech savvy ” approach: what is the reading material used by the DevOps Engineer to stay on top of the problem in a field where each week a new tool emerges or is updated?
You catch more flies with honey than with vinegar!
You really need to see the DevOps Engineer as the cornerstone of your software development ‘factory’: just like the Software Architect or Product Manage are key elements, the DevOps Engineer must not be seen as merely a cheap ‘SysOps’ or a developer who turned a wrong corner at some point.
If your goal is to deliver a new version of your app, every month, an investment between £40k and £55k gross per year would be money well spent.