Comment pouvons-nous rendre agiles agréables pour les développeurs qui aiment posséder de façon indépendante de gros morceaux du début à la fin


52

Nous sommes à peu près à mi-chemin de notre transition de cascade à agile en utilisant Scrum; nous sommes passés de grandes équipes de silos technologie / discipline à des équipes interfonctionnelles plus petites.

Comme prévu, le passage à l'agilité ne convient pas à tout le monde. Une poignée de développeurs ont du mal à s’adapter à l’agile. Je veux vraiment les garder engagés et stimulés et, au final, être heureux de venir travailler chaque jour. Ce sont des personnes intelligentes, heureuses et motivées que je respecte tant sur le plan personnel que professionnel.

Le problème de base est le suivant: certains développeurs sont principalement motivés par la joie de prendre un morceau de travail difficile, de réfléchir à un design, de réfléchir aux problèmes potentiels, puis de résoudre le problème pièce par pièce, avec seulement une interaction minimale avec les autres, sur une longue période. période de temps. Ils achèvent généralement leurs travaux à un niveau de qualité élevé et dans les délais impartis; leur travail est maintenable et correspond à l'architecture globale. Passant à une équipe multidisciplinaire qui valorise l'interaction et la responsabilité partagée du travail, ainsi que la fourniture de fonctionnalités de travail dans des intervalles plus rapprochés, les équipes évoluent de manière à ce que toute l'équipe parvienne à résoudre ce problème difficile. Beaucoup de gens trouvent qu'il s'agit d'un changement positif. Quelqu'un qui aime prendre un problème et le posséder indépendamment du début à la fin perd l'opportunité de travailler comme ça.

Ce n'est pas un problème avec les gens étant ouverts au changement. Certes, nous avons vu quelques personnes qui n’apprécient pas le changement, mais dans les cas qui me préoccupent, les individus sont performants, réellement ouverts au changement, ils font un effort, ils voient comment le reste de l’équipe est changer et ils veulent s’intégrer. Ce n’est pas le cas de quelqu'un de difficile, d’obstructionniste ou de désir de garder le travail le plus juteux. Ils ne trouvent simplement pas la joie de travailler comme avant.

Je suis sûr que nous ne pouvons pas être le seul endroit à ne pas avoir été dépassé à ce sujet. Comment les autres ont-ils abordé cela? Si vous êtes un développeur motivé par le fait de posséder personnellement une grande quantité de travail de bout en bout et que vous vous êtes adapté à une méthode de travail différente, qu'est-ce que cela vous a apporté?


7
There’s a great story of a manager of a Coca-Cola plant whose numbers were far better than his peers. When asked what his “secret” was, he said simply that rather than take a best practice and modify it to meet what the plant did, he instead modified the plant to match the best practice.Vous ne faites pas agile jusqu'à ce que vous compreniez pourquoi vous le faites.
Personne le

Montrez-leur que collaborer est plus amusant, car ils écriront un meilleur code, en apprendront plus et auront moins de problèmes.

Bien que les détails soient spécifiques à la programmation, il s’agit d’un problème générique de gestion du changement sur le lieu de travail et il serait préférable de l’inviter à l'adresse lieu de travail.se.
mattnz

Pour votre information, en plus des réponses ci-dessous, il ne faut pas oublier que l'agile ne signifie pas que vous ne pouvez pas envoyer Facebook ou WhatsApp. Cela signifie "comment" vous expédiez est différent, mais les individus peuvent posséder de gros morceaux. Par exemple, dans un cas, je possédais un grand système de déploiement, et notre objectif était de franchir toutes les deux semaines. L'expédition et le processus ne devraient pas avoir d'incidence sur la conception, le développement et la publication des fonctionnalités, etc. (à l'exception bien sûr de la mécanique).
Omer Iqbal

Réponses:


22

Je dirai qu'il y a très peu de magasins de logiciels qui ont la chance d'avoir la rare distinction où Agile n'a vraiment aucun sens en tant que méthodologie. Si toute votre équipe est composée de développeurs de logiciels vraiment exceptionnels possédant une compréhension approfondie des aspects de l'entreprise et de la longévité avec l'entreprise et les uns des autres, et si vos exigences commerciales et les besoins de vos clients sont généralement toujours similaires et rarement soumis à des changements en cours de route. Libérez-vous, vous avez la chance de travailler dans un environnement aussi rare où Agile peut probablement réellement faire mal.

Il est conçu pour être l'approche la plus efficace parmi des exigences commerciales et des besoins chaotiques et en constante évolution, des ressources de projet en constante évolution, ainsi que des délais serrés ou changeants. Un tel environnement est catastrophique pour le développement typique des chutes d’eau, car il est vulnérable aux changements d’équipe en cours de projet, vulnérable aux exigences changeantes et extrêmement vulnérable aux changements de date.

