web-dev-qa-db-fra.com

Après des années de travail seul, d'autres développeurs verront enfin mon code (buggy). Que dois-je faire?

Je travaille sur un système seul pendant environ quatre ans. Je l'ai construit de la terre. Ce n'est pas un système parfait. C'est très complexe, c'est buggy et l'entreprise en est en train de prendre conscience de cela.

Après tout ce temps, d'autres développeurs de la société s'intéressent au projet et ils sont de plus en plus impliqués. Je suis un peu inquiet qu'ils me blâmeront pour les problèmes.

Suis-je paranoïaque? Avoir d'autres personnes ont connu une situation similaire? Comment puis-je adoucir l'éblouissement des projecteurs sur mon code de buggy?

66
w0051977

Tout le monde aime une bonne session Bash/WTF

Je suis maintenant inquiet de trouver des bugs et de me blâmer pour les problèmes.

bien sûr, ils trouveront des bugs. Vous l'avez dit vous-même: c'est Buggy (vous avez déjà trouvé des bugs) et complexes (c'est très susceptible d'en avoir plus).

et oui, ils vont vous blâmer pour cela. parce que c'est une grande base de code et ils seront habitués à l'habitude de suivre le problème de votre code. Et c'est est Votre code après tout.

cependant , cela ne signifie pas que tout ce que vous avez fait était mauvais, alors ils peuvent ( si Ils sont suffisamment patients et gentils) Venez loué les bits que vous avez bien réalisés ou reconnaissez la valeur dans des zones particulièrement bien conçues du code ( en supposant Celles-ci existe).

Suis-je paranoïaque

no , mais vous semblez un peu peur de critique , que ce soit juste ou non.

ou y a-t-il une logique dans cela?

Comme indiqué ci-dessus, c'est assez courant et normal. Ils trouveront des problèmes. Beaucoup d'entre eux. Tu as fait la chose. Il semble logique qu'ils vous blâmeront, comme vous l'êtes, après tout, responsable du code.

Cependant, ce n'est pas nécessairement votre faute pour la façon dont les choses devaient être faites : La société aurait dû consacrer plus de ressources et de globes oculaires au projet plus tôt et a mené des critiques plus régulières. Mais du point de vue des autres développeurs (et sacrément, sommes-nous le type piquant et de bashing ...) Il se transformera souvent en cas de "oh génial, encore un autre exemple de célèbre bad design pattern or practice".

Ajoutez beaucoup de subjectivité dans le mélange (décisions de conception, style de codage, etc.) et c'est une grande recette pour un code perpétuel Bash.

Quelqu'un d'autre a-t-il une expérience similaire?

À peu près quiconque a toujours écrit du code qui a été maintenu par quelqu'un d'autre ou qui est maintenu le code écrit par quelqu'un d'autre. C'est bien d'avoir été des deux côtés de la clôture.

Quelques conseils sur la préparation de votre main-over

  • Défense de vos décisions de conception.

    Prenez le temps de Expliquez le raisonnement derrière vos décisions de conception , bonne et mauvaise. Vous avez fait des choses à l'origine à cette époque et il y avait des raisons pour cela. Peut-être que vous le feriez différemment maintenant, et peut-être que vous connaissiez déjà une voie différente à l'époque, mais vous avez choisi de cette façon. Assurez-vous de dire pourquoi. Si, cependant, vous ne pouvez pas trouver une raison, alors ...

  • ... Ne faites pas d'excuses.

    Si quelque chose est affreux à cause de vous, dites-le. Ils vous respecteront plus pour cela. Si un morceau du code craint parce que vous étiez vert à l'époque, dites-le. Si cela craint parce que vous ne saviez pas une meilleure façon à ce moment-là, dites-le. Si cela craint parce que vous n'avez pas eu le temps, dites-le. Nous ne nous soucions pas Pourquoi Vous n'avez pas eu le temps. Mais il est bon de savoir que vous ne pouviez pas faire mieux à l'époque. Ne défiez pas le blâme où et quand il est mérité.

  • N'oubliez pas la 1ère règle de contrôle des dommages

    Obtenez-le à l'air libre avant que quelqu'un d'autre ne le fait.

    Et nous voulons dire tout cela et très tôt . Ce qui fonctionne pour les politiciens, les banquiers et les agences de presse et de marketing pour le code de la Crap (et tous les aspects de la vie).

    Si vos best-ups doivent sortir (et ici, ils le feront probablement), c'est mieux que ils sortent sur vos conditions et vous gardez le contrôle .

