Article original : How to Speed up Your Software Development Pipeline

Par Andrej Kovacevic

Si vous avez déjà géré un pipeline de développement logiciel – ou si vous prévoyez de le faire – il y a une chose que vous devrez prioriser par-dessus presque tout le reste : la vitesse.

Peu importe le type de logiciel sur lequel vous travaillez, vous serez toujours sous pression pour accélérer les livrables de votre équipe.

Une partie de cette pression peut provenir des parties prenantes du projet qui ne comprennent pas comment fonctionne le développement logiciel. Parfois, c'est parce que votre équipe de gestion ou votre client craint qu'un concurrent ne les devance.

Quelle que soit la raison, vous devrez connaître des stratégies pour accélérer le rythme de votre équipe sans compromettre la qualité ou la sécurité du code.

Ce n'est pas aussi difficile que vous pourriez le penser. Il suffit de mettre en place les bonnes procédures et de les soutenir avec la bonne technologie. Pour vous aider, voici cinq conseils conçus pour aider les équipes de développement logiciel à travailler aussi rapidement et efficacement que possible.

En les mettant tous en œuvre, il est possible de maintenir un rythme rapide de livrables sans sacrifier quoi que ce soit. Commençons.

1. Créer une feuille de route détaillée et s'y tenir

Peut-être la chose la plus importante qu'un responsable de développement puisse faire pour maintenir un flux de travail fluide dans le pipeline de son équipe est de prendre le temps de créer une feuille de route de développement détaillée pour chaque projet avant de commencer le travail.

Une feuille de route efficace délimite toutes les étapes majeures nécessaires pour compléter le projet et attribue les grandes parties du travail à des membres spécifiques de l'équipe dès le départ.

C'est une étape que de nombreux responsables de développement logiciel bâclent – croyant que chaque minute passée à planifier et non à coder est une minute perdue.

Rien, cependant, ne pourrait être plus éloigné de la vérité. En prenant des décisions majeures sur le processus de développement à l'avance, l'équipe n'aura pas à ralentir plus tard. De plus, le processus de construction de la feuille de route révèle souvent des obstacles qui auraient arrêté le travail net au milieu du projet.

Il est toujours préférable de dégager la route à l'avance avant de se mettre au travail si vous voulez faire avancer un projet logiciel à un rythme soutenu.

2. Définir des limites pour le travail en cours

Image Source de l'image : NicoElNino / Adobe Stock

De nos jours, la plupart des pipelines de développement logiciel se conforment aux méthodologies de gestion de projet Kanban ou Scrum. Et même ceux qui ne le font pas incluent souvent une forme de tableau de style Kanban pour suivre les tâches du projet à divers stades d'achèvement.

Ces éléments de travail en cours (WIP) aident les responsables à maintenir une visibilité sur les progrès et la capacité de leur équipe à gérer plus de travail.

Le problème est que le « glissement de portée » s'installe souvent, et il est très facile pour la liste WIP d'une équipe de développement de devenir ingérable en un rien de temps. Lorsque cela se produit, les membres de l'équipe essaieront de multitâche, passant d'un élément WIP à l'autre pour essayer de vider l'arriéré. Lorsqu'ils le font, il est courant que le rythme de l'équipe ralentisse et que des erreurs commencent à s'immiscer dans le code.

Le problème est que, contrairement à ce que croient de nombreux programmeurs, les humains ne multitâchent pas bien. La solution, dans ce cas, est de les empêcher d'essayer.

Définir des limites strictes sur le nombre d'éléments WIP autorisés à chaque étape du flux de travail est un excellent moyen de le faire. Cela garantit que les membres de l'équipe ne morderont pas plus qu'ils ne peuvent mâcher et accompliront plus de tâches en moins de temps qu'ils ne l'auraient fait autrement.

3. Centraliser et automatiser la gestion des secrets

Une équipe logicielle travaillant rapidement peut produire de grandes applications, mais souvent au détriment de la sécurité. Cela est particulièrement vrai pour les équipes travaillant avec un ensemble de serveurs, de services et de conteneurs répartis sur plusieurs systèmes disparates.

Dans ces situations, la plupart des équipes de développement désigneront une seule personne pour gérer l'accès à tous les systèmes et données nécessaires. Cependant, cela crée un goulot d'étranglement, car toutes les demandes d'accès doivent passer par cette personne, et les développeurs ne peuvent pas toujours avancer jusqu'à ce qu'ils reçoivent les identifiants nécessaires.

La solution au problème est de centraliser et d'automatiser la fourniture et la révocation d'accès, et de l'automatiser dans la plus grande mesure possible.

Il existe une variété d'outils open-source qui peuvent aider à faciliter cela, ainsi qu'une variété de solutions de gestion des secrets basées sur le cloud.

L'un des exemples les plus connus est la solution open-source HashiCorp Vault. Cependant, ce n'est pas la solution la plus facile à mettre en place et à utiliser. Pour certaines équipes de développement, l'installation et la configuration du système lui-même sont suffisamment difficiles pour les dissuader de l'utiliser.