Je suis sensible aux membres de votre équipe qui ne trouvent plus de joie dans leur travail. Ce sont peut-être des personnes exceptionnellement talentueuses qui s’immiscent dans leur travail, mais au final, un certain nombre de facteurs échappant à leur contrôle peuvent tout de même tuer le projet. La meilleure façon d'aborder le développement des fonctionnalités est de perdre l'attitude et l'expression individuelles et de penser en termes d'approche d'équipe.

Si vous trouvez que cela ne fonctionne pas pour eux, vous pouvez leur trouver un usage spécial. S'ils sont exceptionnellement talentueux et expérimentés, voyez s'ils seraient intéressés par un rôle architectural, en présentant des conceptions et des approches de haut niveau, en expérimentant de nouvelles technologies et en faisant évoluer les meilleures pratiques. Demandez à ces personnes de contrôler et d'examiner la documentation de conception.

Si cela ne leur convient pas encore, demandez-leur de travailler séparément sur des réaménagements techniques extrêmement complexes sur une branche distincte, des prototypes extrêmement complexes et des preuves de concepts, ou tout autre travail de pionnier qui doit parfois être effectué mais qui ne cadre pas bien dans le futur. portée d'un projet ou d'une version unique.


Merci pour votre réponse. Je pense que dans au moins un cas, nous nous tournons vers votre dernière suggestion lorsque nous le pouvons. Nous devons réfléchir à la manière dont le projet parallèle mené par une seule personne ne fait pas dérailler une grande partie de la propriété de la communauté que nous avons développée, mais cela semble en valoir la peine.
Kris

4
Si vous comptez faire cela avec quelques personnes, il vous suffit de faire attention à la manière dont cela affecte le moral des autres personnes qui travaillent réellement dans le cadre de projets. Ils peuvent avoir le sentiment que vous accordez un avantage particulier ou un traitement préférentiel aux personnes qui se plaignent.
maple_shaft

