Le projet sur lequel je travaille actuellement a un problème: les bugs et les tâches sont souvent assignés à des gens qui sont trop nouveaux ou trop inexpérimentés et leur travail finit par produire plus de bugs en cours de route. Le problème est que certaines parties de notre logiciel sont beaucoup plus "dangereuses" à travailler que d'autres en raison de problèmes de qualité du code. J'ai essayé de lutter contre ce problème en estimant le risque associé aux tâches et en accordant une attention particulière aux développeurs qui sont assignés à quelles tâches.
Nous utilisons JIRA, j'ai donc commencé à étiqueter les problèmes pour suivre cette estimation. J'ai remarqué que j'ai fini par utiliser plusieurs mesures pour catégoriser un bogue / une tâche:
- Comme c'est clair / simple. Par exemple, que ce soit quelque chose qui nécessitera beaucoup de travail de conception ou simplement une simple correction de bogue dans l'interface utilisateur.
- La maintenabilité de la zone affectée du code. Est-ce une zone bien conçue ou une grosse boule de boue.
- Quelle proportion du programme, je pense, sera affectée par le changement requis.
Mes étiquettes sont un peu en désordre car je n'avais pas d'idée claire quand j'ai commencé quelles seraient les catégories possibles et je ne le fais toujours pas. Je pense à demander l'ajout d'un nouveau champ (quelque chose comme "Risque") afin que nous puissions demander un devis avant d'attribuer le travail à quelqu'un.
Quelqu'un a-t-il déjà traité ce genre de choses?
Je dirais que ce à quoi vous faites référence ici pourrait mieux être appelé «complexité». Bien sûr, plus un changement est complexe, plus le «risque» est élevé, car un nouveau bug peut être introduit par un programmeur inexpérimenté. Ce n'est pas une mauvaise idée d'introduire un tel champ si c'est un vrai problème.
Cependant, à en juger par ce que vous avez écrit, vous semblez avoir deux problèmes:
En plus d'introduire quelque chose comme un champ de «complexité» (qui aiderait à gérer et à hiérarchiser votre travail), je vous suggère de vous concentrer sur l'atténuation du risque des deux problèmes ci-dessus.
Pour résoudre le premier problème, je créerais un processus par lequel les nouveaux programmeurs discuteraient d'abord de tous les nouveaux bogues avec un programmeur plus expérimenté avant de travailler sur le bogue. De plus, je vais certainement introduire des révisions de code pour à la fois réduire le risque d'introduction de nouveaux bogues et utiliser comme opportunité de coaching pour que les nouveaux programmeurs se mettent au courant plus rapidement.
En ce qui concerne la qualité du code, je ferais deux choses. Tout d'abord, arrêtez le processus de pourriture: convenez de normes et de pratiques de codage qui empêcheraient l'introduction de tout nouveau code inférieur. Les révisions de code suggérées pourraient également aider ici. Deuxièmement, j'identifierais les pires parties de votre code et commencerais à les refactoriser et à les nettoyer.
la source
Oui, c'est une bonne idée de ne pas donner aux développeurs inexpérimentés des problèmes trop complexes. Mais le revers de la médaille est que si vous ne les laissez faire que les choses faciles, ils n'apprendront pas.
Je suggère qu'une autre stratégie consiste à instituer un régime d'examen des codes. Laissez les débutants travailler sur les choses délicates (dans des limites raisonnables), mais examinez soigneusement leur travail.
À court terme, c'est plus de travail pour tout le monde. À plus long terme, vous vous retrouverez avec toute une équipe de développeurs qui peuvent gérer les choses complexes, ET sont "sur la même page" en ce qui concerne la qualité du code.
la source