Ne pas transpirer

Vous serez embasté et vous feras frapper d'autres développeurs au fil du temps de votre carrière.

Assurez-vous simplement de le garder léger , positif et Ouvrir . C'est une rue à deux voies, alors soit gentille dans l'expédition une critique sévère mais justifiée , et être humble En acceptant votre part.

Et quoi que vous fassiez, détruisez les guerres saintes.

Expérience personnelle

Personnellement, je sais que j'ai parfois été très méchant aux collègues ou à dire des choses sinueuses sur le code qui avaient été écrits par des gens avant mon temps. Et pendant que j'espère que la plupart du temps, ma critique était au moins quelque peu fondée, je suis sûr que ce n'était pas, pour diverses raisons (probablement mauvaises).

Nous faisons tous cette merde. Ne prétendez pas autrement, mon compagnon lecteur fronçant les sourcils à cela. Je suis sur vous!

J'ai également été endommagé quelques fois et j'ai tenu mon terrain quand je l'ai jugé à droite (ou en vaut la peine d'en vaut stratégiquement). Mais j'ai aussi accepté blâme plus souvent que non, car je baisée up . Et je fais encore quotidiennement. Parce que, comme mentionné, il y a généralement une raison pour cela.

En conséquence de cela, il est devenu une tradition de tenir des sessions de coordination informelles avec des collègues. Ce n'est pas le mauvais type (bien que cela ait été débattu de tout cœur sur ce site si un "bon" type Bash peut exister). Juste le genre où vous revenez un vendredi après-midi et si vous sirotez votre café à la recherche de zones sombres de votre codeBase et mettez en évidence les meilleurs choix de la semaine. Ensuite, vous les réparez. Et vous n'abandonnez pas les blâmes pour eux. Vous ne dites même pas de "quelle façon stupide de faire x". Vous venez de vous ranger, refactorez-le, passez l'avis avec des collaborateurs afin que votre refactoring soit vérifié et que l'histoire ne se répète pas et vous passez à autre chose.

Et tu sais quoi? Parfois, vous aurez même frappé du code de merde quelque part et réalisez que c'était le vôtre et vous le soumettez humblement pour bashing. Parce que tu as sucé et qu'est-ce que juste est juste. Et vous l'épinglez à un mur virtuel ou physique pour tous de voir et souvenez-vous de l'éviter à l'avenir.

WTF per minute: the only good measure of code quality

Pour le compte rendu, lors de ma société, nous avons des réunions d'examen officiellement requises par nos processus et certains informels (bien plus fréquents) chaque fois que nous estimons que nous voulons que d'autres personnes vérifient nos affaires. Et ensuite, nous avons des sessions de coordination informelles, qui sont plus amusantes. Mais à la fin, ils ont tous le même résultat: nous améliorons le code, et c'est ce qui compte.

Comme Jeff Atwood le met dans qu'est-ce qui ne va pas avec le quotidien WTF (l'accent est mis sur son):

[Le quotidien WTF] est thérapeutique, même éducatif. Mais si le code en question est catastrophiquement stupide ou tout simplement mal apprécié, , nous devons faire quelque chose à ce sujet . Jusqu'à ce que nous fassions, nous perpétuons implicitement le cycle douloureux et coûteux de mauvais codeurs écrit un mauvais code, ad infinitum. Et cela nous fait mal tous.

Et en général, si vous l'approchez de cette façon, cela sort aussi positif. Vous améliorez le code et les gens ont tendance à devenir plus pardonnant. Nous nous souvenons de temps en temps de ce type de code, de piratage ou de code clairement non sensible, Mais alors quand un nouveau collègue montre et dit quelque chose comme "Hang on, comment quelqu'un pourrait-il avoir été si fou/muet quant à quelque chose comme ça ?!" Quand ils rencontrent dans l'une de nos archives de code Bash, nous avons simplement les épaules et dire "Hey, ils avaient probablement une bonne raison à ce moment-là, vous savez!"