Veillez également à ce que tout le monde soit engagé et communique les uns avec les autres, même si quelques membres travaillent déjà à la pointe du progrès. Exemples: tout le monde assiste aux réunions quotidiennes et de planification; les pionniers devraient donner un aperçu de leur travail et présenter régulièrement leurs résultats (peut-être moins fréquemment que l'équipe Agile, mais toujours toutes les deux semaines ou tous les mois), tenir les chefs d'équipe informés des obstacles rencontrés par les pionniers (afin que ce dernier ne t continuer à poursuivre dans une impasse). Disclaimer: Je suis exactement ce genre de personne et je pense que ça peut très bien marcher.
rwong

1
D'un autre côté, si le personnel de développement d'une entreprise est principalement composé de pionniers et que leur consensus est qu'ils ne s'adapteront pas à un style de développement Agile, alors peut-être que ce personnel aura beaucoup de difficulté à adopter la pratique de développement Agile. D'autres approches doivent être recherchées. Les pionniers adorant expérimenter , il est nécessaire de recruter de nouveaux employés pour répondre aux besoins de production afin que l’entreprise puisse monétiser sa R ​​& D.
rwong

44

Ils ne trouvent simplement pas la joie de travailler comme avant.

Correct.

C'est un gros symptôme que vous le faites mal.

Agile ne devrait pas imposer un mauvais nouvel ordre aux gens.

Agile devrait permettre à l'équipe de s'auto-organiser de manière à la rendre plus efficace.

L'auto-organisation signifie que la direction n'impose pas de règles étranges. Il n'impose pas de mauvais horaires ni d'interaction inutile.

Certains développeurs sont principalement motivés par la joie de prendre un morceau de travail difficile, de réfléchir à une conception, de réfléchir aux problèmes potentiels, puis de résoudre le problème pièce par pièce, avec seulement une interaction minimale avec les autres, sur une période prolongée.

Pourquoi ne peuvent-ils pas continuer à faire cela?

Pourquoi les changer?

Veuillez lire le Manifeste Agile à quelques reprises.

Le Manifeste Agile dit

Individus et interactions sur les processus et les outils

Cela ne dit pas forcer les gens à travailler de manière inconfortable et improductive.

Si vous forcez les gens à trop d’interactions de faible valeur, vous êtes allé trop loin.

Logiciel de travail sur une documentation complète.

Est-ce qu'ils font ça? Puis laissez-les tranquille.

Collaboration client sur négociation de contrat.

Tu le fais déjà? Alors ne change pas.

Répondre au changement au sujet d'un plan.

Où ces gens sont-ils déjà capables de réagir au changement? Si oui, ils étaient déjà agiles. Ils n'avaient pas besoin de changer.


Je suis absolument certain que nous faisons certaines choses de travers. Nous ne considérons pas agile comme un ensemble de règles que vous devez appliquer d’une certaine manière pour avoir raison. Nous avons décidé d'éliminer certaines contraintes que nous avions auparavant et nous avons tout mis en œuvre pour constituer des équipes, leur confier un travail, leur attribuer des limites et leur laisser le soin de le faire. Bien sûr, il y a des contraintes auxquelles nous devons faire face; Par exemple, les équipes qui produisent du matériel dont dépendent d'autres équipes. Autant que possible, nous faisons de ce genre de problèmes quelque chose que les équipes doivent résoudre. ...
Kris

Nous ne nous attendons pas à poser nos stylos un jour et à nous dire «oui, notre transition est terminée, nous travaillons comme ça maintenant», car nous nous attendons à ce qu'elle évolue pour toujours. Dans tous les cas où un développeur a du mal à apprécier le travail, il est entouré de personnes qui apprécient maintenant davantage le travail. Les équipes sont habilitées à résoudre les problèmes elles-mêmes, s'organisent elles-mêmes pour régler les problèmes de la manière qui leur semble la meilleure. Il a été remarquable de voir comment les gens réagissent à cela. "Nous ne pouvons pas devenir agiles! Cela voudrait dire que nous aurions besoin d'investir tout ce temps dans le bla et de régler le problème au bla, et ça va coûter cher!" "C'est? Ok, vas-y." ...
Kris

1
@Kris: "à l'occasion, les membres de l'équipe ne se sentent plus récompensés comme auparavant". Correct. C'est parce que les choses ont changé. Vous voudrez peut-être considérer qu'une longue explication à mon égard (un étranger total) peut ne pas être aussi utile qu'une discussion longue et approfondie avec les personnes réellement aux prises avec le problème actuel. "Individus et interactions sur processus et outils". Parlez-leur. Qu'est-ce qu'ils n'aiment pas? Fixez ce qu'ils veulent réparer. S'ils veulent supprimer "Agile", supprimez-les et indiquez-leur des calendriers stricts. Continuer à permettre la modification de l'horaire.
S.Lott

1
@Kris: "ils ne voient pas que cela doit être corrigé. Ils pourraient ne plus y voir leur place". C'est contradictoire. Cela ressemble certainement à deux monologues parallèles: ils ont de graves problèmes et la direction leur dit que leurs plaintes ne correspondent pas aux objectifs organisationnels globaux. Cela semble qu'aucune partie du manifeste Agile n'a été lue ou comprise par aucune des parties. Ils ne sont pas vraiment "en interaction". Les mécontents ne sont pas autorisés à proposer une solution. Donc, ils ne voient pas que cela peut être corrigé.
S.Lott

1
Grand +1 pour "Cela ne dit pas forcer les gens à travailler de manière inconfortable et improductive." L'une des raisons pour lesquelles je crains toutes les méthodologies - en particulier lorsqu'elles deviennent populaires au point de devenir à la mode - est précisément la mentalité de l'emporte-pièce qu'ils semblent presque toujours engendrer chez ceux qui les mettent en œuvre.
JUSTE MON AVIS correct le

23

mon entreprise a essayé (et essaie encore après des années d’essais) de faire la même transition et jusqu’à présent personnellement, je n’ai pas eu beaucoup de succès avec cela. Au cours de cette transition, j'ai beaucoup lu sur le développement agile et sur différents aspects / préoccupations / techniques. Un point sur lequel je suis tout à fait d'accord est que le développement purement agile convient mieux à une équipe entière composée de personnes de haut niveau et de grande qualité. (ou du moins toutes les personnes du même niveau).

La dernière version, je faisais partie d’une équipe "agile" qui comptait un trop grand nombre de développeurs possédant des niveaux de compétence identiques et nous avons essayé de faire participer tout le monde au même projet. Ce fut un désastre. Nous avons plus parlé / discuté que travaillé, et à la fin, l’équipe a produit un travail moyen (lisez Peopleware ou Mythical Man Month sur la prise de moyenne). Oubliez les modèles de conception, oubliez le couplage faible ou le code de rupture en petites classes et méthodes. Oubliez d'essayer de faire quelque chose d'intéressant car a) cela ne pourrait pas être expliqué et compris par tous les membres de l'équipe (du moins pas à temps) et b) puisque nous étions agiles, quelle que soit la raison pour laquelle j'ai commencé cette itération, quelqu'un d'autre sans aucune compréhension continuerait à la prochaine itération. Personnellement,

Je détestais absolument le fait que je ne pouvais rien faire avec les modèles C ++, ni écrire des bibliothèques de frameworks de niveau inférieur (bien qu'un peu complexes) qui auraient beaucoup simplifié notre vie. Comment peut-on faire quelque chose comme ça alors que personne dans l'équipe n'est même capable de lire les fichiers d'en-tête STL alors que nous sommes tous supposés travailler sur une chose à la fois. Tout le projet a fini par être forcé, fonction par caractéristique, car c’est ce que l’agile semble souligner.

En même temps, il y a peu (très peu) de personnes dans mon entreprise avec lesquelles j'aimerais absolument travailler côte à côte et partager l'ensemble de mon code.

Mais maintenant, vous avez le choix. A) Prenez tous vos bons développeurs expérimentés qui produisent du code de haute qualité et mettez-les dans leur propre équipe et mettez le reste dans une équipe séparée. Ou B) essayer d’équilibrer les équipes et de mettre les bonnes avec les moins bonnes. En (A), le problème est que l’une de vos équipes sera sous-performante et ne récupérera pas les bonnes aptitudes / habitudes des bons. En (B), vos bons gars (dans un environnement purement agile) se sentiront frustrés et commenceront à travailler sur leur CV. Le mien est à jour.

