Aucun de nous n'a commencé comme des experts (et la plupart d'entre nous ne sommes toujours pas). Bien sûr, nous savions tous écrire des programmes dans nos langues préférées, mais écrire des applications de qualité et écrire des programmes syntaxiquement corrects sont deux choses très différentes. Nous travaillons, nous apprenons, nous luttons, nous continuons à apprendre et, éventuellement, nous atteignons ce seuil où d'autres peuvent apprendre de nous. P>
Si votre processus d'apprentissage était comme le mien, vous avez probablement écrit quelques applications fonctionnelles parfaitement fonctionnelles et fiables qui sont toujours utilisées quotidiennement, tout autant que je ne peux pas vous empêcher de vous faire honte chaque fois que vous les pensez. Code de procédure? Mélanger la logique d'affaires et de présentation? Vulnérabilités d'injection SQL? Fastelands of Code Sherren de tout commentaire? La liste continue. P>
Malheureusement, aucun de nous ne peut s'attendre à ce que nos employeurs nous permettent de revenir en arrière et de réécrire nos anciennes applications simplement parce qu'ils nous donnent des cauchemars chaque fois que nous pensons à eux. Pire, certains d'entre nous doivent en réalité Comment gérez-vous avec les atrocités de programmation antérieures que vous avez commises et avec les personnes qui découvrent le secret sale que vous n'avez pas toujours connu ce que vous faisiez? p>
14 Réponses :
aucun regret. Si vous n'avez pas honte du code que vous avez écrit la semaine dernière, cela signifie que vous n'êtes pas amélioré en tant que programmeur; -) p>
Sérieusement, mon approche a toujours été de réparer des choses dangereuses (vulnérabilités d'injection SQL par exemple) avec urgence forte> puis à refacturer une autre laideur de code si et quand je travaille dans un particulier zone qui a besoin de refactoring. Lors de la réparation de bugs ou d'introduire de nouvelles fonctionnalités, je garde souvent une liste de bits de code nécessitant un refactoring, puis refactorisez le code après mon travail avec ma "vraie" tâche. Cela ne prend généralement pas de temps inordonné à faire et j'ai des tests unitaires pour m'assurer que je n'ai rien brisé (si votre code n'est pas testé unitaire, c'est une grande raison de l'obtenir tester!). p>
Jeff Atwood a écrit un excellent article de blog dessus il y a quelque temps ( ici ). p>
Cela me dérangeait plus que cela ne le fait maintenant. Je suis venu à la réalisation que cela fait partie du processus de développement. Personne n'a commencé (ni même maintenant) écrit un code parfait à partir du jour 1. À plusieurs reprises, le code que vous avez écrit était suffisant compte tenu des technologies et des ressources que vous avez eues à cette époque. Ce n'est pas juste (pour vous ou quelqu'un d'autre) de comparer le code que vous avez écrit il y a 10 ans avec une date limite de 1 semaine avec ce que vous pouviez faire aujourd'hui avec des technologies et des ensembles de compétences actuelles. p>
C'est une excellente question. P>
Sauf si vous écrivez un logiciel open-source ou je viens de vider votre ancien code en ligne, je ne pense pas que ce soit aussi grave problème, car les futurs employeurs ne verront pas vos indiscrétions passées. Vous n'êtes probablement probablement probablement pas lié à vos anciens employeurs et ils ne libèrent pas le code source. P>
La plupart des développeurs (bons) développeurs s'améliorent avec le temps et les pairs passés se rendront compte que vous êtes probablement mieux que vous n'étiez alors que vous n'êtes alors probablement préférable. Votre employeur vous a payé en fonction de votre expérience, puis plutôt que votre expérience maintenant, alors ils ont reçu ce qu'ils ont payé. P>
Si quelqu'un d'autre à part, vous vous soucie suffisamment de votre application et l'utilise quotidiennement, ils sont libres de le maintenir (s'ils ont le code source). Le code va faire obstacle. Une application qui ne peut pas être maintenue, améliorée et retégrée est soit parfaite (improbable), soit pas assez importante pour valoir l'effort. Si un ancien employeur continue de gagner de l'argent sur votre ancienne application sans le maintenir, c'est leur problème et le problème de leurs clients, et éventuellement la vache à la caisse sera sèche. P>
Si vous sentez que votre demande est largement utilisée, le code est librement disponible, et quelque chose est susceptible d'être présenté sur le prochain message THEDailyWTF, allez-y et corrigez-le. Sinon, soyez heureux qu'il y ait assez de vieux code médiocre là-bas afin de ne pas attirer l'attention. P>
Je pense que la merde textuelle est la merde textuelle que nous quittons depuis nos anciennes postes de forum antérieurs, des poteaux de blogs incorrects, des guerres de flamme sur les caractéristiques linguistiques, etc. p>
Chaque fois que j'ai fait quelque chose de moins que de manière optimale comme un enfant, mon père dirait bien, "bien, la vie est une expérience d'apprentissage." Nos applications peuvent aussi apprendre: p>
Dans chaque version de nos applications, nous livrons un mélange de modifications: p>
Si progressivement, nous travaillons pour remplacer le code gênant avec les troisième et quatrième éléments. P>
Parfois, vous pouvez laisser vos erreurs derrière. Je connais un développeur senior qui a été loué à l'écart d'une entreprise et j'ai demandé à produire quelque chose de similaire à ce qu'il avait écrit pour la première entreprise, mais meilleur em>. Ils lui ont donné le personnel et les outils, et il a fait em>. P>
Peut-être que vous êtes dans une organisation dans laquelle vous pouvez avoir ou non avoir l'occasion de corriger les erreurs passées. P>
Qu'est-ce que vous peut em> Est-ce que vous n'oubliez pas de rester modeste et utile aux personnes qui sont maintenant à une étape où vous étiez autrefois. p>
Le meilleur moyen de faire face à ces mauvais souvenirs est d'apprendre d'eux, car je suis sûr que vous en avez. Il est également important que vous demandiez pardon de vos membres de votre équipe que vous les étendez de la même manière. Plus important encore, lorsque vous vous souviendrez de ces "mauvais exemples" lorsque vous mentez des membres juniors de l'équipe. P>
Mes premiers programmes existent seulement sur TRS-80 cassettes où l'oxyde de fer est écaillé. Un couple sont imprimés avec une matrice de points thermiques 40 colonnes à sept broches imprimante qui a brûlé les lettres sur un papier couché métallique spécial argenté. Tout ce que le papier est devenu noir dans l'été un grenier. P>
Je crois que je suis bon. Mes plus anciennes atrocités sont détruits en toute sécurité. P>
En fait, il y a une atrocité qui continue à me ronger. J'ai créé un mode vidéo pour l'Amiga appelé « tranches de jambon a>, » qui était populaire pendant un certain temps. Il a changé les couleurs de base par ligne pour permettre image plus photoréaliste avec moins frangeant. P>
Je rapidement écrit un convertisseur et le spectateur. Dans le spectateur je me suis assis dans une attente de boucle occupée pour l'utilisateur de fermer l'image. Ce ne fut pas acceptable sur Amiga - le premier système informatique multi-tâches de marché de masse. Je aurais dû attendre événement près de la fenêtre. P>
Pour les âges, les gens ont dit que le mode vidéo est lent, mais il était juste mon spectateur exemple moche. Les graphismes coprocesseur a fait tout le travail par ligne de balayage. P>
Still me hante. P>
Vous avez fait tranché jambon! JE ME SOUVIENS QUE!
Il h. Drôle depuis combien de temps les journées d'Amiga semblent maintenant. J'ai eu la chance de rencontrer Jay Miner et RJ Mical et quelques-uns des autres Amiga. Bon temps.
Si ce n'est pas cassé, ne le réparez pas. P>
Je connais le sentiment que quelque chose pourrait être fait beaucoup plus simplement et élégamment, peut-être parce que vous comprenez mieux le cadre maintenant ou parce que vous avez appris de nouvelles techniques. Mais ce n'est vraiment pertinent que lorsque vous souhaitez étendre ou modifier du code, sinon laissez-le courir s'il fonctionne. Si cela ne travaille n'est pas em> (c'est-à-dire si c'est buggy, trop lent, mange des ressources, etc.), vous devez toujours le régler pour commencer et donc avoir peu de regret tout simplement. Sinon, bien, qu'est-ce que tu t'inquiètes? La beauté en code est tellement fugue ...; o) p>
De l'autre point de vue, si vous souhaitez travailler sur le code de quelqu'un d'autre, ou même votre propre code ancien, vous ne devriez pas être surpris de trouver un code sous-optimal. Nous le faisons tous. En fait, c'est une occasion de me sentir suffisante et de jouer au héros lorsque vous refactez avec succès l'ancien code. P>
Le code non optimal ne fait que partie du travail. Nous devrions nous attendre à ce que ce soit dans tous les coins et qu'il soit toujours prêt à refacturer l'ancien code lorsque nous devons le toucher. Ce n'est qu'un problème si la direction ne comprend pas et ne vous permet pas de le faire. P>
Cela peut être un acte d'équilibrage. J'ai été mordu par "Améliorer" du code qui travaillait, mais je pensais être moche et introduit un nouveau bogue stupide. P>
D'autre part, à plusieurs reprises de ma carrière, j'ai eu du mal à un peu de code de merde mal conçu (écrit par moi ou quelqu'un d'autre) - parfois pendant des semaines - parce que je ne pensais pas avoir le temps de répare le. p>
Dans chaque cas, j'ai finalement mordre la balle et l'ai fait à nouveau correctement, et les problèmes sont partis presque immédiatement. Ensuite, j'ai souhaité la répandre plus tôt - aurait été plus rapide à long terme. P>
concentrez vos efforts sur les sections qui vous donnent du chagrin réel - les sections que vous devez travailler sur (nouvelles fonctionnalités, corrections de bugs), mais vous avez peur de toucher parce qu'ils sont si fragiles ou hideux. < / p>
C'est probablement un bon indicateur - plus vous en avez peur, plus il doit être réparé. P>
-Tom bushell p>
Je m'excuse publiquement. Je voudrais saisir cette occasion pour m'excuser d'InewwindowManager. Désolé. P>
Je le libère anonymement sur le net et faire souffrir d'autres! Pas d'attente, je le fais sur mon blog et je me suis probablement ri de mes pairs. P>
Étant donné que le travail est toujours là et que vous avez toujours la chance de commettre de nouvelles choses, corrigez la merde et enregistrez! Il n'est jamais trop tard pour une solution de bogue. Et ce n'est rien d'être gêné. Tout le monde fait des erreurs. P>
Je crois aussi en l'honnêteté et qu'une bonne infraction est la meilleure défense. Dites juste fort, "c'est mon code et c'est la merde" et les gens vont rire avec toi :) Il n'y a pas besoin d'essayer de cacher votre code. C'est là dans votre VCS, avec votre nom quand même. P>
Je suis sûr que j'ai d'abord une sauvegarde des vieux trucs d'abord, tous deux au cas où je ne serais pas aussi intelligent que je pensais que j'étais "et" si je suis aussi intelligent que je pensais être, je peux le prouver ! ' :) p>
Il y a un nouveau service pour les codeurs: Bad Code Offsets . Payer pour compenser les atrocités de programmation antérieures ... p>