DevOps : six questions clefs pour réussir son entretien d'embauche
Voici quelques questions incontournables que l’on vous posera certainement lors d’un entretien, et la manière d’y répondre pour faire ressortir au mieux votre expérience, vos connaissances des outils et votre savoir-faire pluridisciplinaire.
La fonction DevOps n'est pas un poste isolé. En fait, ce n'est même pas un poste. C'est une nouvelle approche de l'ingénierie logicielle interdisciplinaire. Discipline combinant développement (Dev) et opérations (Ops), le DevOps associe des connaissances en programmation à des compétences en assurance qualité (QA) et à des flux de tâches opérationnels, dans le but d'obtenir un développement et un déploiement continu des logiciels.
Pour intégrer et administrer un service DevOps, les développeurs de demain doivent faire montre de compétences et de savoir-faire.
Entraînez-vous à répondre à ces questions d’entretien d'embauche, afin de montrer vos talents en vue d'obtenir le poste convoité.
Parlons de votre formation et de votre expérience
Distinguez-vous en mettant l'accent sur votre compréhension des principes DevOps, et montrez à votre interlocuteur en quoi votre formation et votre expérience vous ont préparé à ce rôle.
Si l'étendue des fonctions DevOps varie, la majorité des rôles de base nécessitent une licence en informatique ou dans un domaine connexe qui couvre la programmation, les tests QA et les composants de l'infrastructure. Les rôles DevOps évolués peuvent, quant à eux, nécessiter des formations supérieures en architecture système et conception logicielle.
Mentionnez vos certifications en virtualisation, Cloud et langages de programmation spécifiques.
Complétez vos compétences en mentionnant d'éventuelles formations en ligne axées sur des éditeurs particuliers, et consacrées à des outils de développement, tels que les principaux analyseurs de code, ou à des outils d'automatisation/administration des systèmes.
Comparez le descriptif du poste DevOps à votre CV. La plupart des rôles DevOps de niveau débutant exigent de trois à cinq ans d'expérience en développement et test de code. Les postes DevOps qui impliquent opérations et déploiement peuvent exiger au moins quatre années d'expérience côté opérations - par exemple, en matière d'administration des systèmes dans des datacenters ou des infrastructures Cloud. Mettez en valeur votre expérience de l'administration des systèmes et de l'automatisation des flux, du provisioning et de la gestion des workloads, ainsi que de la gestion des révisions.
Sachant que DevOps s'appuie sur une étroite collaboration entre les équipes de développement, de tests et celle des opérations, toute compétence de gestion interdisciplinaire se révèle également précieuse au cours de l'entretien. Expliquez à l'employeur comment vous permettez à des équipes disparates de surmonter des obstacles, de travailler ensemble, de tenir des calendriers de diffusion draconien et de s'adapter à de nouveaux outils et technologies.
Quelle est votre expérience en matière de systèmes ?
Pour gérer le déploiement de workloads, les professionnels DevOps ont besoin de compétences en matière de serveurs et de systèmes, notamment d'architectures et de matériel réseau.
Certains postes DevOps exigent une connaissance approfondie des systèmes, notamment de la gestion de serveurs en clusters. A ce niveau, les ingénieurs DevOps doivent analyser les capacités des systèmes, et mettre en œuvre des mises à niveau dans un souci d'efficacité, d'évolutivité, de stabilité ou de résilience.
Démontrez de solides connaissances des systèmes d'exploitation et des technologies complémentaires, telles que la sécurité réseau, les VPN et la configuration de serveurs proxy.
Pour un provisioning rapide des workloads – c'est-à-dire l'allocation de ressources de traitement à de nouvelles VM pour prendre en charge un déploiement à venir – le DevOps s'appuie sur la virtualisation. Aussi, faites montre de connaissances détaillées sur les principaux hyperviseurs. Ces connaissances doivent inclure les tactiques de sauvegarde, de migration et de gestion du cycle de vie, en vue de protéger, d'optimiser voire de récupérer des ressources informatiques. Certains environnements peuvent mettre l'accent sur le développement de logiciels de microservices adaptés à des conteneurs virtuels.
Côté opérations, les compétences doivent inclure une connaissance approfondie d'outils d'administration des systèmes tels que Microsoft System Center, Puppet, Nagios et Chef. Les postes DevOps qui mettent l'accent sur les opérations exigent des compétences pointues en analytique, en dépannage et en résolution de problèmes.
Expliquez comment vous avez contribué à accroître l'efficacité de traitement tout en économisant sur les coûts. Par exemple, dans le cadre d'un projet de consolidation de serveurs ou d'amélioration de l'affectation des ressources et de la surveillance des performances.
Avec quels outils DevOps avez-vous déjà travaillé ?
DevOps implique un cycle constant programmation-tests-déploiement-optimisations. Les outils adaptés dépendent donc de la taille et des spécialisations de l'équipe au sein de l'entreprise.
Des outils de contrôle des versions des builds/éditions, et de gestion des configurations logicielles - Apache Subversion, Mercurial ou encore Fossil - facilitent le suivi des demandes de changement.
Ces outils permettent aux développeurs de respecter plus facilement les bonnes pratiques et les stratégies de l'entreprise quand ils modifient les logiciels.
Les outils d'intégration continue - tels que Rational Build Forge, Jenkins et Semaphore - fusionnent les copies de tous les développeurs d'un code fonctionnel en une version centralisée. Ces outils sont importants dans les groupes de grande envergure, dans lesquels des équipes de développeurs exploitent simultanément la même base de code.
Les experts en QA utilisent des analyseurs de code pour tester les logiciels, à la recherche de bogues, et de problèmes de sécurité et de performances. Si vous avez utilisé la solution Fortify Static Code Analyzer de HP, expliquez comment elle a permis d'identifier certaines failles de sécurité au sein des langages de programmation.
Parlez également d'outils, tels que CodeSonar de GrammaTech, que vous avez utilisés pour identifier des fuites de mémoire, des sous-exploitations du tampon et autres défauts, dans le cadre de codes C/C++ et Java.
Il est essentiel que vous maîtrisiez convenablement les principaux langages -- Ruby, C#, .NET, Perl, Python, Java, PHP, Windows PowerShell -- et que vous soyez à l'aise avec les environnements des systèmes d'exploitation associés -- Windows, Linux et Unix.
Quelle est votre expérience pratique du développement de logiciels Cloud ?
Attendez-vous à ce que la prochaine question de l'entretien porte sur votre expérience des services Cloud, un aspect qui coïncide avec l'approche informatique itérative et intégrée du DevOps.
Nombre de professionnels DevOps ont besoin d'une expérience pratique avec les principaux fournisseurs de Clouds publics, tels qu'Amazon Web Services (AWS), Azure et Google Cloud.
Faites part de vos connaissances de l'utilisation des plateformes Cloud : provisioning de nouvelles instances, codage de nouvelles itérations logicielles avec les API du fournisseur ou des SDKs, configuration de clusters pour faire évoluer les capacités de traitement, gestion des cycles de vie des workloads, etc.
C'est le moment idéal pour aborder les instances Cloud en conteneurs en tant que substituts des classiques machines virtuelles (VM). Le Cloud « event driven », tel que celui d'AWS Lambda, propose une nouvelle approche du développement logiciel ; une aubaine pour les candidats DevOps expérimentés.
Une compréhension exhaustive des outils tiers fait ressortir votre capacité à élargir le DevOps à des projets Cloud. Mettez l'accent sur les projets et les tâches que vous avez menés à bien au moyen de ressources Cloud, plutôt que de vous contenter d'énumérer des produits.
Pendant l'entretien, mentionnez votre expérience de la gestion du Big Data. Cette discipline fait appel à des infrastructures Cloud fortement évolutives pour s'attaquer à des tâches de traitement complexes.
Donnez-moi un exemple de la manière dont vous gérez des projets
Dans votre réponse, soulignez votre exposition à des problèmes de gestion de projets DevOps. Focalisez cet échange sur la résolution de problèmes métier complexes.
En tant que professionnel endossant des responsabilités d'encadrement, vous devez montrer une compréhension claire des tactiques de gestion de projet. Discutez de la manière dont vous travaillez avec des équipes pour définir des objectifs, rationaliser des flux de tâches, éviter les dérives, rechercher et introduire de nouveaux outils ou infrastructures, traduire des besoins en flux de tâches et assurer le suivi.
Parlez également de la manière dont l'intégration continue, la gestion des versions, ainsi que d'autres outils permettent de maintenir le cap dans des projets interdisciplinaires.
Les rôles DevOps à haute responsabilité, tels que celui d'ingénieur DevOps en chef, requièrent davantage de sens des affaires et de compétences humaines. Partagez vos expériences de résolution de conflits et de litiges au sein d'équipes.
Quels outils susceptibles de vous aider dans ce rôle vous sont familiers ?
Cette question de l'entretien sur DevOps peut réellement vous faire passer de « qualifié » à « candidat idéal ».
Le DevOps est si diversifié et si inclusif qu'il se limite rarement à la programmation, aux tests et aux systèmes. Un projet DevOps pourra s'appuyer sur des plateformes de base de données (SQL ou NoSQL), du In-Memory ou assimilé (comme Redis), ou des systèmes de suivi des problèmes de gestion et de configuration, tels que Redmine.
Les organisations qui favorisent une approche normalisée du développement logiciels recherchent des candidats qui connaissent bien les techniques et outils Agile de gestion du cycle de vie des applications.
Quant aux postes DevOps largement focalisés sur les opérations dans un secteur réglementé, ils pourront être décrochés par un candidat familiarisé avec les pratiques ITIL.