Logo DevSkillerLogo TalentBoostLogo TalentScore

Comment filtrer les compétences les plus importantes des DevOps

25 avril 2018
Dépistage des compétences DevOps

There are few things in programming as imprecise as DevOps. The name itself is even in dispute with SysOps and SRE also popular ways to describe the field. Not only that, there is pas de paquet standard of DevOps skills.

The role sits somewhere between that of a software developer and an operations engineer so the screening is highly specific to the exact skills the employer is looking for. So how you do you screen for DevOps skills? To get a better idea of this, it is important to start at the beginning.

Qu'est-ce que DevOps ?

Le cycle des compétences DevOps

Source : Irma Kornilova

Créé pour soutenir le développement de logiciels agiles, l'ingénieur DevOps se situe quelque part entre le développeur de logiciels traditionnel et l'ingénieur d'exploitation. Comme Ernest Mueller la définit,


Ernset Mueller parle des compétences de DevOpsDevOps est la pratique des ingénieurs d'exploitation et de développement qui participent ensemble à l'ensemble du cycle de vie du service, de la conception au soutien à la production en passant par le processus de développement.

Source : l'administrateur agile

Source de l'image : l'administrateur agile


Autrefois, les développeurs construisaient un produit et le donnaient aux opérations pour le déployer. En cas de problème, les opérations créaient un ticket de support et le renvoyaient aux développeurs qui créaient une correction et le renvoyaient aux opérations. C'était une approche très cloisonnée qui était aussi lente que rigide.

DevOps challenges this approach by bringing the dev team and operations team together to be continuously creating, deploying, maintaining, and improving applications. And it brings big rewards. Puppet’s Rapport sur l'état des lieux des opérations de développement en 2017 a constaté que les meilleurs élèves (qui ont institué les DevOps) l'ont fait,

  • 46 des déploiements de codes plus fréquents
  • 440 des délais plus courts entre l'engagement et le déploiement
  • 96 des temps plus rapides signifient un temps de récupération plus long
  • 5 fois plus faible que le taux d'échec des changements (les changements ont 1/5 de chances d'échouer)

Tout cela est comparé aux organisations qui n'utilisent pas de DevOps.

Quelles compétences DevOps un recruteur doit-il rechercher ?

Contrairement à d'autres postes de génie logiciel qui ont un ensemble de compétences et une orientation définis, le poste de concepteur de logiciels est un peu plus difficile à cerner. Comme le souligne Mike Dilworth :


Mike Dilworth parle de DevOps SkillsDevOps est une culture, pas un rôle ! Toute l'entreprise doit faire du DevOps pour que cela fonctionne.

Source : Irma Kornilova

Source de l'image : AngelList


En d'autres termes, vous devez embaucher à la fois pour une expertise technique spécifique au domaine et pour la capacité à soutenir et à s'épanouir dans la culture agile dans laquelle opère DevOps. Par conséquent, un ingénieur DevOps doit posséder une combinaison de ces compétences :

Collaboration/compétences douces

A DevOps engineer is first and foremost a member of a team. It is not a role that encourages standing out as an individual. It instead supports working together to keep iterating and improving a product. As Alan Zucker, principal of Project Management Essentials puts it,


Alan Zucker parle des compétences de DevOpsLes ingénieurs de Great DevOps commencent par comprendre les gens, la culture et la façon dont l'organisation fonctionne (...) Ils élaborent ensuite une stratégie qui vise à simplifier l'environnement opérationnel global pour atteindre l'objectif de livraison continue.

Source : TechRepublic

Source de l'image : LinkedIn


Une connaissance des outils et des technologies

Il existe de nombreux outils et technologies qui pourraient être utilisés par un ingénieur du DevOps. Et ils sont souvent essentiels pour maintenir les concepts de base de DevOps. Il est important de voir si votre candidat connaît les technologies que vous utilisez et s'il est capable d'apprendre de nouvelles technologies selon les besoins.

Gestion de la configuration

Cela signifie qu'il faut pouvoir configurer de nombreux systèmes à l'aide d'outils d'automatisation.

Un ingénieur DevOps doit être capable d'utiliser des outils et des scripts pour pouvoir déployer et maintenir l'application tout en résolvant les problèmes qui surgissent en cours de route. Selon les spécificités du poste, il peut également être important de rechercher des compétences en matière de tests de gestion de la sécurité.

While configuration management tools are only a part of the toolbox that a DevOps engineer draws on, this is an area that can be easily tested, revealing a lot about the candidate along the way.

