DexEx est la juxtaposition de systèmes, technologies, processus et culture susceptibles d’influencer l’efficacité du développement de logiciels. DX entend s’intéresser à tous les composants de l’écosystème du développeur – depuis l’environnement jusqu’aux flux de travail en passant par les outils – en s’intéressant sur la manière donc ceux-ci contribuent à la productivité, la satisfaction et l’impact opérationnel du développeur.
Avantages
Globalement, la DevEx doit permettre de développer de travailler en toute confiance, d’avoir un impact plus important sur les projets et de s’épanouir davantage dans son travail. « Dans la plupart des cas, la capacité de développement de logiciels est le facteur limitant de l’innovation », estime ainsi Greg Mondello, directeur des produits chez GitHub, éditeur américain de logiciels. « Dès lors, toute amélioration de l’efficacité dans le développement de logiciels se révèle particulièrement précieux. »
Ces dernières décennies, les développeurs ont vu émerger de très nombreuses technologies, bibliothèques open source, langages et services, sans oublier les outils, API et autres solutions d’intégration, sans parler des approches DevOps et autres SecDevOps, qui ont contraint les développeurs à se former à de multiples produits. De plus, le développement se révèle toujours plus complexe et les environnements sans cesse plus distribués.
Selon le consultant McKinsey, une meilleure DevEx devrait permettre à la fois d’attirer et de retenir les meilleurs talents, d’améliorer la sécurité et d’accroître la productivité des développeurs. De son côté, le consultant Forrester cite des chiffres plus précis. Ainsi les entreprises enregistreraient 72% de gains de productivité pour les développeurs, 77% de réduction du délai de mise en production d’un logiciel, 85% d’impact supplémentaire sur les revenus, 75% d’augmentation de l’attraction et de la rétention de clients, et 82% d’amélioration de la satisfaction client.
Déploiement
Pour mettre en place le DevEx, trois aspects du cycle de vie du développement doivent être pris en compte. D’abord, l’onboarding qui concerne l’intégration du développeur et qu’il convient d’accélérer. Plutôt que d’engager un développeur, le former, lui faire écrire du code qui sera ensuite compilé puis contrôlé, un poste de travail automatisé peut être mis en place pour assister le développeur dans sa tâche. Ce poste proposera l’ensemble des logiciels concernés, les instructions de travail et des modules d’autoapprentissage, ce qui rendra le développeur plus rapidement productif.
Le second élément porte sur le travail au jour le jour du développeur en prévoyant un pipeline de travail optimal afin d’atteindre une intégration en continu et une mise en production en continu. Par ailleurs, il faudra s’assurer que le développeur dispose d’outils lui permettant de corriger rapidement un problème. Les tests de performance et de tuning ainsi que l’observabilité à chaque étape du processus seront par ailleurs prévus. D’autres étapes ne seront pas négligées, comme la vérification, le profilage (entendez les tests de performance), les tests de résilience, l’ingénierie du chaos (à savoir l’expérimentation sur un système distribué afin de renforcer la confiance dans la capacité du système à résister à des conditions turbulentes en production), le déploiement et enfin le monitoring de production.
Le dernier axe concerne le ‘refactoring’, un élément essentiel lorsque le code est très volumineux et doit être scindé en petits éléments à des fins de réécriture ou de mise à jour. Il est en effet important de ne pas apporter de nouvelles vulnérabilités au moment où le développeur se concentre sur la correction de ‘bugs’. A ce niveau, des contrôles de sécurité et de conformité sont indispensables et la disponibilité d’outils de débogage constituera un investissement nécessaire.
Lever des barrières
Il est clair que les organisations qui ne respectent pas la gestion du temps des développeurs et introduisent des processus, des outils et une culture qui freinent le flux de travail risquent de produire du logiciel de moins bonne qualité et à un rythme plus lent. De même, le DevEx ne doit pas être confondu avec l’expérience utilisateur (UX), même si celle-ci est l’un des aspects importants de cette approche. En effet, l’UX se concentre essentiellement sur l’interface utilisateur, alors que la DevEx couvre l’ensemble du trajet utilisateur.
Par ailleurs, dans le concept de DevEx, l’état flow (flow state) est un objectif majeur à atteindre. Cet état mental dans lequel un développeur est totalement immergé dans son travail se traduit en effet par une amélioration de la qualité, de la créativité et du rendement au travail.
En conclusion, le DevEx ne doit pas seulement être supporté et encouragé par le management, mais est de la responsabilité de l’ensemble de l’équipe de développement. Pas question donc de se contenter pour le CEO ou le CTO de prêcher en faveur du DevEx : tous les membres de l’organisation doivent considérer leurs collègues et équipes comme des utilisateurs et des clients, et travailler ensemble pour fournir des résultats de qualité.
Accompagner les entreprises : telle est la mission d’Aprico Consultants. Un accompagnement qui se veut à la fois stratégique et technologique. Pour supporter sa stratégie, Aprico a mis au point une méthodologie de travail originale articulée selon trois axes : smart, lean and agile. L’approche transversale d’Aprico, combinant métier, technologie et méthodologie, le tout associé à nos critères d’exigence, constitue l’un des facteurs clés de succès.