Présentation de l'expérience de développement
Le terme « expérience de développement », ou DevEx (Developer Experience) désigne les actions et impressions des équipes qui interagissent avec des outils et processus de développement. Pour l'améliorer, il faut simplifier les workflows, les outils et les processus de collaboration de manière à faciliter les activités courantes et à laisser plus de temps à l'innovation.
Les tâches quotidiennes de développement consistent à concevoir des applications logicielles et à en assurer le bon fonctionnement pour le compte de l'entreprise. Les équipes créent des solutions qui répondent à certains besoins métier ou informatiques, en s'efforçant de les faire adopter à grande échelle. L'objectif est de les distribuer en temps et en heure, en s'assurant qu'elles contiennent le moins de bogues possible, afin de répondre aux attentes des clients et utilisateurs.
La DevEx est une branche de l'expérience utilisateur axée sur les équipes de développement. Elle s'intéresse à leurs méthodes de travail, notamment aux effets des processus et outils de développement sur la qualité de leurs résultats, ainsi que sur leur niveau de satisfaction et de productivité.
Importance de l'expérience de développement
Grâce à la DevEx, les entreprises peuvent identifier les points forts et faibles des méthodes qu'utilisent les équipes d'ingénierie chargées de la création des applications et outils essentiels. Si elle contribue à la satisfaction des spécialistes du développement, cette discipline permet surtout de se démarquer de la concurrence : la DevEx stimule la productivité, ce qui influe positivement sur l'ingénierie et les résultats commerciaux globaux.
Une meilleure expérience de développement peut accélérer l'innovation, améliorer la qualité du code et augmenter l'efficacité de la transformation DevOps. Elle allège également la charge cognitive qui pèse sur les équipes, ce qui améliore en fin de compte la qualité de leur travail. Avec des workflows plus fluides et plus efficaces, la productivité et la satisfaction des spécialistes du développement augmentent, de même que leur fidélisation.
Défis liés à une bonne expérience de développement
Dans de nombreuses entreprises, les équipes de développement doivent maîtriser plusieurs outils disparates, spécifiquement conçus pour la sécurité, les tâches de CI/CD (intégration et distribution continues) et la gestion des produits, ou réservés à un environnement cloud ou sur site. Les phases de prise en main et de mise en œuvre d'un grand nombre d'outils peuvent entraver l'efficacité des équipes. En outre, ce niveau de fragmentation augmente la charge cognitive et ralentit le développement de logiciels.
Le manque de retour d'informations au cours du processus de développement pose un autre défi. Rien ne permet de détecter les problèmes liés au code avant qu'ils se présentent sous forme de bogues dans les rapports d'utilisation. Les ralentissements au niveau de l'assemblage, des pipelines de test de CI/CD et de la vérification du code freinent le cycle de développement logiciel. La détection des erreurs en amont permet de gagner du temps, d'éviter les remaniements et de motiver les équipes de développement.
La résistance organisationnelle peut également dégrader la DevEx. Les changements et ajouts soudains d'outils sans logique d'adoption claire risquent d'inciter les équipes de développement à rejeter les nouveaux processus.
Facteurs d'une bonne expérience de développement
Pour obtenir une expérience de développement positive, il est nécessaire d'unifier les outils, de réduire la charge cognitive et de mettre en place des boucles de rétroaction efficaces. Quand la DevEx facilite la tâche des équipes, celles-ci peuvent innover davantage et accélérer la distribution du code, dans un environnement qui leur est plus favorable.
Outils unifiés
Il peut s'avérer difficile d'opérer dans des environnements de développement qui reposent sur plusieurs solutions disparates et où chacun peut se servir de ses propres outils. Dans un cadre de travail unifié autour de modèles de référence bien définis, les équipes d'ingénierie peuvent évoluer entre plusieurs environnements de développement et de déploiement qui sont incompatibles sans devoir se familiariser en urgence avec de nouveaux outils pour accomplir leurs tâches.
Charge cognitive réduite
Avec la prolifération des architectures de microservices, des environnements cloud-native et des dépendances tierces, les systèmes informatiques actuels se complexifient. L'incohérence des outils et les lacunes de la documentation détournent les spécialistes du développement de leur mission première, à savoir écrire et distribuer du code, en les obligeant à chercher eux-mêmes les moyens d'accomplir leurs tâches.
Habituellement, il revenait aux équipes de développement de trouver l'outil adapté à leurs besoins ou de l'assembler elles-mêmes. Aujourd'hui, dans les grandes entreprises, elles constatent que la croissance complique et fragmente les workflows opérationnels ainsi que les mécanismes de mise à l'échelle. Avec l'ingénierie de plateforme, certaines tâches peuvent être facilitées :
- Automatisation de la distribution d'applications
- Renforcement de la collaboration et de la communication
- Réduction des erreurs
- Application des mesures de sécurité et de conformité
- Redéfinition des priorités des équipes de développement
Grâce à des outils intuitifs, à des portails en libre-service et à des environnements qui mettent en œuvre l'ingénierie de plateforme, les spécialistes du développement peuvent utiliser des plateformes de développement internes pour l'automatisation, les fonctionnalités en libre-service et la collaboration entre les équipes, en vue de rationaliser la distribution des logiciels. Rapides à prendre en main, les outils intégrés facilitent leur travail tout en limitant les processus non essentiels.
Boucles de rétroaction
L'efficacité et la productivité des équipes de développement dépendent en grande partie de la rapidité avec laquelle les outils qu'elles utilisent leur fournissent des informations. Lorsque les vérifications du code, la détection des bogues, l'automatisation des contrôles et des tests du code ainsi que l'exécution des suites de test en local interviennent plus tôt et vite, les spécialistes n'ont pas à attendre la validation et évitent de découvrir des problèmes trop tard. L'approche CI/CD et les boucles de rétroaction courtes leur offrent une visibilité précoce sur l'efficacité de leur code.
Collaboration
La collaboration et l'intégration entre les équipes de développement et d'exploitation (modèle DevOps) favorisent la création d'un environnement de travail propice à une communication efficace et au partage des connaissances. Dans la culture DevOps, les équipes de développement, qui travaillent généralement dans un environnement de développement standard, collaborent étroitement avec les spécialistes de l'exploitation informatique pour accélérer l'assemblage des logiciels, les tests et les lancements sans pour autant négliger la fiabilité. Cette approche peut améliorer la DevEx en mettant l'accent sur les fonctionnalités en libre-service et en fluidifiant la communication entre les équipes.
Mesure de l'expérience de développement
Les entreprises peuvent mesurer l'expérience de développement de deux manières : d'un point de vue quantitatif, avec le volume de résultats et le délai de mise sur le marché, et d'un point de vue qualitatif, avec le niveau de satisfaction, les performances et la communication.
Issu du programme de recherche DORA de Google Cloud, le framework DORA utilise cinq indicateurs de mesure clés pour évaluer les performances des équipes de développement logiciel :
- Fréquence de déploiement
- Délai de mise en œuvre des changements
- Taux d'échec des changements
- Délai de rétablissement des services
- Fiabilité
Ensemble, les indicateurs DORA permettent de surveiller ce que produisent les équipes au fil du temps et ainsi de quantifier les résultats métier.
Le framework SPACE aborde la productivité des équipes de développement sous un angle plus humain. Il couvre cinq aspects :
- Satisfaction et bien-être
- Performances (du point de vue de la qualité plutôt que de la quantité de code)
- Activité
- Communication et collaboration
- Efficacité et cadence
L'approche SPACE s'intéresse plus à la satisfaction des équipes qu'aux résultats bruts.
Loin d'être incompatibles, ces frameworks se complètent. Ils permettent d'obtenir une vue d'ensemble qui facilite l'évaluation de l'expérience des équipes de développement et favorise l'amélioration continue.
Rôle de l'IA et de l'automatisation
L'adoption de l'IA est source de difficultés pour les équipes de développement, qui doivent notamment se tenir au courant des nouvelles vulnérabilités, intégrer de nouveaux outils aux workflows existants et corriger de nouveaux bogues et problèmes de sécurité. Cette évolution permet cependant aussi d'améliorer la DevEx.
Opportunités
Avec l'aide des assistants de codage IA et des agents autonomes, les spécialistes du développement peuvent aller au-delà des configurations génériques. Les explications de code intégrées et les outils de réusinage contribuent à la simplification des architectures complexes et à la réduction de la dette technique. L'IA générative convertit les goulets d'étranglement de la distribution des logiciels en workflows très rapides et peu sujets aux retards. Beaucoup d'entreprises se servent de l'automatisation basée sur l'IA pour améliorer le pipeline de CI/CD. Elles incorporent des vérifications intelligentes du code ainsi que des mécanismes rapides de détection des bogues et de résolution des problèmes directement dans le processus de déploiement, ce qui leur permet d'identifier les défauts structurels avant la phase de révision humaine.
Difficultés
Les assistants IA produisent du code à un rythme que les réviseurs humains peinent à suivre. Par conséquent, le risque de manquer des bogues, des paquets obsolètes et des vulnérabilités augmente. L'approbation du code ajoute une couche de difficulté pour les équipes de développement.
Puisque la plupart des professionnels ont désormais accès à des assistants IA, leur utilisation pour la rédaction de code n'est plus vraiment un avantage. Avec la généralisation de l'intelligence artificielle, les équipes de développement changent de stratégie et l'utilisent plutôt pour valider, déboguer et gérer leur code. Elles jouent ainsi le rôle d'orchestrateurs stratégiques qui dirigent plusieurs agents IA à la fois. Cette pratique nécessite de penser à l'échelle du système et peut mettre en difficulté les spécialistes de l'ingénierie qui sont plus habitués à gérer les problèmes de logique localisés.
Possibilités d'amélioration
Pour améliorer l'expérience de développement, il faut d'abord simplifier les workflows afin de réduire la charge cognitive susceptible d'épuiser les équipes d'ingénierie au quotidien. Il est aussi nécessaire de renforcer l'efficacité des environnements de développement en local et de fournir des outils intuitifs qui raccourcissent les boucles de rétroaction.
Les entreprises peuvent mettre en œuvre des plateformes de développement internes reposant sur des processus d'automatisation en libre-service qui permettent de provisionner rapidement les ressources nécessaires, sans dépendre d'un système de tickets géré manuellement. Ces plateformes servent de hub centralisé pour accéder à la documentation à jour, ce qui simplifie l'intégration des nouveaux membres et facilite la communication entre les équipes. De plus, la direction de l'entreprise peut diffuser des enquêtes pour évaluer la qualité des expériences vécues. Les données qualitatives ainsi recueillies serviront à affiner progressivement tout l'écosystème.
Foire aux questions
Quels sont les défis d'intégration liés à la DevEx ?
Lorsque les nouveaux membres sont confrontés à des environnements de développement incohérents qui ne correspondent pas à ceux utilisés en production, ils passent parfois leurs premières semaines à résoudre les erreurs de configuration locales au lieu de se familiariser avec les codes bases. Ces difficultés d'intégration sont souvent aggravées par une documentation insuffisante (instructions d'installation inexistantes, dispersées entre plusieurs équipes ou obsolètes). Pour repérer la source de ces goulets d'étranglement, les entreprises diffusent souvent des enquêtes sur l'expérience de développement, afin de recueillir l'avis des ingénieurs récemment intégrés.
Quels sont les freins à la distribution des logiciels ?
En général, la lenteur de la distribution est due à l'inefficacité des boucles de rétroaction. Les requêtes « pull » en attente de vérification peuvent freiner les processus. En réduisant le délai de révision du code, les équipes peuvent accélérer la distribution des logiciels. Les problèmes liés au contrôle des versions et les conflits de fusion peuvent également retarder la distribution. La mise en correspondance manuelle du code entre plusieurs versions différentes demande du temps que les équipes de développement pourraient investir dans la création de fonctions.
Quelles sont les tâches de développement qui demandent le plus de temps et d'énergie ?
D'après une étude d'Atlassian, un grand nombre de spécialistes du développement déclarent perdre du temps en raison d'inefficacités et de l'incompatibilité entre les systèmes. Le recours à plusieurs outils hétérogènes, la gestion de la dette technique, la fragmentation des workflows et le manque de documentation figurent parmi les facteurs qui détournent les équipes de l'innovation.
Quels sont les effets de la dette technique et des choix d'architecture sur la DevEx ?
Les anciens codes bases peuvent représenter un obstacle pour les équipes qui travaillent sur du code existant, car ils manquent souvent de frontières architecturales clairement définies et de tests automatisés. Ces problèmes sont amplifiés lorsque les applications comportent des API internes ou tierces trop complexes avec un excès de code générique, des points de terminaison mal définis ou aucune méthode claire pour la gestion des erreurs. Ces défis peuvent transformer de simples mises à jour de fonctions en sources de frustration et de pénibilité pour les équipes de développement.
Nos solutions
La solution Red Hat® Advanced Developer Suite permet aux équipes d'ingénierie de plateforme de créer des expériences de développement sur mesure et en libre-service avec des fonctions de sécurité applicables. Elle réduit la charge cognitive et fluidifie la chaîne d'approvisionnement en associant les portails de développement aux contrôles de sécurité automatisés et à l'IA appliquée.
La plateforme Red Hat Developer Hub offre une vue unifiée des outils disparates, en plus de centraliser la documentation et de fournir des modèles de logiciels de référence préapprouvés. Elle accélère l'intégration et permet aux équipes de développement de passer directement du concept au codage.
Les fonctions de sécurité de l'offre Advanced Developer Suite, comme Exploit Intelligence, s'appuient sur le raisonnement de l'IA pour analyser et trier automatiquement les alertes de vulnérabilité dans le code. Au lieu d'enquêter sur chaque vulnérabilité potentielle, les équipes de développement peuvent utiliser Advanced Developer Suite pour hiérarchiser les corrections en fonction du risque réel pour l'environnement d'exécution des applications. Certains produits et composants intégrés (tels que Red Hat Trusted Artifact Signer, Red Hat Trusted Profile Analyzer et Red Hat Trusted Libraries) automatisent la signature cryptographique de code, le suivi de la provenance et la gestion des dépendances vérifiées de niveau 3 du framework SLSA (Supply-chain Levels for Software Artifacts), afin de renforcer la sécurité du code depuis sa réception jusqu'à son exécution dans un cluster.
Red Hat OpenShift® est une plateforme d'applications basée sur Kubernetes pour les entreprises qui permet de développer, moderniser et déployer des applications à grande échelle. Basée sur des normes ouvertes, elle intègre des fonctions de sécurité et de conformité pour aider à assembler, accélérer et mettre à l'échelle les charges de travail traditionnelles ainsi que celles basées sur l'IA. Cette solution rassemble des outils et des services qui rationalisent l'ensemble du cycle de vie des applications, du développement du code à la distribution et à la gestion des charges de travail dans les environnements hybrides. Red Hat OpenShift permet d'accélérer l'innovation et de simplifier l'adoption de l'IA grâce à un ensemble complet d'outils, sur tout type d'infrastructure. Avec cette plateforme, il n'est plus nécessaire d'utiliser et de gérer des outils disparates, ce qui élimine les problèmes d'interopérabilité et de portabilité.
La solution Red Hat OpenShift AI offre aux équipes de science des données et de développement un environnement évolutif et entièrement intégré pour assembler, entraîner et déployer des applications intelligentes. Elle facilite l'intégration de l'automatisation basée sur l'IA dans l'écosystème du client.
Les solutions Red Hat OpenShift Dev Spaces et Red Hat Desktop fournissent des environnements de développement cohérents et conteneurisés, dans le cloud et en local, qui reproduisent les conditions de production. Les équipes peuvent ainsi tester des applications et des agents IA en sandbox en toute sécurité avant de les déployer dans un cluster.
Moderniser l'expérience de développement dans le cloud hybride
Modernisez votre expérience de développement dans les environnements de cloud hybride et accélérez la distribution d'applications à l'aide des services Red Hat. Téléchargez le livre numérique.