Le code est un gâchis complet d'une combinaison d'ASP / ASP.NET classique. La mêlée consiste à réparer le gros désordre ou à y ajouter des éléments. Nous sommes trop occupés à faire ça pour commencer une réécriture donc je me demande ..
Où est la partie dans Scrum où les développeurs peuvent avoir le pouvoir de dire que c'est assez et d'exiger qu'on leur donne le temps de commencer la grande réécriture? Nous semblons dans une boucle sans fin de simplement corriger l'ancien code avec «Stories».
Donc, les choses sont dirigées par des personnes non techniques qui ne semblent pas vouloir pousser pour une réécriture parce qu'elles ne comprennent pas à quel point la base de code est devenue mauvaise.
Alors, qui est chargé de réaliser ce grand changement de réécriture? Les développeurs? Le Scrum Master?
La stratégie actuelle est juste pour trouver le temps et le faire nous - mêmes sans les plus-ups impliqués , car ils sont la plupart du temps à blâmer pour le désordre actuel , nous sommes .. <-
insérer diatribe sur les non-techniques de dire aux gens ce qu'il faut faire technique ici ->
.
la source
Réponses:
Je ne sais pas pourquoi c'est si difficile pour les gens. Son analyse de rentabilisation est ici:
Le temps des développeurs, c'est de l'argent. Beaucoup d'argent. J'ai quitté une entreprise qui prévoyait de réorganiser leur interface utilisateur il y a plus d'un an et j'espérais que l'adoption de Scrum les aiderait à arrêter de tourner leurs roues. Qu'est-il arrivé? Même ol 'même ol'. Ils ont continué à intégrer de nouvelles fonctionnalités et la «dette technique» n'avait aucun argument commercial, même si la moitié du code que nous avons écrit est devenu vide de sens à chaque itération en raison de la base de code sous-jacente étant un désordre complètement obsolète. Pas une seule chose n'a changé sur leur front depuis mon départ, et j'ai été amené dans le but même de le réorganiser complètement. Au cours des deux mois où j'étais là, je n'ai pas touché à un coup de langue CSS ou JavaScript. Je jouais juste avec HTML et un ancien système de modèles Java de la fin des années 1990.
Ma réponse? Faites ce que vous pouvez, mais si les autres développeurs ont déjà abandonné et travaillent tard pour atteindre les objectifs de sprint plutôt que d'affirmer des délais plus pratiques et d'insister sur le fait que la dette technologique est en fait un problème de blocage, supposez le pire et commencez à chercher un nouvel emploi à présent. Vos développeurs ne peuvent pas ou ne sont pas autorisés à communiquer leurs préoccupations ou leur entreprise l'est aussi! @ # $ Ing à courte vue pour comprendre combien d'argent ils pissent.
Ignorer ces problèmes coûte TOUJOURS plus cher à long terme. Et pas un peu plus, mais BEAUCOUP plus. Non seulement c'est une blessure à la poitrine en ce qui concerne le temps de développement, mais cela va inévitablement réduire vos niveaux de talent, car les développeurs qui connaissent mieux et ont d'autres options éviteront votre entreprise comme la peste. Mon patron actuel est un développeur ET le propriétaire de l'entreprise. Il y a des choses que nous ne réécrirons pas en faveur de se concentrer sur d'autres priorités, mais quand quelque chose a vraiment besoin d'un refactoriste en raison de son temps constant, il obtient un refactoreur approprié. Et les résultats sont évidents. La modification et l'ajout de nouveaux éléments deviennent plus faciles et plus rapides grâce à plusieurs facteurs. Ce qui a pu prendre des heures peut prendre des minutes avec une architecture appropriée. Les entreprises n'aiment pas l'entendre, mais cela vaut la peine de suspendre les choses pour cela.
Scrum est un échec dans les environnements où les développeurs n'ont pas beaucoup d'emprise, OMI, car il est trop facile pour les types d'entreprises de vouloir ignorer la maintenance et les mises à jour en faveur de puces qu'ils peuvent mettre sur leurs listes "d'initiatives réussies" lorsque le temps de l'évaluation arrive. Ils favoriseront toujours leurs peaux et leur potentiel de promotion en faveur du long terme, même si cela les mord constamment dans le cul pour ignorer ces problèmes aussi.
Scrum est également une industrie motivée par le profit et d'autres encore. Les entreprises paient beaucoup d'argent pour la formation Scrum. Les personnes qui cherchent à adopter devraient se méfier de qui est commercialisé et à quel point cela sera vraiment réaliste dans leur culture.
Quoi qu'il en soit, si vous vous souciez vraiment du développement, une base de code merdique, une gestion avec de la cire dans les oreilles et des développeurs sans épines est une recette de misère et un environnement qui ne fera pas grand-chose pour améliorer vos compétences à tous égards utiles. N'hésitez pas à commencer à mettre en place des étapes à GTFO avant d'avoir réellement découvert si vos efforts pour résoudre le problème sont réellement payants.
la source
Si vous faisiez vraiment Scrum, ce dont je doute, le Product Owner serait responsable de décider d'une réécriture. La plupart du temps, une réécriture n'est pas une bonne idée, btw, car elle ne produit aucune nouvelle fonctionnalité, n'introduit que de nouveaux bogues.
http://blog.objectmentor.com/articles/2009/01/09/the-big-redesign-in-the-sky
http://www.joelonsoftware.com/articles/fog0000000069.html
Pour développer "réécrire n'est pas une bonne idée":
Il est presque toujours préférable d'essayer une amélioration progressive. Comme Jarrod Robertson l'a écrit dans un commentaire, trouvez un module qui doit être amélioré devenez l'expert de ce module et écrivez une histoire pour le prochain sprint pour améliorer ce module particulier. Expliquez au propriétaire du produit pourquoi ce module a besoin de travail.
la source
Je vais être très direct ...
Vous avez déclaré que vous veniez de commencer un travail, et pourtant vous semblez déjà être un maître de la situation là-bas. J'ai peut-être mal compris l'intention de votre question, mais j'ai l'impression que vous avez commencé un travail où vous voyez un certain nombre de problèmes, et vous avez sauté à la conclusion la plus simple dans laquelle le code est cassé et la seule voie à suivre est une réécriture, mais avez-vous vraiment considéré le coût pour votre employeur de le faire?
Avec n'importe quelle base de code existante - quel que soit l'état dans lequel il se trouve - le propriétaire aura généralement un investissement important dans les produits que le code représente. Il y a à la fois des coûts directs et indirects associés à la base de code, et une réécriture est souvent la toute dernière chose que vous voulez faire en tant que développeur de logiciel, car vous risquez de dévaluer vos actifs de code, et donc d'obtenir un rendement inférieur sur tous vos précédents efforts.
Prenons le système d'exploitation de Windows comme exemple. Avec chaque nouvelle version créée, un gros morceau de code a été reporté de la version précédente. Parfois, des bibliothèques et des API entières sont déplacées sur plusieurs générations d'OS. Pourquoi? Parce que les développeurs savent que ces éléments fonctionnent, ont été testés, corrigés et corrigés pour éviter les problèmes de sécurité et de mémoire, et parce qu'ils ont coûté très cher pour entrer dans cet état. Personne ne veut jeter le code de travail quand il leur rapporte de l'argent, même si les coûts de maintenance sont relativement élevés, le coût pour recommencer à zéro sera toujours plus élevé encore, et dans une entreprise comme le cas de Microsoft, ils ont des milliards à la banque qui leur permettre de recommencer depuis le début s'ils le souhaitent, mais ils ne le font pas t parce qu'ils veulent maximiser leur retour sur investissement. Votre employeur n'est pas différent de Microsoft, à l'exception du peu d'avoir des milliards en espèces à jeter sur un projet.
Le code est donc un gâchis, et il semble qu'il y ait des problèmes de communication et de limites entre les différents secteurs de l'entreprise. Que pouvez-vous ou vos collègues faire à ce sujet?
Une option consiste simplement à continuer comme l’a été l’équipe et à espérer un miracle à l’avenir. Ce n'est probablement pas une bonne idée et cela ne fera qu'augmenter votre frustration et votre stress.
Une meilleure option consiste simplement à vous arrêter et à faire votre travail, mais dans le cadre de cette recherche, recherchez des opportunités d'ajouter des tests pour prendre en charge les zones de code qui semblent être les plus fragiles, puis modifiez-les jusqu'à ce qu'elles deviennent plus stables. Vous aurez plus de facilité à faire un argument convaincant pour améliorer l'investissement de l'entreprise au lieu de vous contenter de tout jeter.
Une option encore meilleure consiste à être organisé en équipe et à vous assurer d'avoir quelqu'un avec assez d'ancienneté pour pouvoir présenter un bon dossier afin de permettre à l'équipe plus de flexibilité pour planifier du temps afin d'améliorer la base de code. Peu m'importe à quel point une entreprise est occupée ou à quel point le calendrier semble rigide, il y a toujours des «accalmies» occasionnelles dans l'activité qui peuvent être utilisées pour intégrer une amélioration ou deux. C'est encore mieux si les améliorations peuvent être apportées lors de l'exécution d'autres tâches. Si c'était moi, je serais en contact avec un manager et je leur présenterais les concepts de certains livres canoniques que les développeurs de logiciels lisent. Code propreest probablement celui dont votre équipe a le plus besoin. Plantez quelques graines sur la façon d'améliorer le code et donnez quelques exemples de ce que vous voulez dire. Un bon gestionnaire verra la valeur de l'ajout d'améliorations incrémentielles au code, surtout si vous êtes en mesure de décrire le concept de dette technique . Aidez votre chef d'équipe ou votre gestionnaire à faire une bonne analyse de rentabilisation pour améliorer le code, et ils auront une meilleure motivation pour agir en conséquence.
Il ne suffit pas non plus de dire "le code est en désordre". Vous devez encourager vos collègues à pratiquer le codage propre tout le temps et à utiliser une technique de codage propre pour encourager un peu de rangement au fur et à mesure. J'ai une petite affiche que j'imprime et que je suspends au mur de mon bureau chaque fois que j'entreprends un nouveau travail. Il dit "Efforcez-vous toujours de laisser le code un peu plus beau que vous ne l'avez trouvé". Juste à côté, j'ajoute un autre qui dit "Les lys n'ont pas besoin d'être dorés". Ils me rappellent tous les deux que je devrais toujours essayer d'améliorer ce que je trouve, mais éviter simplement de plaquer l'or un problème avec un autre. Les réécritures massives sont souvent le pire type de "dorure", car elles sont souvent effectuées pour de mauvaises raisons. Bien sûr, une toute nouvelle version du produit pourrait être justifiée à un moment donné,
la source
Voici la définition officielle de l' équipe de développement Scrum du guide Scrum officiel . Je mets l'accent sur les parties qui vous concernent directement:
L'équipe de développement est donc responsable de son propre gâchis et doit s'en occuper elle-même, sans avoir à demander à personne en dehors de l'équipe.
Incluez un délai de règlement technique de la dette dans chacune de vos estimations futures et assurez-vous que la qualité du logiciel que vous livrez est de premier ordre.
Si vous devez vraiment faire une réécriture complète, vous devez résoudre le problème lors de la rétrospective Scrum. Le Product Owner peut éventuellement annuler le projet et en démarrer un nouveau. Le Product Owner est également le seul à pouvoir annuler un sprint.
la source
Comme vous le décrivez, je dois dire que je ne vois rien qui ait quoi que ce soit à voir avec SCRUM, ou votre équipe de développement de produits est actuellement un problème .
C'est normal
Ce que vous décrivez est l' entropie normale d'une base de code. Dans votre cas, l'équipe a probablement commencé plus loin de l'idéal, mais chaque base de code devient finalement une grosse boule de boue .
Dans un tout parfait greenfield scénario, tout ce que vous pouvez éventuellement faire est de commencer plus loin de l' entropie et mouvement absolu vers elle plus lente.
Je suis d'accord avec les autres, le désordre de la base de code est dû aux développeurs. Je suis sûr qu'il est antérieur à l'adoption de SCRUM de nombreuses années.
Ce n'est pas une décision technique ou de développement de réécrire, c'est une décision commerciale.
Vous ne savez pas pourquoi les propriétaires de produits ne veulent pas de réécriture. En tant que développeur, vous pensez que cela est nécessaire, mais existe-t-il vraiment une analyse de rentabilité pour cela?
S'il existe une véritable analyse de rentabilisation , pas seulement une main agitant; "le code est un gâchis hérité, je veux commencer sur le terrain parce que c'est ce que je veux" , alors la direction devrait supporter les frais d'une réécriture, compte tenu d'un retour sur investissement.
Vous n'avez pas donné une analyse de rentabilisation solide pour une réécriture, juste une diatribe sur votre opinion sur la façon dont tout le monde a causé ce gâchis et vous ne voulez pas y faire face.
Preuve - Le profit conduit les décisions commerciales à lancer des logiciels fonctionnels, pas un besoin d' OCD pour une base de code propre
Si vous pouvez vraiment montrer la preuve , pas seulement la théorie, mais la preuve tangible que dépenser de l'
X
argent pour une réécriture entièrement nouvelle sera garanti pour faire desX * N
dollars pour l'entreprise dans leY
délai (oùN
est élevé etY
court), vous pourriez obtenir une certaine traction de la direction . Il s'agit d'un cas hautement improbable que vous pouvez présenter et prouver.Sinon, il vous suffit de vous en occuper, c'est la réalité. Contrairement à vos affirmations catégoriques selon lesquelles il n'y a absolument aucune voie à suivre sans cette réécriture immaculée, je parierais que dans 5 ans ou plus, la base de code dont vous vous plaignez fonctionnera et fonctionnera quelque part en fournissant à quelqu'un des fonctionnalités et de la valeur longtemps après vous avez quitté l'entreprise.
la source
Je suis généralement sceptique lorsque les gens réclament de "grosses réécritures". Il y a des cas où cela a du sens, mais la plupart du temps, ce code hérité a de la valeur (en ce sens qu'il est déjà en production et utilisé aux fins qui ont inspiré sa création). Effectuer une grosse réécriture est dans bien des cas l'opposé de l'agile. Combien de temps faudrait-il pour amener la nouvelle version de l'application à un point où elle peut remplacer de manière viable l'application existante.
L'approche que je préfère est ce que Martin Fowler appelle la vigne étranglante . Implémentez de nouvelles fonctionnalités (y compris les modifications apportées aux fonctionnalités existantes) en utilisant la nouvelle approche, mais utilisez l'application existante comme un treillis sur lequel la nouvelle fonctionnalité peut évoluer. Cela vous donne le meilleur des deux mondes, vous n'avez pas à tout arrêter pendant que la grande réécriture est mise à jour, mais vous avez l'avantage d'écrire du nouveau code qui tire parti des cadres mis à jour. C'est certainement une approche plus difficile que de commencer propre et peut-être pas aussi sexy, mais cela offre plus de valeur à l'entreprise que de jeter tout ce qui est là parce que c'est obsolète.
la source
Où je suis et comment nous travaillons, voici ce que nous ferions: écrire une nouvelle histoire et la remettre au propriétaire du produit, qui décidera ensuite de la manière de la hiérarchiser. Un exemple serait: "En tant que développeur du produit X, je voudrais réécrire le code dans ce domaine afin que le développement futur soit plus efficace" Les critères d'acceptation devraient alors être dans le sens de: Réécriture / refactorisation x pour que ce soit mieux de cette façon.
Je ne connais pas la situation dans laquelle vous vous trouvez, mais ici, si nous voulions recommencer à zéro, il s'agirait de s'asseoir avec le propriétaire du produit et de le persuader pourquoi, puis d'écrire une pile d'histoires pour recréer l'existant fonctionnalité.
Les autres choses que nous avons faites pour essayer de gérer le code incorrect et / ou hérité ont été d'inclure des tâches de retravaillage lors de la tâche des user stories.
la source
Décider de grandes réécritures est une décision commerciale. Vous pouvez essayer d'influencer les décisions commerciales en vendant de votre point de vue aux personnes responsables de la partie commerciale des choses.
Toutefois; le changement de la qualité du code d'une itération à l'autre est une décision du développeur. Si vous laissez la qualité du code décliner, vous ajoutez une dette technique afin de répondre aux attentes du propriétaire du produit maintenant. Ce que vous pouvez faire, c'est commencer à assumer la responsabilité du code que vous écrivez et vous assurer qu'il améliore la base du code, et non l'inverse. Maintenant, cela signifie que vous perdrez de la vitesse, car vous diminuez continuellement le montant de la dette technique et votre propriétaire de produit sera sûrement déçu. Vous pouvez essayer d'expliquer que dans votre empressement à plaire, vous avez laissé la qualité du code se dégrader et vous prenez maintenant des mesures pour corriger ce problème.
Maintenant, je me rends compte que c'est une étape terrifiante à prendre, et il pourrait être tentant de la retarder d'un sprint de plus afin que vous puissiez sortir la fonctionnalité X avant une échéance importante. Malheureusement, cela deviendra plus difficile plus vous attendez.
Soit dit en passant, ce n'est pas strictement un problème Scrum, et je ne propose pas non plus une solution spécifique à Scrum. Il s'agit de développeurs s'appropriant le code.
la source
Les développeurs sont chargés d'alerter le monde sur l'état actuel de la base de code. Cela peut se produire lors d'une mêlée quotidienne, d'une rétrospective ou simplement de manière informelle. Cela peut sembler évident, mais si vous n'exprimez pas clairement ce qu'est un gâchis et combien de temps vous en perdez, personne ne le remarquera jamais. Le Scrum Master sera généralement chargé de transmettre les informations au PO et aux personnes en charge du projet et de les persuader que quelque chose doit être fait, puis de faciliter la mise en œuvre d'une solution par l'équipe.
En remarque, une réécriture big bang n'est pas nécessairement l'OMI la bonne réponse à ce genre de problème. Quelle que soit la façon dont les développeurs en ont assez de la base de code actuelle, prendre de petites mesures mesurables vers une architecture plus propre est souvent une meilleure idée car vous pouvez voir les progrès, justifier votre travail en montrant régulièrement au PO les réalisations et continuer le flux d'implémentation d'un nouvel utilisateur histoires en parallèle plutôt que de se perdre dans une métamorphose sans fin, monopolisant les ressources.
la source
Tu as demandé:
En tant que gestionnaire et développeur, la réponse la plus simple à votre question est qu'il n'y a aucune partie dans Scrum, ou toute autre méthodologie, ou dans n'importe quel scénario d'entreprise, où le développeur a le pouvoir de dire assez c'est assez et d'exiger un récrire. Beaucoup de gens ici ont présenté de bons arguments valables pour expliquer pourquoi les réécritures sont souvent de mauvaises idées et pour expliquer comment le changement peut et doit être apporté de manière incrémentielle et agile. Et je suis d'accord avec eux tous.
Mais le résultat est encore plus simple. Vous ne pouvez jamais prendre cette décision, JAMAIS. Vous êtes l'employé, et la seule décision que vous pouvez vraiment prendre est "vais-je continuer à travailler pour ces asshats ou trouver un nouvel emploi qui redoute ma compétence folle". Votre nouvel emploi ne vous permettra pas non plus de prendre cette décision, mais au moins vous vous sentirez comme si vous contrôliez votre destin en passant d'un emploi à l'autre.
la source
Je ressens votre douleur, mais je ne sais pas ce que cela a à voir avec Scrum. La décision de réécrire le code ne dépend pas du processus de développement.
la source
Attends quoi?
Tu patches ? Vous devriez refactoriser . Respectez les valeurs agiles. Utilisez TDD et les pratiques appropriées et la situation finira par s'améliorer.
la source