Alors qu'est-ce que tu vas faire?

Je ne sais pas si c'est la bonne solution. Demandez-moi à nouveau dans environ un an ou deux. Mais que se passe-t-il si au lieu d'être "purement agiles", vous formez une équipe, mais identifiez clairement la ou les personnes qui ont le plus d'influence (conception, critiques de code, etc.) et assurez-vous que cette personne comprend cela et est récompensée pour ses responsabilités supplémentaires. Au fur et à mesure que les membres de l'équipe commencent à travailler ensemble, identifiez ceux qui adoptent de bonnes habitudes / pratiques et élevez-les au même niveau que vos bons collaborateurs. Espérons que lorsque les utilisateurs passeront une ou deux versions à travailler ensemble, ils apprendront ce que pense l'autre personne et comment ils travaillent, de sorte qu'ils seront plus compatibles pour travailler dans le même code en même temps. Mais jusqu'à ce que cela se produise, si vous vous contentez de lancer des personnes dans un projet, ce ne sera que frustration (encore une fois, à mon avis).

Certaines de mes pensées sont basées sur la façon dont j'ai commencé professionnellement dans le logiciel. Lorsque j'étais une coopérative, j'ai travaillé avec un gars qui était mon mentor. Il m'a tout appris, de l'éthique du codage au bon design en passant par la lecture de milliers de lignes de code que vous n'avez pas écrites. Au début, nous étions loin du même niveau et il serait risible de nous placer dans une équipe agile et de nous dire que nous pouvons travailler sur le code de chacun. Mais avec le temps (quelques années), nous avons commencé à penser de la même manière. Je pouvais comprendre son code d'un simple coup d'œil et il m'avait répété à plusieurs reprises qu'il n'avait absolument aucun problème (et qu'il en avait été étonné) de naviguer dans mon code qu'il n'avait jamais vu auparavant. Cela a pris des années, pas quelque chose qui s'est passé pendant la nuit. Après avoir connu catastrophe après catastrophe dans un environnement agile au cours des dernières années,

Ce n'est pas vraiment une réponse, mais cela résume mon expérience / mes observations. Je veux voir ce que les autres diraient à ce sujet.


3
Commentaires: les commentaires servent à demander des éclaircissements et non à prolonger la discussion. Si vous avez une solution, laissez une réponse. Si votre solution est déjà publiée, veuillez la revérifier. Si vous souhaitez discuter de cette question avec d'autres personnes, utilisez le chat . Voir la FAQ pour plus d'informations.

8

Qu'est-ce que l'agile?

Est-ce:

  • un ensemble de règles que vous devez suivre pour réaliser ce que les responsables de la réglementation voulaient?

  • une meilleure approche pour obtenir des résultats concrets en tenant compte de vos forces, de vos exigences et de vos limites?

Si vous pensez que Agile est le premier, et que vous suivez toujours chacune des règles Scrum et que vous vous inquiétez constamment de savoir si vous le faites correctement ou non, ce lien vous éclairera peut-être un peu.

Si vous pensez plus à la seconde, félicitations, vous obtenez Agile. Toute méthodologie Agile ne peut qu’être une suggestion de la manière dont on peut faire avancer les choses. Si un aspect de la méthode agile que vous avez choisie ne vous convient pas, vous devez alors cesser de l'utiliser, la modifier ou être autrement agile.à propos de ça. Ce qui est important, c’est que vous réalisiez quelque chose et que vous ne soyez pas freiné par des contraintes artificielles - et pas seulement par celles que nous connaissons et aimons depuis notre temps jadis, où le Premier ministre vous demandait des schémas complets et documentés que personne ne pourrait jamais imaginer. lire simplement parce que "c'est ce que le processus dit de faire", mais aussi des contraintes de ce que vous utilisez. Si une mêlée quotidienne ressemble à une contrainte, alors ne la cochez pas! Les avoir aveuglément parce que les règles le disent n'est pas plus agile que les anciennes méthodes.

Maintenant, si vous avez des gars qui font le travail en étant enfermés dans une pièce avec seulement un gallon de cola et une trappe pour une pizza, utilisez ce fait. Donnez-leur une partie du système essentiellement autonome et enfermez-les. Une fois qu'ils ont terminé, vous devriez les amener à intégrer ce travail (ou à le faire faire à quelqu'un d'autre s'ils le préfèrent) au reste du système.

