Traiter un défaut fondamental de conception lorsque vous êtes nouveau dans le projet [fermé]

13

Je viens de commencer à travailler sur un projet open source avec environ 30 développeurs. Je travaille sur la correction de certains bugs comme un moyen d'entrer dans la "boucle" et de devenir un contributeur régulier du projet. Le problème est que je pense avoir découvert une faille de conception fondamentale qui cause l'un des bugs sur lesquels je travaille. Mais j'ai l'impression que si je fais exploser cela sur la liste de diffusion, je vais me montrer arrogant, et certaines des discussions que j'ai eues sur la question sont en train de cogner la tête avec certaines personnes. Comment dois-je procéder?

Matt Phillips
la source

Réponses:

20

Même si vous êtes à peu près sûr qu'il s'agit d'un "défaut fondamental de conception", n'oubliez pas que vous êtes un étranger. Cela pourrait être là pour une bonne raison. Ou, selon l'ancienneté du projet, il aurait pu y être mis pour une bonne raison à l'époque et maintenant il est toujours là pour des raisons historiques.

Au lieu de "faire sauter ceci sur la liste de diffusion", essayez de poser une question. Quelque chose comme:

"Hé, je suis juste tombé sur X, et cela n'a aucun sens pour moi. Il semble que la bonne façon de mettre en œuvre ce serait Y, mais là encore je sais que je suis nouveau ici et je ne veux pas sauter à toutes les conclusions. Est-ce une erreur dans la conception, ou y a-t-il quelque chose qui me manque? Quelqu'un peut-il me remplir? Merci. "

L'ingénierie est l'un des rares endroits au monde où l'humilité est toujours considérée comme une véritable vertu, et poser des questions sur des "problèmes évidents" de cette façon est un très bon moyen d'obtenir de bonnes réponses et d'apprendre de nouvelles choses.

Mason Wheeler
la source
2
C'est définitivement dans la bonne direction. Je veux juste le faire d'une manière qui ne se détachera pas comme "Je sais que tu as tort et j'ai raison" et que j'en tire toujours quelque chose.
Matt Phillips
@Matt: Ensuite, dites-le "je ne sais pas si j'ai raison", et faites de votre mieux pour éviter de le rendre sarcastique ou accusateur.
Mason Wheeler
J'utiliserais quelque chose comme "Je ne comprends pas pourquoi cela se fait de cette façon. Ne serait-il pas préférable / plus facile / plus cool de le faire de cette autre façon? Je pense que cela aiderait aussi avec le bug XX"
Javier
2
Je pense que vous voudrez peut-être jouer avec le libellé un peu au lieu de dire directement "la bonne façon de mettre en œuvre ce serait Y". Le transformer en une pure question "est-il une raison pour laquelle Y n'est pas utilisé" fait passer le même point sans mettre le pied à terre. N'importe qui aura un ego quelque peu fragile lorsqu'il sera interrogé sur son propre code et en faisant appel à son expertise (pourquoi avez-vous choisi X au lieu de Y) au lieu de le contester (Y est / semble / se sent mieux / plus frais / plus facile que X) peut susciter une réponse plus favorable.
Steven
6

L'une des 48 lois du pouvoir :

Gagnez grâce à vos actions, jamais grâce à l'argument

Tout triomphe momentané que vous pensez avoir gagné grâce à une dispute est vraiment une victoire à la Pyrrhus: le ressentiment et la mauvaise volonté que vous suscitez sont plus forts et durent plus longtemps que tout changement momentané d'opinion. Il est beaucoup plus puissant d'amener les autres à être d'accord avec vous à travers vos actions, sans dire un mot. Démontrez, n'expliquez pas.

C'est celui que j'ai appris à la dure après de nombreux arguments inutiles.

Dans ce cas particulier, je vous conseille de proposer un morceau de code très simple et spécifique qui devrait fonctionner mais ne fonctionnera pas en raison de ce défaut de conception. Comme le dit le vieil adage, "Vous ne pouvez pas discuter avec le compilateur / interprète".

L'autre chose est que pour avoir une influence sur un groupe, il faut être perçu comme un membre du groupe . Même si vous avez rejoint l'entreprise, les gens ne vous perçoivent pas encore comme un membre du groupe. Ainsi, il pourrait être préférable de suivre le groupe établi jusqu'à ce qu'il apprenne à vous percevoir comme l'un d'eux.

Jason Baker
la source
5