Méthodes de dépistage des compétences DevOps

Les compétences de DevOps étant très variables, la combinaison de quelques méthodes d'écran différentes vous permettra d'obtenir les meilleurs résultats.

Vérifiez le CV de vos candidats pour les compétences en matière de DevOps

La première chose que font la plupart des recruteurs pour réduire le nombre de candidats est probablement de passer au crible les CV. Nous avons préparé un petit glossaire pour aider les recruteurs à comprendre ce qu'ils recherchent.

Glossaire des compétences DevOps pour les recruteurs de techniciens

Méthodologies Agile, DevOps, Continuous delivery, Continuous integration, Microservices, Test-driven development (TDD), Infrastructure as Code
Langues de script Bash, Python, Ruby, Perl, PHP
Automatisation des infrastructures Marionnette, Chef, Ansible, Sel, Terraform, CloudFormation
Gestion du code source Git, Mercurial, Subversion
Services en nuage AWS, Azure, Google Cloud, OpenStack
Orchestration Kubernetes, Mesos, Swarm, Nomad
Conteneurs LXD, Docker, rkt
Gestion de projet Jira, Trello, Asana, Phabricator, Bugzilla
Intégration continue et prestation continue CruiseControl, Jenkins, Bamboo, Travis CI, GoCD, Team Foundation Server, Team City, CircleCI
Test TestComplete, TestingWhiz, Serverspec, Testinfra, InSpec, Consumer Driven Contracts
Suivi Prométhée, Nagios, Icinga, Zabbix, Splunk, ELK Stack, collectd, CloudWatch, Open Zipkin

Une fois l'examen du CV effectué, deux compétences principales peuvent être testées à l'aide d'une plateforme de test automatisée.

Que vous soyez un ingénieur qui déploie du code ou un opérateur qui le fait fonctionner, être capable de configurer votre serveur est une compétence essentielle. Mais cette compétence peut être divisée en deux parties. La première est la gestion de la configuration, la seconde est la mise en œuvre de celle-ci dans la configuration d'une machine. Et comme vous allez le voir, ces deux compétences nécessitent des outils différents pour les tester efficacement.

Gestion de la configuration Les compétences DevOps nécessitent un test de codage

L'un des principaux problèmes d'un ingénieur DevOps est la gestion manuelle de différentes configurations de serveurs. Cela peut être très pénible car cela transforme les ingénieurs en quelque chose qui ressemble plus à un pompier opérationnel qu'à quelqu'un qui construit et déploie des applications. Par conséquent, une compétence clé d'un grand ingénieur DevOps est la capacité à multiplier leur efficacité en écrivant du code de gestion de configuration.

Put another way by Adam Kadzban, lead DevOps engineer at kCura,


Adam Kadzban parle des compétences de DevOpsL'époque des systèmes d'infrastructure configurés manuellement est révolue (...) L'infrastructure doit être approvisionnée et configurée avec du code, sinon vous vous noierez dans l'assistance.

Source : TechRepublic

Source de l'image : LinkedIn


Cette attitude s'explique par le fait que de nombreuses tâches manuelles peuvent être automatisées à l'aide d'outils dédiés comme Puppet et Chef ou même avec des langages de script comme Python, Ruby et Bash. La question est donc de savoir quelle est la meilleure façon de tester ces compétences ?

Un test de travail est le meilleur moyen de vérifier les compétences en matière de script

Un code Puppet n'est pas simplement un algorithme. Il s'agit plutôt d'une application qui régule le système. C'est pourquoi un test d'échantillons de travail est probablement la meilleure façon de tester les bonnes compétences. Nous avons étudié l'efficacité de tests d'échantillons de travail ailleurs sur ce blog et comment les utiliser pour des problèmes de codage courants mais comment les appliquer à l'écriture de code Puppet pour la gestion de la configuration ?

A good place to start is with looking at the process you need to go through to write an automation code. It is really pretty simple,

  1. Décrire la configuration en code
  2. Effectuer des tests contre elle

The first thing your candidate needs to do is describe the configuration in code. So say you want them wanted to create a Puppet module for a file server. This is a pretty straightforward DevOps task which can be turned into a work sample test pretty straightforwardly, like in this task:

Tâche de serveur de fichiers marionnette pour tester les compétences DevOpsIl est normal d'avoir un squelette de module préfabriqué pour orienter votre candidat dans la bonne direction et définir ensuite la manière dont vous voulez que le serveur de fichiers soit configuré. Lorsqu'il est réalisé avec une plate-forme comme DevSkiller, le code d'automatisation qui est produit peut être soumis à des tests unitaires afin que vous puissiez vérifier la robustesse du code et trouver d'éventuelles failles.