Alistair Cockburn a décrit cela dans ses méthodes. Si vous avez des "praticiens de niveau 3", une méthode agile parfaitement valide est la suivante:

«Mettez 4 à 6 personnes dans une pièce avec des postes de travail et des tableaux blancs et donnez accès aux utilisateurs. Demandez-leur de fournir aux utilisateurs un logiciel en cours d'exécution et testé tous les mois ou tous les deux mois, sinon laissez-les tranquilles. "

Comme vous avez un mélange de personnes, vous devez trouver un moyen de les faire travailler ensemble de manière constructive. Cela signifie qu'une approche unique ne sera probablement pas très efficace. Vous devez donc diviser les tâches tout en veillant à ce que l'objectif commun soit souligné. C'est bien d'envoyer ces types au code, mais il faut leur faire comprendre que leur travail fera partie intégrante du reste du travail de l'équipe et que ne pas y parvenir est un échec de la production qu'ils produisent. . Une fois qu'ils ont compris cela (c.-à-d. Qu'ils ne peuvent pas faire ce qu'ils veulent et livrer quelque chose d'inutilisable), votre travail est terminé.


4

Disons que l'agile n'est pas pour tout le monde et l'agile n'est pas pour chaque projet. Dans le même temps, agile est un terme très large et Scrum n’est qu’une implémentation d’un processus agile - je peux dire en quelque sorte que cette implémentation est probablement la plus contraignante et qu’elle tente de mettre en place un processus standardisé comportant des étapes bien connues.

Un autre domaine à considérer est le but de l'agile. La manière dont les développeurs travaillent est-elle agile? Peut-être que certaines méthodologies vont effectivement dans cette direction. Mais l'agile lui-même couvre des zones en dehors du développement. Agile consiste davantage à diriger l'ensemble du processus, la manière dont une interaction fonctionne, la manière dont vous livrez le produit fonctionnel avec les fonctionnalités les plus importantes dans les temps, la façon dont vous contrôlez les ressources, comment vous voyez où vous vous trouvez dans le projet, etc.

Il existe des méthodologies qui n'essayent pas de changer votre processus de développement - Scrum n'est pas celui-là. Toutes les méthodologies agiles mettent l'accent sur l'amélioration continue. Vous détecterez une étape inefficace dans votre processus et vous essaierez de l'améliorer / de la changer - c'est la manière agile. Vérifiez une autre méthodologie agile populaire - Kanban.

Vous / votre entreprise avez décidé d’utiliser Scrum et cela peut conduire à ce que certaines personnes ne l’aimeront pas et partiront. Vous devez traiter chacun de vos développeurs séparément. Vous devriez en discuter avec chacun d’entre eux et essayer de trouver des centres d’intérêt qui leur permettraient de profiter à nouveau du travail.

Ils peuvent avoir un rôle de mentors, ils peuvent enseigner aux autres, leur montrer comment restructurer le code pour une meilleure architecture lors du travail itératif. Ils peuvent former ensemble un schéma d’architecture globale à utiliser dans tous les projets. Ils peuvent également travailler sur des preuves de concepts, participer à une demande d'informations lorsque les clients s'informent de la faisabilité des exigences. Ils peuvent travailler en binôme avec des développeurs moins qualifiés et s’acquitter de tâches complexes en commun, etc. Leur principale utilité devrait être d’utiliser leurs compétences et de permettre à d’autres d’en tirer des enseignements.

Scrum et agile à l’échelle mondiale retiennent effectivement les individus et hiérarchisent les équipes - les équipes livrent les applications, pas les individus. Cette idée est basée sur le fait que vous ne formerez jamais une équipe où tout le monde possède les mêmes compétences et la même expérience.

Si votre transition vers Scrum aboutit, ils devraient constater une amélioration du processus, une réduction des délais de livraison, une amélioration de la qualité et une plus grande satisfaction des clients. Ils peuvent toujours croire que les applications développées elles-mêmes sont bien pires qu’elles pourraient l’être, mais c’est l’essentiel - le client ne veut pas du meilleur code jamais écrit. Les clients veulent le code de travail minimal / le moins cher / le plus rapide qui réponde à leurs besoins. Si la force brute est suffisante pour cela, alors soit. C’est quelque chose qui peut poser des problèmes aux développeurs hautement qualifiés, mais ce n’est pas un échec de l’agile, c’est le lieu où les exigences commerciales et le perfectionnisme s’opposent.


2

Si vous résolvez certains des problèmes majeurs et que vous les transmettez à un excellent développeur, vous en bénéficierez. Tout le monde peut ensuite se mettre à niveau et apprendre quelque chose dans le processus. Juste ne construisez pas une application entière de cette façon.

Vous ne diluez pas le code au plus petit dénominateur commun. Vous faites le rattrapage inexpérimenté aux meilleurs développeurs.