Pourriez-vous demander pourquoi une conception particulière a été utilisée? De cette façon, vous pouvez obtenir plus de l'histoire en arrière car il peut y avoir de bonnes raisons pour lesquelles quelque chose a été choisi que vous ne savez pas. J'irais avec l'idée que vous n'êtes pas tout à fait l'expert qui peut choisir le design, mais s'enquérir peut être un moyen d'en savoir plus afin que vous puissiez éventuellement vous interroger sur cette faille que vous avez trouvée afin que le message ne soit pas vu comme appât à la flamme ou à la traîne.

JB King
la source
4

Vous n'aimerez probablement pas ça ... mais, voilà ...

Je travaille sur la correction de certains bugs comme un moyen d'entrer dans la "boucle" et de devenir un contributeur régulier du projet. Le problème est que je pense avoir découvert une faille de conception fondamentale qui cause l'un des bugs sur lesquels je travaille.

Non, non. Si vous le faisiez, vous ne seriez pas si hésitant à ce sujet. Le fait que vous-même ne soyez pas sûr de la "faille de conception fondamentale" signifie que vous n'en avez pas découvert une. Lorsque vous essayez de signaler l'erreur de quelqu'un d'autre, cela ne vous achète pas d'amis pour utiliser des superlatifs (comme "fondamentaux").

Ce que vous avez peut- être découvert est un design légèrement meilleur, pour le problème que vous rencontrez. Vous devriez probablement le tester à fond, car comme vous êtes nouveau dans le projet, il y a de meilleures chances que vous n'avez aucune idée de quoi vous parlez.

Mais j'ai l'impression que si je fais exploser ça sur la liste de diffusion, je vais me montrer arrogant

Le qualifier de «défaut fondamental de conception» apparaîtra certainement comme arrogant. D'ailleurs, même en soulignant qu'il peut s'agir d'un bug n'est pas la meilleure idée. Si vous ne savez pas (et pouvez le confirmer) que c'est un problème, alors vous devez poser humblement des questions et des recherches jusqu'à ce que vous le compreniez complètement . Mieux que celui que vous essayez de convaincre.

... et certaines des discussions que j'ai eues sur la question sont des coups de tête avec certaines personnes. Comment dois-je procéder?

Arrêtez. Ce n'est pas un problème moral, et cela ne tue personne (je suppose). Si vous avez l'intention d'être membre à long terme du projet, vous devez d'abord gagner la confiance avant de les interroger. Corrigez les bugs, faites un travail incroyable (par toutes les mesures des valeurs du groupe), concevez quelques fonctionnalités et gagnez une place à la table.

Ensuite, sans pointer du doigt ni appeler quoi que ce soit de cassé, faites humblement une suggestion pour améliorer la conception du groupe. Et vous feriez mieux de réfléchir à toutes les conséquences et les solutions, ou vous serez abattu pour être "naïf". Soyez prêt pour une discussion sur les raisons pour lesquelles votre conception est meilleure. Soyez prêt à perdre et perdez gracieusement.

Si votre idée est vraiment meilleure, elle sera finalement acceptée par le groupe (mais peut-être pas par le concepteur d'origine), le groupe s'en fiche ou le groupe est stupide. Dans l'un ou l'autre de ces derniers cas, pourquoi voudriez-vous de toute façon faire partie du groupe?

...

Si vous en êtes capable, l'alternative est de coder la putain de chose avec tant de sang avec brio qu'ils trembleront de stupéfaction devant vos prouesses de codage et n'auront d'autre choix que d'accepter l'élégante simplicité et la vérité éternelle de votre conception. Les développeurs ne compétence respect, mais vous devez être prudent - la punition pour incompétence (ou l' arrogance injustifiée) est assez sévère. Puisque vous posez cette question, cependant, je suppose que l'itinéraire d'arrogance brillant et sans vergogne n'est pas vraiment une option. ;)

Mark Brackett
la source
2
"Salut merci de m'avoir accueilli dans votre maison. En franchissant la porte, je veux que tout le monde dans la famille sache que leur bébé est laid et que quelqu'un l'a habillé de façon drôle."

Un bug est un bug, et c'est correct de l'appeler ainsi. Dire qu'elle est causée par un "défaut de conception", c'est pointer du doigt le type qui se trouve devant vous (comme le "papa") et lui dire qu'il est un idiot.

Inutile et contre-productif. Je suggère:

"En ce qui concerne le problème #blah, je pense que je peux le résoudre en faisant XY et Z mais je ne sais pas comment cela affectera le reste du projet. Est-ce que ça va?"

Où XY et Z corrigent le problème. Laissez-les vous dire que c'était un défaut de conception; il peut y avoir une autre solution. Ou les hypothèses derrière la «faille» peuvent être si profondes tout au long du projet que le changer corrigera le bogue mais cassera tout le reste!

Steven A. Lowe
la source