Et puis vous espérez que les gens ont la même attitude après votre départ ... mais vous ne serez pas là pour savoir que de toute façon.

Bien sûr, un générateur de nombres aléatoires constants ou une fonction isEmpty(String) La mise en œuvre dupliquée sur 73 paquets différents peut sembler une stupidité totale. Et c'est, dans un scénario parfait. Mais, probablement, le gars n'était pas dans ce scénario parfait de conte de fées. Le gars avait une raison à ce moment-là. Peut-être pas un bon, mais ça n'a pas d'importance. Peut-être que c'était juste le son de Wooshing d'une date limite de vol.

Donnez-lui une pause. J'écris du code de merde tout le temps à cause de plus de raisons que je tenais compte de la liste. Nous faisons tous. Si vos collègues valent 2 cents et ne sont pas totaux jackasses, ils vous donneront le même avantage du doute.

Personne ne s'en fichte!

Mais encore une fois ... qui se dresse?

C'est ton code. Posséder à cela. Posséder à vos erreurs.


Note latérale: le cas de l'open-source

Ceci est un domaine où l'open source est dit briller. Après tout, dans les mots sages de quelqu'un d'autre:

Compte tenu de suffisamment de globes oculaires, tous les bugs sont peu profonds.

- Eric S. Raymond's Law Linus , extrait de la cathédrale et le bazar

Plus de globes oculaires pendant les phases de développement désigne une vraisemblance moindre que les bugs se ramènent pendant les phases de production. Vous ne devriez pas avoir peur de l'examen. .

Vous penseriez que la foule plus grande que la foule implique le struté. Mais assez étrangement, dans certaines grandes entreprises, le niveau de contrôle n'est pas lié à la taille de l'effectif d'ingénierie:

  • [super] Les entreprises comme Google ont un référentiel de code unique pour la plupart des projets, donc à peu près tout le monde peut voir, examiner et commentaire sur n'importe quoi.

  • [mauvais] Autres, pour de bonnes et de mauvaises raisons, compartimente tout et seulement quelques-uns de personnes d'examen. Le résultat est des bogues et duplication.

Open-Source encourage l'étreinte de la surveillance.

Oui, quelqu'un sera en mesure de déterrer cette erreur de rembourrage stupide que vous avez rédigé dans vos débuts qui ont déclenché une allocation de mémoire qui pourrait être exploitée pour provoquer une assez grosse grosse graisse avec des conséquences graves. Et alors? C'est parti maintenant, parce que quelqu'un l'a trouvé. Et personne n'est à dire que vous feriez toujours l'erreur maintenant. Ou peut-être que vous le feriez, car, bien, nous avons tous des jours où nous avons besoin d'un café. Ou peut-être que nous sommes toujours sucents. Mais peu importe, il y a un troupeau géant de personnes désireuses d'essayer votre code de merde et de le réparer - si cela vaut quelque chose pour eux à utiliser. Vous devez prendre ça Leap de foi : Acceptez que les gens seront généralement bienveillants et que vous ne serez pas cicatrisé pour la vie; Et vous ne serez pas marqué avec le sceau du le pire développeur du monde jamais . Tout le pays, cela vous aidera à améliorer au fil du temps. Le développeur isolé mythique peut aller mieux, mais il n'obtiendra pas les commentaires puissants et utiles reçus tout en travaillant avec une équipe.


si vous avez peur d'un examen minutieux, vous êtes dans le mauvais jeu.

104
haylem

J'espère que tu n'es pas blâmer. La société ne pouvait pas mettre les ressources nécessaires pour faire une application importante et complexe aussi robuste que possible, de sorte qu'ils avaient une JR. Dev y avoir. Peut-être que l'application ne devait pas être si critique à l'époque. Le fait qu'ils veulent continuer le projet montre probablement quelque chose de bien. Maintenant, vous pouvez obtenir de l'aide, apprendre quelques choses et refactorisez beaucoup de code. Rien de nouveau dans cette affaire.