Et ce n'est pas seulement Puppet qui peut être testé de cette façon. Avec le constructeur de tests de DevSkiller, votre responsable technique peut créer des tâches de script dans plusieurs technologies, dont Chef, Bash, Python, Ruby et Go. Ce test vous donnera une bonne indication de la manière dont un ingénieur DevOps peut maximiser son efficacité.

Si un ingénieur DevOps peut effectivement automatiser les tâches, il pourra alors passer à des tâches de plus haut niveau, comme la mise en œuvre de nouvelles fonctionnalités. De plus, une fois que vous avez commencé à tester vos compétences de codage, vous pouvez passer à d'autres fonctions DevOps, comme le test des contrôles de git et l'écriture de code en tant qu'infrastructure.

Mais écrire un code d'automatisation n'est qu'une partie du puzzle. Tôt ou tard, un ingénieur DevOps devra effectivement configurer une machine. C'est un problème car la plupart des entreprises ne se sentent pas à l'aise avec l'idée qu'un candidat puisse prendre le contrôle d'un de leurs serveurs. Après tout, pensez aux dégâts qu'ils pourraient causer à votre système. Mais ce qui serait encore pire, c'est que vous engagiez quelqu'un sans savoir s'il peut réellement configurer un serveur sans que le pire ne se produise.

Tester la configuration du système Développer des compétences avec une machine virtuelle

Un défi de codage peut tester le fonctionnement d'un script, mais il faut une machine réelle pour voir si un ingénieur DevOps peut configurer un système. C'est parce que les serveurs ne sont pas comme un programme.

So how can you test whether a DevOps engineer can configure a server without using one of your own? Use a virtual machine. These are self-contained systems, completely separated from any of your critical systems, which allow you to do just about anything you want. And they are perfect environments in which to see if your DevOps engineer can manage all of the different inputs, changes, and issues they face configuring a system.

Le Rootskiller vous donne une fenêtre sur les compétences de votre candidat en matière de DevOpss

Le Rootskiller peut être utilisé pour tester les compétences de DevOpsAt its heart, Rootskiller is a virtual machine. Like any computer, you can give it commands, configure programs on it, and even run it into the ground if you want to. At the same time, it responds like any other system, processing your configurations while reacting to poorly executed commands and outside data. So how does this help you test DevOps?

Prenez une tâche comme celle-ci :

Tâche de docker pour tester les compétences DevOpsToutes les technologies concernées sont des technologies communes qu'un ingénieur du DevOps utilisera pour un déploiement continu. GNU/Linux est l'un des systèmes d'exploitation côté serveur les plus répandus et Docker est un outil commun utilisé pour les conteneurisations. Ces technologies sont une partie essentielle d'un déploiement continu, l'un des principaux piliers de DevOps.

Ainsi, après avoir démarré la machine virtuelle, le candidat configurera le serveur selon les instructions présentées, mais ce n'est pas tout. Une fois la tâche résolue, des tests sont effectués sur la configuration que le candidat a créée, en vérifiant si elle fonctionne, quels sont les bogues présents, si elle résout les cas limites pertinents et si elle est stable.

En plus d'analyser la solution réelle, la session entière est enregistrée pour une capture d'écran vidéo. De cette façon, un intervieweur technique peut voir les choix que le candidat fait et voir comment il réagit aux nouveaux défis.

Bien que la question ici concerne la configuration de Docker sur une machine GNU/Linux, l'outil de construction de tests signifie que vous pouvez configurer cela pour de nombreuses technologies et techniques de déploiement côté serveur comme Pile LAMP.

Que faire ensuite ?

Après avoir examiné votre CV, testé les compétences de votre candidat en matière de script et vu dans quelle mesure il est capable de configurer un système, faites venir les meilleurs candidats pour un entretien. Cela peut impliquer une combinaison de appariement des codes et questions de comportement.

Mais avant cela, vérifiez DevSkiller pour voir à quel point il est facile de filtrer automatiquement les compétences DevOps.

Partager le poste

C'est plus qu'un simple bulletin d'information

Recevez des informations utiles directement dans votre boîte de réception et apprenez-en davantage sur l'embauche des techniciens.

Vérifier et développer les compétences de codage de manière transparente.

Voir les produits DevSkiller en action.

Certifications de sécurité et conformité. Nous veillons à ce que vos données soient sûres et sécurisées.