2

Il y a eu beaucoup de discussions sur ce qui est ou non "agile" et beaucoup de sentiments personnels, d'expériences et de doutes concernant le processus agile partagé ici, mais je n'ai pas vraiment vu de réponse réelle à la question. La question initiale était de savoir comment garder vos meilleurs développeurs motivés quand ils voyaient leur code écrit au niveau purement artistique, et y investissaient leur sueur et leur sang, piratés par quelqu'un d'autre et "corrompus". Notez que, agile ou non, cela se produira à un moment donné, il est simplement plus visible maintenant, car ils travaillent toujours sur le code en même temps que d'autres, au lieu d'un transfert typique à prendre en charge, auquel cas ils ne voulaient tout simplement pas voir ces modifications apportées.

Ce que je verrais comme la clé ici est d’élargir la responsabilité de ces développeurs et de les aider à changer d’orientation. Cela signifie peut-être un nouveau titre, comme architecte logiciel, chef d’équipe ou ingénieur logiciel principal. Puis montrez-leur que c'est une opportunité d'avoir un impact plus important, pas seulement sur un projet à la fois, mais sur plusieurs projets. Le sentiment d'appartenance peut encore être présent, mais leur objectif ne devrait plus être de livrer un seul et même grand projet, mais d'aider à définir la barre pour TOUSprojets. Aidez-les à saisir leur fort désir de créer quelque chose de grand, mais concentrez-vous sur la construction des pratiques d'ingénierie logicielle de votre entreprise et des autres développeurs. Plutôt que de craindre que leurs collègues modifient leur code, cela peut être une chance pour eux de passer au niveau supérieur, d'encadrer leurs coéquipiers et de les amener à leur niveau.


Bonjour, mon intention n'était pas de voir son code piraté par le reste de l'équipe. J'ai vu le "Qu'as-tu fait à mon code !! Aargh!" chose quelques fois, en cascade et en agile, mais c’est un problème différent. Il s'agit des personnes qui découvrent qu'elles ne sont pas en mesure de prendre un travail et de travailler de manière autonome pour le terminer.
Kris

1
D'accord, ma réponse a peut-être été quelque peu tempérée par la discussion qui a eu lieu ici, mais si ce sont des personnes capables qui ressentent un manque d'appropriation à présent, je pense qu'il est toujours possible de les aider à se recentrer sur quelque chose qui pourrait en devenir la propriété. et toujours être des contributeurs majeurs à l'équipe.
Joel C

2

Je vais essayer d’illustrer certains aspects qui n’ont pas été traités dans d’autres réponses et qui, à notre avis, sont importants.

Le problème de base est le suivant: certains développeurs sont principalement motivés par la joie de prendre un morceau de travail difficile, de réfléchir à un design, de réfléchir aux problèmes potentiels, puis de résoudre le problème pièce par pièce, avec seulement une interaction minimale avec les autres, sur une longue période. période de temps. Ils achèvent généralement leurs travaux à un niveau de qualité élevé et dans les délais impartis; leur travail est maintenable et correspond à l'architecture globale.

Ce type de développeurs peut avoir du mal à s’adapter à un environnement agile et leur attitude est souvent qualifiée de "réticence à changer", éventuellement liée à l’ego ou à l’ancienne.

Ce que l’on ignore souvent, c’est que pour résoudre des problèmes complexes, il faut gérer beaucoup d’informations, ce qui peut nécessiter beaucoup d’analyses, de réflexions, de tentatives, d’esquisser une solution, de la jeter à la poubelle, d’en essayer une autre. Un problème aussi complexe peut nécessiter de quelques heures à quelques semaines de travail ciblé jusqu'à ce que vous obteniez une solution finale.

Une approche est qu'un développeur prend la spécification du problème, se rend dans sa chambre et revient deux ou trois semaines plus tard avec une solution. À tout moment (lorsque cela est nécessaire), le développeur peut initier des interactions avec d'autres membres de l'équipe ou avec les parties prenantes (en posant des questions sur des problèmes spécifiques), mais la majeure partie du travail est effectuée par le développeur à qui est confiée la tâche.

Que se passe-t-il dans un scénario agile? L’équipe décompose le problème en petits morceaux (user stories) après une analyse rapide (nettoyage). L'espoir est que les user stories soient indépendantes les unes des autres, mais ce n'est souvent pas le cas: pour diviser un problème complexe en plusieurs morceaux vraiment indépendants, il vous faut une connaissance que vous n'obtenez normalement qu'après l'avoir travaillé pendant plusieurs jours. En d’autres termes, si vous êtes en mesure de scinder un problème complexe en petites parties indépendantes, cela signifie que vous l’avez déjà résolu en principe et qu’il ne vous reste plus qu’un travail de diligence. Pour un problème qui nécessite, par exemple, trois semaines de travail, ce sera probablement le cas lors de la deuxième semaine, et non après quelques heures de toilettage effectuées au tout début du sprint.