J'aimerais que je possédais une société de logiciels et que certains dirigeants centraux ont tenté de blâmer un programmeur d'entrée sur les problèmes avec un tel projet. "Nous lui laissons coder pendant 5 ans sans aide, soutien ou revue de code, mais je pensais qu'il était un meilleur programmeur." Puis-je éventuellement tirer le gestionnaire assez rapidement? C'est une personne qui fait semblant d'être un gestionnaire et qui a complètement abdiqué sa responsabilité de ce projet.

5
JeffO

Gardez l'atmosphère positive

Assurez-vous que tous les programmeurs s'attendent à trouver des bugs. Assurez-vous qu'ils sont loués pour résoudre des problèmes. Exprimez merci que vous recevez l'aide que vous deviez passer à d'autres problèmes intéressants.

Évitez d'être défensive

Ne dites pas que vous êtes désolé. Ne soyez pas contrarié. En cas de défis, suggérez des processus améliorés pour les résoudre. Peut-être avez-vous besoin de nouvelles procédures de test? Peut-être avez-vous besoin de meilleures exigences?

3
dcaswell

ce n'est pas votre code. C'est le code des entreprises.

Ce sont eux qui vous ont permis d'aller 4 ans sans inspection extérieure sérieuse du code, ils devraient supporter la responsabilité. (Cela dit, vous l'avez écrit, une partie de la merde collera).

Je prendrais cela comme une opportunité de m'embarquer sur une expérience d'apprentissage vraiment géniale (si douloureuse). Si vous pouvez Soyez plus difficile de votre code que vos examinateurs , vous serez alors considéré comme un conducteur positif de cette phase plutôt qu'un facteur défensif négatif. .

3
NWS

Je suis dans la même situation que vous êtes. L'endroit où je suis est où je suis depuis 5 ans et j'ai passé 80% de mon temps à construire un système d'utilisation interne à partir de zéro.

C'est mon premier emploi, ce qui signifie que c'est le premier emploi que je suis arrivé après avoir obtenu mon diplôme. Je sais que si je devais commencer à travailler sur le même système aujourd'hui, je voudrais les choses différemment. Cependant, c'est la beauté de l'expérience. Tant que vous êtes capable d'identifier les erreurs que vous avez faites, c'est un bon signe. Cela signifie que vous avez appris quelque chose.

En ce qui concerne les choses que vous n'avez pas identifiée, mais que les autres seront probablement: embrasser les commentaires que vous obtenez et en apprends. N'ayez pas peur des commentaires que vous obtenez. Vous avez fait des choses pour une raison quand vous l'avez construite et aussi longtemps que vous expliquez pourquoi les choses ont été prises d'une certaine manière, alors il y a une bonne discussion. Après tout, vous êtes tous adultes, alors je suppose que vous en parlerez la façon dont les adultes sont adultes. Quant à la question de "blâmer"; Vous êtes celui qui a construit le système, il est donc inutile de parler de cela. Vous savez tous que c'est votre "faute". L'accent devrait être mis sur la manière de l'améliorer et vous aurez une bonne occasion d'apprentissage gratuitement.

J'adorerais si quelqu'un d'autre prendrait un coup d'œil au système que j'ai construit. Jusqu'à présent, je travaille seul et s'il y a quelque chose que cela me manque, il est capable de discuter de mon travail avec un collègue. Je dirais que vous devriez valoriser l'opportunité :-)

1
sbrattla

Comme d'autres l'ont dit, c'est l'occasion idéale d'apprendre et d'améliorer le projet.

En outre, j'essaierais également pour documenter l'état actuel d'un point de vue architectural élevé, si cela n'est pas déjà fait. Je ne parle pas de diagrammes de classe ici, mais plus le type de paquet ou de diagrammes de composants ou probablement des graphiques d'écoulement (données) très grossiers.

Cela aidera vos nouveaux boursiers à saisir une vue d'ensemble du projet en peu de temps et affichera automatiquement les endroits que vous souhaitez probablement faire quelques travaux de nettoyage.

1
Marcel