Il est également utile de noter que les développeurs utilisant Google ou AWS comme plateforme de développement peuvent utiliser leurs outils de gestion des secrets respectifs. Ils sont conçus pour s'intégrer avec le développement de projets prenant place sur ces plateformes. Cela signifie qu'ils sont généralement faciles à intégrer dans les flux de travail sans trop de tracas.

Ou, pour les équipes de développement travaillant dans des environnements multi-cloud, une solution comme Akeyless est souvent un bon choix. Puisqu'elle est basée sur une API, elle s'intègre avec la plupart des types de systèmes sécurisés dont dépendent les développeurs. Et, puisque elle fonctionne sous le paradigme de confiance zéro, elle ne nécessite pas que les développeurs confient la sécurité de leur projet à des tiers.

Une fois qu'un projet est opérationnel avec Akeyless, la plateforme gère le reste. Cela permet aux développeurs de se concentrer sur leur travail, tous les secrets étant laissés en dehors du code, car Akeyless automatise la génération et l'injection des secrets. Cela permet aux développeurs de se soucier moins de la sécurité et de se concentrer davantage sur l'accomplissement de leur travail.

4. Ne pas prendre de raccourcis pour contourner les problèmes de code

Tout développeur ayant travaillé sur un projet logiciel complexe peut vous dire qu'il y a toujours des problèmes de code qui surgissent tout au long du processus de développement sans solutions évidentes.

Dans de nombreux cas, les équipes de développement recourent à des solutions rapides et sales pour résoudre ces problèmes afin de pouvoir avancer rapidement. C'est ainsi que votre projet peut accumuler une montagne de dette technique en un rien de temps, et cela reviendra hanter le projet à long terme.

Si la vitesse globale de développement est votre objectif, il est préférable de prendre le temps de trouver de vraies solutions aux problèmes dès qu'ils se présentent. Même si vous devez arrêter le développement périodiquement pour ce faire, vous gagnerez plus de temps à long terme en procédant ainsi. Cela est dû au fait que les véritables conséquences d'un raccourci peuvent ne pas devenir évidentes avant plus tard dans le processus de développement, lorsqu'il peut être presque impossible de les corriger.

Il est préférable d'intégrer du temps pour le refactoring de code et d'autres étapes de maintenance dans la feuille de route de développement à l'avance pour éviter de se retrouver dans cette situation en premier lieu.

5. Réserver un temps de travail approfondi inviolable

Selon une récente enquête, l'ingénieur logiciel moyen ne parvient à caser qu'environ 10 heures de travail approfondi dans une semaine de travail moyenne.

La raison principale est que la plupart des développeurs doivent faire face à une avalanche d'interruptions qui brisent leur rythme de codage et mangent leur temps et leur attention. Des demandes soudaines de révision de code aux retours non sollicités des clients, il n'y a pas de fin aux choses qui peuvent forcer un développeur à abandonner ce qu'il fait et à détourner son attention ailleurs.

Un responsable de développement avisé peut aider quelque peu la situation en permettant aux membres de l'équipe de réserver des blocs de temps spécifiques comme temps de travail approfondi inviolable. Cela signifie permettre au membre de l'équipe de se concentrer et de gérer toute interférence nécessaire pour prévenir son interruption.

Pour les équipes à distance, cela est aussi simple que de permettre à l'équipe de se déconnecter des applications de chat et des e-mails pendant la durée de leur bloc de travail.

Les équipes en bureau doivent travailler un peu plus dur pour cela. Dans un cadre de bureau, il incombera au responsable de développement d'intercepter toutes les demandes entrantes qui atteindraient autrement l'équipe et les perturberaient. Cela peut nécessiter de s'opposer aux responsables de niveau supérieur ou même aux clients.

L'essentiel est de déclarer clairement pourquoi les interruptions ne sont pas autorisées et de le lier à des métriques de productivité significatives. Tout pour faire passer le message que laisser l'équipe à son travail est essentiel.

Ou, si ces choses ne fonctionnent pas, il pourrait être utile d'autoriser une politique de travail à domicile en rotation pour permettre aux membres de l'équipe de s'échapper du bureau pour accomplir un travail significatif.

Les points clés

Les cinq conseils détaillés ici font des merveilles pour éliminer les obstacles courants du développement logiciel et autres pertes de temps procédurales qui peuvent ralentir l'achèvement des tâches. Ensemble, ils devraient permettre à une équipe de développement de progresser rapidement et régulièrement sur un projet logiciel avec un minimum de ralentissements inattendus.

Bien sûr, la réalité dicte qu'aucune feuille de route n'est parfaite et que s'attendre à l'inattendu fait toujours partie du cours. Mais en abordant les goulots d'étranglement et les ralentissements qui tendent à affecter chaque projet de développement logiciel, vous et votre équipe tirerez le meilleur parti de leur temps et maintiendrez un rythme que d'autres développeurs envieraient.

Image principale sous licence via snowing 12 / Adobe Stock