web-dev-qa-db-fra.com

Est un problème de gestion de la dette technique davantage d'une question de culture ou d'une question de perspicacité

Disclaimer: Je ne m'attends pas à la dette de la technologie zéro. Dans ce poste, le problème de la dette technique fait référence à la gravité qui a entraîné une incidence négative sur la productivité.

Récemment, je pensais à construire un outil pour générer automatiquement un rapport de dette technique à partir de la question suivante - Taux d'introduction VS Nettoyage au fil du temps. Outre le total, il y aura également des chiffres décomposés par équipe de projet et par gestionnaire, de sorte que les gestionnaires puissent facilement avoir une idée du niveau de la dette technologique actuelle, sans préciser en émission de suivi et de détails (cet outil pourrait déjà exister, j'ai besoin de recherche pour éviter de réinventer la roue).

Motivation sage, les dettes techniques ont été boutées de neige depuis des années. Chaque fois que les développeurs augmentent l'estimation du projet pour inclure le nettoyage de la dette tech, il sera plus souvent invité à éliminer ces chiffres de l'estimation, de sorte que le refactoring/nettoyage fonctionne généralement de manière indéfiniment reportée. J'espère que le rapport périodique aidera à améliorer la question de la gestion de la dette technique.

Cependant, sur deuxième pensée, je me demande augmentera la visibilité du niveau de la dette tech aide à améliorer la priorité. En règle générale, la dette technique est-elle un problème de culture d'orguté ou un manque d'outil/perspicacité? Je suppose qu'il n'y a pas de réponse universelle, je me demande, ce qui est la cause la plus courante. Quelle est votre expérience?

--- mise à jour 2/28