Ainsi, après la planification d’un sprint, l’équipe travaille sur différents morceaux d’un problème qui ont probablement des dépendances entre eux. Cela génère beaucoup de temps de communication en essayant d’intégrer différentes solutions qui peuvent être aussi bonnes mais qui sont différentes les unes des autres. Fondamentalement, le travail d’essai et d’erreur est réparti sur tous les membres de l’équipe impliqués, avec une surcharge de communication supplémentaire (augmentant de façon quadratique). Je pense que certains de ces problèmes sont très bien illustrés dans cet article de Paul Graham, en particulier le point 7.

Bien entendu, le partage du travail entre les membres de l’équipe réduit les risques liés au départ d’un membre de l’équipe. D'autre part, les connaissances sur le code peuvent être communiquées de différentes manières, par exemple en utilisant des révisions de code ou des présentations techniques aux collègues. À cet égard, je ne pense pas qu'il existe une solution miracle valable dans toutes les situations: la propriété partagée du code et la programmation par paires ne sont pas la seule option.

En outre, "la fourniture de la fonctionnalité de travail dans des intervalles plus courts" entraîne une interruption du flux de travail. Cela peut être correct si la fonctionnalité est "Ajouter un bouton d'annulation dans la page de connexion" qui peut être complétée à la fin d'un sprint, mais lorsque vous travaillez sur une tâche complexe, vous ne souhaitez pas de telles interruptions: c'est comme essayez de conduire une voiture 100 km aussi vite que vous le pouvez et arrêtez-vous toutes les 5 minutes pour vérifier votre distance. Cela ne fera que vous ralentir.

Bien sûr, avoir des points de contrôle fréquents est censé rendre un projet plus prévisible, mais dans certains cas, l'interruption peut être très frustrante: on peut à peine gagner de la vitesse qu'il est déjà temps d'arrêter et de présenter quelque chose.

Je ne pense donc pas que l'attitude décrite dans la question concerne uniquement l'ego ou la résistance au changement. Il se peut également que certains développeurs considèrent que l’approche de résolution de problèmes décrite ci-dessus soit plus efficace, car elle leur permet de mieux comprendre les problèmes qu’ils résolvent et le code qu’ils écrivent. Forcer ces développeurs à travailler de manière différente peut réduire leur productivité.

De plus, je ne pense pas que le fait de faire travailler certains membres de l'équipe de manière isolée sur des problèmes spécifiques et difficiles soit contraire aux valeurs agiles. Après tout, les équipes devraient s'auto-organiser et utiliser le processus qu'elles ont jugé le plus efficace au fil des ans.

Juste mes 2 cents.


1
Some developers are primarily motivated by the joy of taking a piece of difficult 
work, thinking through a design, thinking through potential issues, then solving
the problem piece by piece, with only minimal interaction with others, over an 
extended period of time

On dirait qu'ils sont "Lone Rangers". Dans le Scrum canonique, ces personnes ne peuvent tout simplement pas faire partie de l'équipe (elles manquent le bit "interaction").

S'ils ne sont pas des "Lone Rangers", il y a de l'espoir. Si vous utilisez Scrum correctement, ils doivent faire partie de la conception de la fonctionnalité sur laquelle ils vont travailler (pendant la planification du sprint). C'est à peu près le seul moment où ils ont besoin d'interagir avec les autres. Vous pouvez même "assigner" toutes les histoires liées à cette caractéristique.

Pendant le sprint, ils seront seulement "dérangés" par le journal Scrum ... jusqu'à ce que vous puissiez leur prouver (par des actions, pas par des mots) qu'il ne leur restera que 15 minutes, et uniquement pour garantir que tout fonctionne correctement. doucement. Restez proche des trois questions et la plupart des gens cesseront de se conformer.

Dans notre équipe, nous avons un groupe spécial juste pour améliorer les performances. Nous ne les voyons pas beaucoup, juste au début du sprint pour parler des changements à apporter, et à la fin de la rétrospective. Ils ont leur propre "chef de file" qui rend compte à l'équipe Scrum of Scrum. Je peux vous dire qu'ils s'amusent.


3
-1 - pour supposer que les personnes exceptionnellement productives sont des gardes solitaires parce qu'ils ne se soucient pas de l'approche agile. Avez-vous déjà entendu les phrases "Tirer son potentiel" ou "Relever un défi". Peut-être que cela leur manque tout en pratiquant l'approche agile.
Dunk

Je n'ai pas supposé cela. Ma cloche a été déclenchée par "avec seulement une interaction minimale avec les autres" qui est la définition d'un Langer Ranger. Parfois, Lone Ranger est comme ça parce qu’il aime ça. Il y a une place pour eux mais ce lieu ne fait pas partie d'une équipe agile ("Interaction over Process"). Parfois, les Lone Rangers sont comme ça parce qu'ils n'aiment pas la politique, les "pratiques" du Premier ministre et la burocratie qui enlèvent tout plaisir à la programmation. Dans ce cas, le fait de changer d’environnement de la même manière que l’agile essaie de le faire changera le statut de Ranger solitaire et l’amusera dans l’équipe.
Soronthar

