Trois ingrédients pour des versions de logiciel d'excellence

Versez une dose d'architecture et deux doses de travail d'équipe. Ajoutez de l'automatisation et mélangez.

Dan Radigan Dan Radigan

À un moment ou à un autre de votre carrière, si ce n'est pas déjà le cas, vous serez impliqué dans une livraison de logiciel monolithique. Autrement dit, une livraison avec des interdépendances et des bogues récalcitrants, qui oblige l'ensemble de l'équipe à rester sur le pont en permanence. Sans parler du fait qu'une fois en production, elle nécessitera probablement plusieurs correctifs.

L'expédition du code (la livraison) constitue un baromètre puissant de l'agilité pour les développeurs de logiciels. Chaque effort consenti pour accélérer la planification, la programmation et les tests est voué à l'échec si la livraison n'est pas un processus fluide. Pour que la livraison devienne une étape agile, l'automatisation est essentielle. De même, il est crucial de réunir, dès le début de la phase de développement, les encodeurs et les opérateurs. Enfin, il convient de mettre en pratique l'intégration continue et de traiter les défauts immédiatement.

L'une des caractéristiques du développement agile consiste à garder le code dans un état « livrable ». Toute la planification lean et tout le développement itératif du monde ne signifieront rien si vous n'êtes pas en mesure de livrer le code au moment où vous décidez qu'il est prêt à l'être. 

Les versions de logiciel d'excellence commencent par une architecture modulaire

Dans n'importe quel programme logiciel, il vaut toujours mieux que les livraisons puissent se faire souvent et facilement. L'équipe peut faire en sorte que la livraison devienne une étape naturelle de sa culture Agile en développant (ou par refactoring vers) une architecture modulaire. Au lieu d'avoir une seule grande application (comme l'application monolithique mentionnée plus haut), vous pouvez la modulariser en plusieurs parties au début du programme. Regroupez les fonctionnalités similaires en applications ou composants plus petits et définissez des contrats d'API clairs entre chacun de ces composants et applications. Ces API peuvent être testées automatiquement avec chaque build afin d'en assurer la compatibilité et de réduire les risques lors de la livraison du logiciel.

La modularité de l'architecture signifie que vous n'êtes pas obligé de livrer la pile logicielle dans son intégralité dans une livraison de style « big bang ». De plus, les contrats d'API simplifient l'actualisation des composants et garantissent la compatibilité entre les versions. En bref, les livraisons modulaires nécessitent moins de parties mobiles. Et cela se traduit par des livraisons plus simples.

Les versions de logiciel d'excellence s'appuient sur d'excellentes relations

Le développement se fait rarement dans le vide. En effet, un développement d'excellence implique toute l'équipe, depuis la gestion de produit jusqu'aux opérations. Par exemple, l'équipe des opérations est un partenaire clé pour la livraison du logiciel en production, étant donné qu'elle contribue à le transmettre aux utilisateurs.

Les équipes de développement peuvent aider à informer et à habiliter les équipes des opérations au moyen des techniques suivantes :

  • Faire en sorte que la nomenclature soit claire pour chaque livraison. Les équipes des opérations ne disposent pas toujours du même niveau de contexte que l'équipe de développement à propos de la livraison.
  • Pour chaque ticket résolu dans la livraison, fournir un lien qui renvoie vers votre outil de suivi des tickets et à votre système de contrôle des sources afin que l'équipe des opérations dispose du même niveau de contexte en cas de problème pendant le déploiement.
  • Certains problèmes apparaissent parfois lorsque vous poussez le code depuis l'environnement de développement vers l'environnement de simulation. Formuler ces problèmes, étant donné qu'ils peuvent surgir à nouveau lors du push vers la production.
  • Certains bogues peuvent apparaître lors du déploiement. Par conséquent, toujours fournir à l'équipe des opérations une procédure d'escalade claire afin de résoudre les problèmes de façon fluide.

Les équipes des opérations peuvent aider leurs homologues du développement via les suggestions suivantes :

  • Lorsque des problèmes surviennent en production, prendre le temps d'en comprendre les causes premières et les solutions. Ainsi, ces problèmes seront évités (ou gérés plus facilement) à l'avenir.
  • Re-migrer les données de configuration de l'environnement de production vers les environnements de simulation et de développement afin d'éviter toute dérive de configuration.

Lorsque le code migre depuis le développement vers la simulation, puis vers la production, la configuration clé et les données utilisateur migrent dans l'autre sens : de la production vers la simulation et vers le développement. Cette relation bidirectionnelle permet à l'environnement de développement de modéliser étroitement l'environnement de production. Il y a ainsi moins de bogues et moins de surprises le jour de la livraison.

Livraison de logiciels exceptionnels | Atlassian – Le coach Agile

Les versions de logiciel d'excellence sont simples en termes de « push »

Automatisez ! Automatisez ! Automatisez !

L'automatisation d'une livraison est la meilleure façon d'améliorer la culture de la livraison. Si le processus n'est pas encore automatisé, commencez par automatiser la livraison vers l'environnement de simulation. Une fois que tout le monde en constatera la simplicité, l'étape suivante viendra tout naturellement : automatiser les déploiements en production.

Si les livraisons sont difficiles, faites en sorte qu'elles deviennent une pratique fréquente, même s'il ne s'agit que de livraisons vers la simulation. Si elle ressent les points de douleur de la livraison, l'équipe de développement suscitera l'innovation afin de la faciliter (et de l'automatiser).

Les tests automatisés et l'intégration continue sont des disciplines clés qui favorisent des livraisons d'excellence. Assurez-vous que les délais restent aussi courts que possible pour les builds et les tests. Et souvenez-vous que les builds qui sont faciles à valider sont plus simples à livrer. Cela est dû au fait que le cycle de validation suit plus étroitement l'équipe. 

Les versions de logiciel d'excellence sont formidables !

L'une des caractéristiques du développement agile consiste à garder le code dans un état « livrable ».

Notre méthode

Nous estimons que, pour nos structures SaaS, les livraisons sont plus faciles à gérer si elles sont petites et fréquentes. Pour les produits à télécharger, une collaboration étroite entre les équipes de développement, des opérations et d'ingénierie de build est extrêmement productive. Ces groupes doivent travailler ensemble pour automatiser les livraisons et adapter, de façon proactive, l'automatisation aux modifications qui seront apportées ultérieurement aux produits. Chez Atlassian, beaucoup d'équipes déploient automatiquement chaque build de master réussi dans un environnement de test. Lorsque le moment est venu d'envoyer une livraison en simulation ou vers les clients, ces équipes peuvent déclencher l'automatisation du déploiement via un simple bouton. 

Pour les développeurs de logiciels que nous sommes, la livraison doit être le point d'orgue du cycle d'innovation. Nous pouvons enfin observer les clients interagir avec le code que nous avons rédigé et nous fournir leur feedback. Voilà ! En faisant en sorte que la livraison devienne une étape naturelle de votre journée de travail, vous simplifiez le transfert du code vers la production. Et c'est tellement satisfaisant de pouvoir dire : « C'est mon code ! ».