Clarification: Je crois que la plupart des administrations sont suffisamment intelligentes pour se rendre compte de l'impact, en particulier après que les coéquipiers ont signalé une douleur en termes de productivité du projet. Mon sentiment d'intestin est que, ils n'ont pas une image concrète sur la gravité de problèmes. Mon idée est d'aider la direction à obtenir une image plus claire, via deux étapes:

  1. Demandez à Techdebts et avez-vous suivi leur impact. (Il y a des défis, mais c'est au-delà de cette question)
  2. Demandez à un rapport pour introduction Taux VS Nettoyage (il pourrait y avoir une répartition supplémentaire par impact élevé/faible).

Ma curiosité provient, ces efforts vont-ils aider ou sont-ils simplement gaspillés du temps, généralement parlant (non spécifique au sein de mon org) - d'où la question quelle est votre expérience. Si c'est la question de la culture d'org, ces efforts ne contribueront probablement pas beaucoup.

47
shiouming

Anecdotage

Je suis un développeur de consultants. J'ai été embauché à plusieurs reprises pour "corriger les problèmes de développement". Certains clients sont conscients des problèmes de leur processus de développement, alors que d'autres ne le voient que comme un tas de bogues à fixer sans regarder la cause des bugs (c'est-à-dire des mauvaises pratiques de codage).

D'après mon expérience, une entreprise qui a demandé de l'aide pour la correction du processus de développement était effectivement intéressée par la prise de mesures pour améliorer le processus de développement. Dans d'autres sociétés, leur intérêt existait jusqu'à ce qu'il nécessitait une action de leur côté (par exemple, réprimandant un développeur qui retire activement le refactoring ou l'amélioration, ou me donnant en fait accès aux outils nécessaires à la configuration d'un pipeline CI/CD).

Basé sur mon expérience, la mauvaise pratique commence comme une déficience de développement. Pas une volonté volontaire, mais plutôt une question d'inexpérience ou d'attitude générale de coupe d'angle. Quelle que soit la cause, ces développeurs montreront des résultats rapides pour ne pas prendre le temps de la diligence raisonnable, telles que les tests, la révision ou le refactoring.

La direction remarquera ces résultats rapides et sera au fil du temps pour attendre cette efficacité. Ils ne gèrent pas directement les retombées de la mauvaise pratique (c'est-à-dire des bugs), mais elles bénéficient des temps de développement plus courts.

À ce stade, cela devient une boucle de retour. La direction communique la date limite attendue (rapide). Les développeurs sont obligés de couper les coins pour y parvenir. La base de code se dégrade. La libération rapide initiale se transforme en un cycle de maintenance de bogues, de régressions, de régressions et de manque de lisibilité irrégulières irrégulières et erratiques. Afin de faire face, tout en suivant la demande continue de résultats rapides, les développeurs sont obligés de couper des coins dans leurs bugs.

Le cycle se poursuit, tandis que la qualité et la performance du codeBase sont érodées, ainsi que les compétences de bonne pratique des développeurs érodent et commencent à être considérées comme "inutilement" de consommer du temps. Si certains développeurs collent des bonnes pratiques et d'autres non, la direction les jugera en fonction de la rapidité avec laquelle ils livrent - sans observer les bugs ni les causes des bugs.
[.____] Les développeurs de bonnes pratiques sont déconcerts, les développeurs de mauvais pratique sont incités. Au fil du temps, en raison de la rétroaction positive/négative de la direction, les développeurs de mauvaises pratiques assument un rôle plus important que les développeurs de bonnes pratiques, et la mauvaise pratique devient la loi de la terre.

S'exprimant de l'expérience d'une entreprise dont la main-d'œuvre principale était des consultants externes, les Devs de bonne pratique quittent simplement ou deviennent des devs de mauvaise pratique privés. Les Devs de la mauvaise pratique (initiale). Cela perpétue le déséquilibre des devis de mauvaise pratique ayant une ancienneté sur les Devs de bonne pratique.

À ce stade, la mauvaise pratique est devenue une culture d'entreprise endémique. Il est renforcé de tous les côtés (y compris le département des ventes en cas de Dev Entreprises) et toute suggestion de bonnes pratiques qui apparaît sur le soutien populaire de la mauvaise pratique, combinée à l'intolérance de la direction pour des délais plus longs.

Cette évolution est quelque chose que j'ai observée avec au moins trois sociétés différentes. Les mêmes événements et le climat général du travail perpétrés par les trois sociétés.


Les singes et l'échelle

Chaque fois que je parle de la culture de la société détrimentale, qui se manifeste souvent comme une attitude "C'est comme ça que nous avons toujours fait" l'attitude, je me rappelle la parabole des singes et de l'échelle.

enter image description here

Supposons que j'avais éteint la douche autour du moment de la photo 4. Les singes auraient pu augmenter cette échelle sans aucune répercussion, mais leur "culture de l'entreprise" l'empêchait de se produire, sur la base de ce qui est maintenant une idée dépassée (puisque la douche est plus actif).

Cette parabole touche exactement à l'érosion de bonnes pratiques qui se déroulent. Populaire mais Misguided Soutien à la mauvaise pratique inhibe quiconque tente de changer de changement en introduisant de bonnes pratiques.

La question n'est pas avec des contrôles sociaux et des soldes. Le même principe est utilisé dans d'autres entreprises pour maintenir la bonne pratique et faire courber toutes les suggestions de mauvaise pratique.

Le problème est avec le aveugle L'acceptation de "choses sont faites de cette façon" sans jamais être en mesure de réévaluer. Quand il atteint ce stade, le comportement est une culture d'entreprise.

Répondre à vos questions

En règle générale, la dette technique est-elle un problème de culture d'orguté ou un manque d'outil/perspicacité?

Cela dépend de quelle étape du processus vous êtes sur. Au début, c'est un manque de perspicacité et/ou d'outillage. Mais lorsqu'il est associé à une gestion qui ne regarde que des résultats et non des problèmes permanents et donc à tort (éventuellement inconsciemment) incitent la mauvaise pratique, il devient une boucle de retour et au fil du temps devient une culture de la société.

97
Flater

Habituellement, ce n'est pas non plus. Habituellement, c'est principalement un problème de communication.

Ce que beaucoup échouent à réaliser, c'est que la dette technique n'est pas un gros problème pour une entreprise, avec précaution comme la dette financière n'est pas.

Intérêt , d'autre part, est. Il serait irresponsable d'effectuer des versements non ignifuges sur un prêt avec un intérêt très faible ou zéro.

Lorsque vous parlez de la réduction de la dette technique, ce que vous demandez réellement de faire, c'est des acomptes d'OCH. Puisque la direction n'est pas au courant de l'intérêt (c.-à-d. Coût) de cette dette, cela n'est pas considéré comme important.

Ce que vous devriez faire, c'est mettre en évidence, et non le travail nécessaire pour réduire la dette technique, mais le travail supplémentaire nécessaire pour fournir de nouvelles fonctionnalités (ANR/ou Bugs fixes) en raison de cette dette.

Donc (prendre des exemples faciles):

Ne pas Demandez la permission de configurer un pipeline CI/CR. DO Spécifiez que chaque version prend une demi-heure supplémentaire par environnement. Ne pas Demandez d'automatiser les tests. DO Spécifiez que vous utilisiez deux jours de test manuel pour des choses qui auraient pu être automatisées. Ne pas Demandez du temps au refacteur. DO Spécifiez ces heures supplémentaires que vous avez consacrées à la recherche d'un code mal structuré.

De cette façon, vous soulevez des problèmes qui comptent réellement pour la gestion. Et si la direction est intelligente, elles peuvent même décider si elle vaut la peine de résoudre les problèmes ou non. (Pourquoi réparer la dette technique dans un produit qui ne sera pas soutenu l'année prochaine)

23
Guran

Nous avons déjà eu un tel rapport disponible dans notre traqueur d'émission (JIRA). Lorsque l'introduction du graphique de nettoyage VS a commencé à devenir incontrôlable, la direction a effectivement consacré plus de ressources pour la fixer. Je pense que la visibilité fait définitivement une différence de priorisation.

Le problème principal est que la visibilité est tout au long du temps entre un défaut enregistré et qu'il soit corrigé. Cela a abouti à plus de temps consacré à la fixation enregistré bugs. Cela a abouti à moins de personnes disponibles pour créer de nouvelles fonctionnalités. Les développeurs se sentent étirés minces et précipités afin qu'ils sautent des choses qui ne se présentent pas directement dans des rapports, comme le refactoring et les tests automatisés.

Nous sommes maintenant dans cette situation étrange où nous payons plus rapidement la dette, mais aussi la génération plus rapide. Cela va à votre question de culture. Avoir la priorité à corriger des bugs très visibles est très différent d'avoir une culture de la qualité de la construction pour commencer. Ce dernier est beaucoup plus difficile à cultiver, car il est plus difficile de mesurer et ressemble à d'autres efforts frontal.

9
Karl Bielefeldt

La réponse canonique Scrum est que l'équipe possède la dette technologique. L'équipe construit l'arriéré Sprint. L'équipe contrôle ainsi la dette technique de taux est réduite.

En pratique, les dirigeants en colère apparaîtront si vous faites cela et vous vous escorterez hors du bâtiment :)

Plus sérieusement, il est important d'avoir une bonne communication avec le PO sur la dette technologique causant des problèmes de production et que la dette technique entraîne une mise en œuvre de la fonctionnalité actuelle. Cela vous aidera à déterminer la résolution de la dette technique critique sans aliéner le PO et avoir une stratégie pour vos produits livrables.

7
Martin K

Chaque fois que les développeurs augmentent l'estimation du projet pour inclure le nettoyage de la dette technique, il sera plus souvent invité à supprimer ces chiffres de l'estimation, de sorte que le refactoring/nettoyage fonctionne généralement par indéfiniment reporté indéfiniment

Pourquoi cela arrive-t-il?

Demandez à votre gestion. Assurez-vous qu'ils sont au courant de ce phénomène et obtenez leurs justifications pour cela.

Travailler sur la dette technique doit être "vendu" comme caractéristique. Votre gestion doit être en mesure d'appliquer une analyse des coûts/avantages à l'effort nécessaire pour résoudre la dette/la valeur de la résolution de la dette.

Qui ayant été dit -

L'équipe de développement possède le code. Si vous avez besoin de refacteur avant de présenter une fonctionnalité X parce que l'équipe, dans son ensemble, comprend que l'avenir du projet, l'avenir du projet, l'inclure dans votre estimation et dites-leur que c'est ce qui doit arriver.

Ils ne veulent pas vous dire ce qui doit arriver à mettre en œuvre une fonctionnalité - ils ne peuvent pas. Ce n'est pas leur travail ni leur compétence, et ils n'ont pas assez de connaissances pour faire un jugement de toute façon, et ils le savent. Si vous leur dites que ça va prendre x points d'histoire et que l'équipe a consensus autour de cette figure, ils l'accepteront sur Fiat.

Avoir des normes, collent à ces normes et avoir confiance en la signification de vos propres normes. Cela fait partie de votre travail, car les personnes qui nourrissent des fonctionnalités n'ont aucun contexte pour définir ces normes pour vous.

Si vous ne pouvez pas obtenir un consensus sur votre équipe concernant ce que les travaux de refacteur doivent être effectués pour une fonctionnalité donnée (c'est-à-dire qu'il s'agisse de normes précises), c'est un problème culturel qui peut être traité interne ou un indicateur que Cette dette technologique ne s'accumule réellement dans des domaines qui sont aussi critiques qu'ils semblent de votre perspective - et vous devrez poursuivre cette conversation avec votre équipe pour découvrir lequel c'est vraiment et soyez prêt à comprendre que C'est probablement au moins un peu des deux.

4
Iron Gremlin

XP résolu ce problème il y a quelques décennies d'une manière très simple.

Les clients ou les propriétaires de produits, ou tout ce que vous souhaitez les appeler, ne peuvent jamais déclarer combien de temps une histoire prendra. Ils ne peuvent mettre que des histoires dans l'ordre qu'ils aimeraient être faites et, s'ils n'aiment pas certaines estimations, négocient avec les développeurs pour changer d'histoires pour être moins chères.

L'équipe de développement (qui ne peut pas changer la priorité de l'histoire, jamais) est responsable du maintien d'un niveau de dette technique approprié, de déterminer quand il peut être augmenté à des fins commerciales et dans quel calendrier il doit être remboursé , etc. Le temps et les efforts nécessaires pour gérer cela à un moment donné ne sont jamais montrés au client, mais simplement intégrés aux estimations actuelles des histoires.

En particulier, vous jamais Avoir une histoire sur le refactoring ou la réduction de la dette technique ou quoi que ce soit de ce genre, car le client dispose d'un contrôle total sur la planification des histoires, jusqu'à la capacité de pouvoir dire: " Je veux que tu ne fasses jamais ça. " Si vous indiquez au client de prendre des décisions concernant la dette technique, vous abdigez votre responsabilité en tant que développeur afin de vous assurer que le projet peut progresser à un taux prévisible. (Pensez-vous sérieusement que le client peut être meilleur, voire aussi bon, car vous pour comprendre les effets futurs de la dette technique dans le codeBase?)

Donc, divisez votre gestion de projets en gestion technique (l'équipe "Développeur" qui ne peut pas définir les priorités de l'histoire) et la gestion des produits (le propriétaire du produit ou "client" dans XP lingo) qui ne peut pas faire technique Décisions, y compris les décisions sur la quantité de dette technique que l'on devrait détenir ou combien de temps et d'efforts devrait dépenser au moment de rembourser la dette technique existante.

Si pour des raisons culturelles ou autres, vous devez avoir une prise de décision sur ces deux, au moins essayer de les différencier ces deux rôles et les garder indépendants, c'est-à-dire qu'ils portent le "chapeau de développeur" ou "chapeau de propriétaire du produit" , "mais jamais tous les deux en même temps. (Cela a bien fonctionné pour moi lors de la gestion de ma propre entreprise.)

2
cjs

J'ai tendance à être favorable à suivre la dette technique dans l'outil de suivi de la question et à le taquager de manière appropriée. Dans les cas de JIRA, cela signifie souvent un type de problème. Dans github, une étiquette. D'autres outils peuvent avoir d'autres méthodes. Cependant, cela nécessite une prise de conscience de la dette technique pour commencer. Je craignais que tous les rapports ne donnent pas une image précise de l'état de la dette technique dans un produit, mais plutôt de l'état de la dette technique connue dans le produit. Encourager les personnes à évaluer et à suivre la dette technique dans le suivi de la question serait un processus, et peut-être un changement culturel pour l'organisation.

Cela dépend de la revue de votre organisation de la dette technique. Avant de travailler sur un module ou un composant donné, le développeur peut interroger le suivi de la créance technique connue, ce qui peut aider à guider les estimations. Connaître des lacunes connues dans la couverture des tests ou le couplage serré ou d'autres choses qui sont maintenant considérées comme des décisions de conception médiocres peuvent donner aux informations nécessaires pour aider à guider les activités d'estimation et de planification. Cependant, les gestionnaires de produits et de projets peuvent toujours repousser ces estimations avec des délais et des dates engagées. C'est un acte d'équilibre.

1
Thomas Owens

Cela ressemble à un problème de culture

Chaque fois que les développeurs augmentent l'estimation du projet pour inclure le nettoyage de la dette tech, plus souvent, ils seront invités à supprimer ces chiffres de l'estimation, de sorte que le refactoring/nettoyage fonctionne généralement par indéfiniment reporté indéfiniment.

Pour moi, ceci crie la question de la culture. Il semble que la direction soit consciente du problème (peut-être pas pleinement, mais au moins quelque peu) et ne veut pas l'entendre. Que quelque chose est plus important pour eux que la qualité du code en ce moment. Comment la direction est-elle incitée? Qu'est-ce qui compte comme succès pour eux? Code stable et maintenu? Ou éclabousser de nouvelles fonctionnalités, le temps de commercialiser, etc.? On dirait que c'est ce dernier. Dans quel cas leur disant que le code pue ne va rien aider, car la qualité n'est pas la manière dont ils définissent le succès. Pour eux, ça ne puant. Donc, finalement, vous devez d'abord apprendre quelle est votre culture de développement d'entreprise, avant de pouvoir décider si et si oui, comment faire face à ce problème.

1
bob