0

Si Joe (votre développeur Hero) est un peu flexible, alors je ne vois pas de problème:

Comme indiqué ci-dessus, laissez l'équipe s'auto-organiser: s'il est préférable de s'attaquer à certains problèmes en laissant Joe le mâcher lui-même, alors vous vous attendriez à ce qu'une équipe auto-organisatrice, ouverte d'esprit, parvienne à cette conclusion par elle-même.

Les seuls défis restant dans les quelques contraintes imposées par Scrum:

  1. Fournir des fonctionnalités à intervalles réguliers: si vous laissez Joe régler un problème pendant des mois, sans rien afficher jusqu'à la fin, Joe n'est en effet pas agile: il prend le propriétaire du produit en otage et ne lui permet pas de modifier les spécifications. cette partie du produit. Avec cette pratique, il risque également d'être en retard et personne ne le remarque. (Mais selon votre description, ce n'est pas si probable). Remède: Est-ce trop demander à Joe, de s'asseoir avec le bon de commande, de diviser la user story et de s'accorder sur les produits livrables intermédiaires, de préférence (mais pas nécessairement) avec la valeur utilisateur?

  2. Respecter les priorités définies par le propriétaire du produit: si des éléments de code appartiennent à des experts, vous risquez une situation dans laquelle l'évolution du produit est déterminée par la disponibilité de chaque expert, plutôt que par les priorités commerciales: le reste de l'équipe peut travailler sur des fonctionnalités moins importantes, alors que les 3 principales sont bloquées parce que "seul Joe peut le faire". C'est mauvais. À ce moment-là, l'équipe doit (temporairement) changer ses habitudes et répartir le travail de Joe entre plusieurs membres de l'équipe.

En bref: si Joe, le développeur héros, convient avec le bon de commande de la manière dont il affichera les progrès réalisés à chaque sprint, l'équipe peut alors lui assigner certaines histoires et le laisser tranquille. Mais si le bon de commande a trop de travail pour Joe et pas assez pour l'équipe (ou vice-versa), alors Joe et l'équipe doivent s'adapter, pas le bon de commande.


De plus, l'équipe devra peut-être se demander s'il y a une pénurie de compétences au sein de l'équipe, sachant que Joe n'est que "partiellement disponible" pour l'équipe.
rwong

-1

Les règles pour une équipe agile doivent être personnalisées pour s'adapter à l'équipe - ceci peut être une personnalisation vraiment personnelle; Par exemple, j'ai travaillé dans une équipe où la règle était la suivante:

Tout le code doit être écrit par un couple, sauf que David peut écrire du code seul.

David était un développeur / architecte senior, qui travaillait principalement sur des outils que d'autres utiliseraient dans leur propre code. Il possédait beaucoup le code qu'il avait écrit. Elle était maintenable et testée, et tous les membres de l’équipe savaient qu’il était probablement le meilleur codeur, et que l’équipe serait mieux servie en lui permettant de construire certaines pièces-cadres et de les présenter comme complètes à l’équipe.

Je n'ai pas de réponse pour les introvertis des variétés de jardins, mais pour les introvertis exceptionnels, l'équipe se fera un plaisir de suivre des règles différentes pour en tirer le bénéfice.


Cela me rappelle un code vestimentaire chez une entreprise à l'époque antédiluvienne. Le personnel du marketing a insisté sur le fait que les développeurs devaient avoir un code vestimentaire, car les marketroids voulaient parfois montrer la zone de développement aux clients. Heureusement, les patrons ont proposé un code vestimentaire de développeur: "Aucun développeur ne peut venir travailler dans une robe. Sauf Debbie." Cela aide lorsque la société est dirigée par des pirates informatiques ....
JUST MY correct OPINION

Pensez-vous que quelqu'un qui a besoin de temps et de concentration pour traiter un problème difficile est un introverti? Ne peut-il pas être nécessaire de se concentrer pour travailler sur des tâches difficiles sans vouloir être distrait?
Giorgio

Je m'apprête à rédiger ma propre réponse, dans laquelle je mets en exergue les critères d'évaluation des performances de tels "spécialistes d'équipes agiles": au lieu de payer pour "acquérir une quantité irremplaçable de connaissances", les spécialistes seront rémunérés en fonction de leur "capacité à augmenter la connaissance globale (domaine spécial) de toute l'équipe ".
rwong

@ rwong: Je ne pense pas qu'il faille être agile pour cela: toute équipe utilisant un processus de développement quelconque peut tirer profit d'une meilleure répartition des connaissances entre les membres de l'équipe.
Giorgio
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.