La plus grosse erreur que vous ayez jamais commise [fermé]

33

Semblable à la question que j'ai lue sur Server Fault, quelle est la plus grosse erreur que vous ayez jamais commise à un poste lié aux TI? Quelques exemples d'amis:

J'avais besoin de travailler sur un site de production, j'ai donc décidé de copier la base de données en direct sur le site bêta. Joli standard, mais quand je suis allé sur le site bêta, il tirait toujours des informations périmées. OOPS! J'avais copié la base de données bêta sur le site live! Merci mon Dieu pour les sauvegardes.

Et pour moi, j'ai créé un formulaire pour un événement qui devait se dérouler au cours d'une période donnée. Les participants remplissaient le formulaire pour avoir une chance de gagner et nous envoyions aux organisateurs de l'événement un fichier CSV de la base de données. Je suis allé dans la base de données et j'ai trouvé SEULEMENT 1 ENTRÉE, MINE. Lors de l’enquête, il semble que j’ai oublié une clé d’incrémentation automatique et qu’en raison de la configuration du serveur, il n’existait aucun moyen de récupérer les données perdues.

Je suis conscient que cette question est similaire à celle de Stack Overflow, mais celles que j'ai trouvées semblaient recevoir des réponses génériques plutôt que des histoires réelles :)

Quelle est la plus grande erreur / erreur de codage de tous les temps…

Brandon Wamboldt
la source
6
questions de guinness!
Junior M
Pourquoi cette question a-t-elle été fermée? Je ressens le besoin d’ajouter ma propre grosse erreur: j’ai installé un site Web en direct pendant trois heures (c’est-à-dire au statut 500 HTTP) après avoir été déployé dans Production après avoir été informé spécifiquement de NE PAS DÉPLOYER VERS LA PRODUCTION. Pire que tout, j’ai essayé de cacher l’erreur, mais le client a remarqué et ne semblait pas très heureux.
Maria Ines Parnisari
Facile pour moi. Retraits d’investissement payés, mais convertis en cents deux fois. Payé 3 mil au lieu de 30k. Finaliste - mauvaise clause SQL où. Notifié à 4 000 personnes que leurs investissements de 1 à 10 dollars ont augmenté de 1 800 dollars en une nuit. De toute évidence, certains de ces clients sont allés dépenser de l'argent. Récupéré assez rapidement financièrement. La confiance et la culpabilité brisées ne sont jamais vraiment disparues. Comment récupérer: prendre des responsabilités. Admettez votre erreur. Ne blâmez rien d'autre, même s'il y avait des facteurs contributifs. Cela a été rencontré avec compréhension et effort d'équipe pour le réparer. Le client a apprécié l'honnêteté.
Reasurria

Réponses:

54

Émettre une instruction SQL UPDATE avec une «mauvaise» clause WHERE qui correspond à tout.

Leçon apprise: Toujours émettre un SELECT d'abord pour voir ce qui sera changé.

Michael Stum
la source
15
Vous pouvez également définir autocommit sur false afin de voir combien de lignes seraient affectées.
Yevgeniy Brikman
2
Oh, j'ai fait ça. Très méchant ...
glenatron
4
Haha Je pense que tout le monde avec du SQL à son actif l'a déjà fait, moi inclus
billy.bob
3
C'est pourquoi les mises à jour doivent être effectuées sur dev en premier! Aucun correctif direct directement à prod. Et soyez très reconnaissant pour les tables d'audit si vous les avez en même temps.
HLGEM
13
Je l'ai fait une fois pour réinitialiser le mot de passe de quelqu'un. Après avoir défini le même mot de passe pour tout le monde, j'ai simplement dit à mon patron que le support technique recevrait de nombreux appels téléphoniques et que nous devions dire à l'appelant que nous devions changer de mot de passe pour des raisons de sécurité.
Barry Brown
36

Typo

Passé trois jours solides sur ce morceau:

if($func == "remove")
{
    $p->comments[$index]->removed = true;
    $p->save();
}
else if($func == "approve");
{
    $p->comments[$index]->approved = true;
    $p->comments[$index]->removed = false;
    $p->save();
}

Voir l'erreur? C'est le point-virgule à la fin de la else if. Je ne pouvais pas comprendre pourquoi mes commentaires supprimés n'étaient pas supprimés. Enfoncée dans la base de données, la requête AJAX que j’utilisais, les variables POST, had error_log's et alerts partout . Nous avons fini par ré-écrire la méthode et cela a fonctionné. Ensuite, j'ai fait un diff avec la version originale et remarqué le point-virgule.

Les typos sont les plus difficiles à retrouver dans une langue qui n'est pas compilée ou pré-vérifiée par quelque chose. Même de telles erreurs seraient difficiles sur un langage compilé. Changer un ==en =et soudain vous avez une affectation dans un if.

Josh K
la source
8
C'est ici que des outils tels que Resharper peuvent réellement être rentables - cela l'aurait souligné comme un avertissement et vous aurait incité à le supprimer.
Yaakov Ellis
24
Le titre est-il un jeu de mots (prévu)? : o
Agos
3
@Rogue Coder: la différence entre guillemets simples et doubles est infime. C'est une mauvaise utilisation du temps que de passer des cycles cérébraux à s'en inquiéter. Voir le test au bas de phpbench.com
Joeri Sebrechts
2
@ back2dos: Euh ... c'est vrai. Vous recommandez donc de supprimer toutes les langues citées en faveur de haXe? Quelque chose qui est apparu en 2005? Allez-y avec ça.
Josh K
10
Merci pour l’argument en faveur du One True Brace Style. +1
eswald
28

Penser que la programmation consiste principalement à créer de nouvelles choses sympas à partir de rien.

Tables Bobby
la source
1
Quand j'ai commencé, j'avais moi aussi cette pensée. Ensuite, j'ai appris qu'il y a beaucoup plus d'entretien que les autres peuples. C'est pourquoi j'essaie maintenant d'écrire le meilleur code (avec des commentaires) que je peux.
2
Il y a encore beaucoup de nouveau code à écrire. De nombreux projets open source nécessitent un codage à partir de zéro qui implémente les mêmes fonctionnalités qu'un système fermé.
PP.
23

Ma plus grande erreur a été de penser que la programmation est de l'argent facile ...

Marcelo de Aguiar
la source
27
Si vous commencez à programmer pour l'argent, vous devriez avoir une nouvelle carrière. Non pas que l'argent ne soit pas là, il le soit, mais vous avez besoin de l'amour obsédant pour la programmation qu'ont les vrais développeurs, ou vous allez
épuiser votre ordinateur
1
Vous avez fait un bon point. Je n'ai vraiment pas commencé à programmer pour l'argent, mais je pensais vraiment qu'il serait beaucoup plus facile d'en vivre. La programmation est ma passion et je le ferais même si je devais payer.
Marcelo de Aguiar
4
@johnc pareil irait pour la plupart des professions. Honnêtement, je ne comprends pas les gens qui vont à l'université pour "apprendre la programmation". J'ai commencé à 14 ans avec K & R. Je suis allé à l'université pour «apprendre l'électronique» - mais devinez quoi, je suis quand même devenu programmeur. Les meilleurs musiciens se sont enseignés. Les meilleurs programmeurs se sont enseignés. C'est la vie.
PP.
amen frère, amen
Messieurs
23

Supprimé accidentellement la base de données qui stockait toutes les informations client, l'historique des commandes et les factures remontant au début de l'entreprise (plusieurs années).

Pour être juste, mon employeur doit partager une partie du blâme cependant. Ils avaient la seule copie de cette base de données stockée sur le Mac SE (oui, c'était il y a longtemps) qu'ils m'avaient donnée (nouvel employé, premier emploi à la sortie de l'université) comme poste de travail et qu'ils n'avaient même jamais envisagé de faire une sauvegarde.

Alors, pensant que c’était une copie de la BD, je l’ai glissé dans la corbeille. En raison de la taille du fichier, il l'a immédiatement supprimé. Nous l'avons finalement récupéré après avoir payé un montant indécent à un service de restauration de données, mais pendant environ 5 jours, nous n'avons pas pu remplir ni facturer les commandes et n'avions aucun moyen d'accéder aux informations relatives à un client. Cela a pratiquement mis la compagnie de trois personnes à l'arrêt.

JohnFx
la source
15
Aie. Note à moi-même: Faites toujours une sauvegarde: même s'il est déjà supposé y avoir une sauvegarde.
Kramii réintègre Monica
1
@ Karmii: Le meilleur conseil, haut la main.
Chris
@Kramii - Heureux d'avoir appris cette leçon au début de ma carrière.
JohnFx
Vous n'avez pas été viré?
Mateen Ulhaq le
3
Il y avait suffisamment de reproches à faire. Je n'étais alors qu'un gamin et probablement plus naïf que je ne le serais aujourd’hui, à supposer qu’une vraie entreprise ferait tout ce qui est ridicule comme mettre la seule copie de la BD sur mon bureau. L'expérience m'a montré qu'il est insensé de surestimer le niveau de préparation de mon employeur, même dans une grande entreprise.
JohnFx
15

quand phpmyadmin a demandé:

"Vous êtes sur le point de détruire une base de données complète! Voulez-vous vraiment DROP BASE DE DONNÉES xxx?"

Je frappe Entrée.

Luis Melgratti
la source
26
Un excellent exemple du moment où une programmation défensive aurait permis d'éviter des problèmes majeurs. Si vous faites quelque chose dont les répercussions pourraient être graves, comme peut-être la suppression de tables / bases de données, définissez par défaut la réponse de l'utilisateur sur "Non" afin qu'il doive réellement accepter l'action.
Hugo
6
@ Hugo: +1. Un de mes professeurs à l’uni (ex-Unix / database sysadmin) disait: «chaque fois que vous faites quelque chose de grave, retirez toujours vos mains du clavier et restez assis dessus pendant environ dix secondes pour réfléchir à ce qui va se passer».
Tables Bobby
1
@Hugo: Je vais plus loin - "Vous êtes sur le point de détruire une base de données complète! Si vous voulez vraiment SUPPRIMER BASE DE DONNÉES xxx, tapez DELETE:"
Loren Pechtel, le
3
@Hugo @ Loren Pechtel - "Vous êtes sur le point de détruire une base de données complète! Une recherche sur le Web de votre identifiant a généré plusieurs occurrences de 'lol'. Cette action est donc refusée. Veuillez consulter votre administrateur ou apprendre à communiquer."
Détly
15

Pas sûr que ce soit ma "plus grosse erreur", mais certainement une mémorable. Au cours de ma première semaine ou deux à un nouvel emploi, j'ai été affecté à une petite "amélioration des fonctionnalités" qui impliquait de modifier l'ordre de tri de certains éléments sur l'une des pages les plus populaires du site. Je ne connaissais pas trop la base de code, mais j'ai rapidement trouvé le comparateur pertinent et ajouté des appels à quelques méthodes inoffensives à l'intérieur de la méthode compareTo sans trop y penser. Le code a été testé localement et QA sans problèmes et a été mis en ligne.

Le même jour, j’ai eu un face à face avec mon patron et avec un grand sourire, il m’a félicité d’avoir fait vivre mon premier "long métrage" si tôt après son arrivée. Nous avons tous les deux regardé pendant qu'il visitait la page correspondante pour voir la fonctionnalité en action. Le chargement de la page a pris 47 secondes. Mon cœur se serra. Il a rafraîchi la page: 53 secondes. Son sourire disparut. Je suis retourné à mon bureau et ai passé une longue soirée à déboguer et à appliquer des correctifs critiques au site en direct.

L’une des méthodes inoffensives que j’ai ajoutées était un appel de service à distance qui a entraîné au moins un succès dans la base de données. Dans chaque appel comparatif. Donc, sur une page où plus de 2 000 articles étaient triés, je faisais environ 6 000 hits DB (nlogn). Aie.

Yevgeniy Brikman
la source
La base de données a-t-elle été insérée dans votre code ou est-elle apparue dans une méthode / propriété que vous appeliez?
dbkk
Le hit de base de données était en réalité caché derrière une méthode qui ressemblait à un simple getter: j'ai ajouté un appel myObj.getFoo () dans la méthode compareTo. La JavaDoc de la sous-classe concernée a bien noté la possibilité d'un hit de base de données, mais la JavaDoc de l'interface myObj (ce que j'ai vu lors de l'écriture du code) n'en a pas parlé. Dans les deux cas, je pense que c'est une démonstration claire (a) de tests inadéquats en mon nom et (b) de ce qui peut arriver si vous ne suivez pas les bonnes conventions de nommage.
Yevgeniy Brikman
plus vraisemblablement, c’était le cas (très fréquent) où l’environnement de test n’était pas représentatif de l’environnement de production. Vous l'avez testée, elle a fonctionné convenablement, vous avez donc conclu que c'était bien, vous ne saviez jamais (et vous ne pouviez pas alors) que la base de données de test ne contenait qu'une fraction des données contenues dans la base de données de production.
Jwenting
15

J'ai fait ça:

rm -rf /bin

(En fait, je n'ai pas fait exactement cela. Ce serait stupide et inexcusable. Je l'ai fait d'une manière plus subtile et détournée, ce qui a essentiellement abouti à l'exécution de cette commande.)

Inutile de dire que le système Unix était devenu inutilisable après ce moment-là et devait être réinstallé. J'étais un administrateur système à l'époque et le responsable qui me supervisait était compréhensif.

L'expérience a été bénéfique. J'ai appris à répertorier des répertoires sans avoir à utiliser les commandes / bin.

echo *
Barry Brown
la source
+ 1 astuces apprises comme simuler ls et cat en utilisant uniquement les constructions en coque Bourne du mode mono-utilisateur sur un système DEC-BSD
Arcege
11

Le client souhaite envoyer par courrier électronique à l'ensemble de sa base utilisateur un courrier électronique personnalisé sur un événement. Lorsqu'il clique sur un lien de l'e-mail, il les connecte automatiquement à un formulaire dont la moitié des données sont renseignées.

J'écris le code, teste le code, cela fonctionne bien, les liens fonctionnent, c'est assez lisse. Après avoir vérifié et revérifié tout, je passe à la liste des concerts et on part.

La liste de diffusion en direct est nettement plus volumineuse que mes exemples de données et le serveur de messagerie tombe. Je dois arrêter mon application de console, puis réaliser que je vais devoir la redémarrer là où elle s'est arrêtée. Heureusement, cette fonctionnalité n’est pas trop difficile à ajouter et j’ai consigné les utilisateurs auxquels le courrier a été envoyé. C’est pour cela que le serveur de courrier est de nouveau opérationnel et que le code a été reconfiguré pour pouvoir redémarrer à partir du point où il avait échoué précédemment et pour mettre en pause. pour laisser le serveur de courrier rattraper son retard, on s'en va.

Malheureusement, j'avais réussi à ne pas mettre tout mon code à jour correctement. Je ne me souviens pas des détails de ce que j'ai fait, mais la requête pour obtenir les données de l'utilisateur obtenait un ensemble de données, la requête pour générer le hachage en obtenait un autre. Ainsi, si un utilisateur cliquait sur le lien, il obtiendrait un formulaire qui contenait les données personnelles de quelqu'un d'autre à partir des détails de son compte. Et ceci dans un secteur de niche où il y avait beaucoup de petites entreprises compétitives sur la liste.

Le téléphone n'a pas tardé à sonner chez le client ...

C’est la seule erreur jusqu’à présent qui m’a amené à proposer ma démission.

glénatron
la source
+1 pour les données réelles significativement plus grandes que les données de l'échantillon :-(
nakedfanatic
OMI c'est l'un des pires> _ <
sevenseacat
7

Une fois, j'ai utilisé une jointure en croix sans filtre. Travaillé très bien sur la base de données de test avec une fraction des données. Lorsqu'il a été déployé, il a abouti à environ 60 millions de lignes dans une requête moyenne.

Austin Salonen
la source
14
En fait, votre plus grande erreur a été de ne pas développer une base de données de la taille appropriée. N'utilisez jamais une petite base de données de test pour développer une base de données de production volumineuse. Vous ne pouvez écrire du code performant que si vous avez la base de données de la bonne taille.
HLGEM
7

J'ai écrasé un scanner laser de 100 000 $.

Le contrôleur stockait les positions sous forme d'entier, j'ai donc tout divisé par 10 000 pour obtenir la position réelle en pouces.

Lorsque le dernier chiffre était un 0, il était omis et l'axe Z était 10 fois trop éloigné.

Hillarity s'ensuit

Eric
la source
6

"Nous devons faire une réécriture."

D'autre part, c'était une application VB6 vieille de cinq ans.

Greg Buehler
la source
5

Permettre à mon responsable de me forcer à quitter un emploi que j'aimais. J'aurais dû le laisser foutre en l'air, se faire virer, puis j'aurais dû intervenir et nettoyer les pièces. Au lieu de cela, j'ai arrêté et je l'ai regretté depuis.

Henry
la source
17
Les gestionnaires sont rarement licenciés pour de telles choses. Pour accéder au niveau de manager, vous devez être très doué pour couvrir vos arrières; vous êtes probablement devenu le bouc émissaire à la minute où vous avez quitté l'entreprise. Vous auriez peut-être pu le gérer différemment, mais ne vous en faites pas.
Mark Ransom
s’il s’était égaré, vous auriez été blâmé et renvoyé (ou au moins passé un moment misérable jusqu’à ce que vous ayez quitté en disgrâce).
Jwenting
4

Il y a sept ans, mon patron et le propriétaire de l'entreprise, que je n'avais pas encore rencontrés, étaient si nouveaux dans ce poste, alors qu'ils étaient dans un autre État en train de faire une démonstration de notre site Web de recherche à quelques clients potentiels. Les frais d'adhésion ont été dans les cinq à cinq chiffres, donc ces démos ont été un gros problème pour notre jeune entreprise.

Au milieu de sa démo, alors que je travaillais sur une base de données, j’ai modifié la base de données en direct et mis à jour chaque question de sondage dans chaque enquête avec le même texte, quelque chose comme "Ceci est une question de test" en raison d’une faille dans le O. Mon collègue et moi-même avons lutté pour la sauvegarde et nous avons craqué, espérant qu'il ne faisait pas la démo de cette section du site à ce moment-là, mais qu'il attendait l'email en majuscule qui, avec gratitude, n'apparaissait jamais.

Le bon côté était que le patron a finalement jailli pour une boîte de développement.

Hans
la source
3

J'exécutais le réseau de liens de Xenu sur notre intranet pour essayer de dissiper certains des nombreux liens brisés qui se sont accumulés au fil des ans (la plupart, sans surprise, étaient des liens allant du wiki au lecteur de réseau partagé).

Après environ 30 minutes, j'ai commencé à remarquer que certains des nouveaux éléments comportaient des images bizarres. Il semblait que les gens utilisaient certaines des anciennes photos d'archives granuleuses qui se trouvaient sur le système, mais j'ignorais que penser avait ce qu'ils voulaient.

Dix minutes plus tard, j’ai remarqué que les articles présentés changeaient de façon aléatoire pour une raison quelconque. À ce stade, j'ai compris ce qui se passait. L'intranet utilise l'authentification Windows et certaines des fonctions (telles que la sélection d'images d'actualités et d'éléments présentés) ont été codées pour répondre aux demandes HTTP GET. Le vérificateur de liens utilisait mon authentification et avait parcouru des pages du côté de l’administrateur, faisant son travail avec loyauté et suivant everylink, il en trouva notamment des

/admin/displayItems/icon_update.asp?image=eastereggs.jpg&itemID=3174

Chao
la source
7
Cela semble être la façon dont beaucoup de gens apprennent quand il est approprié d'utiliser GET et quand il est approprié d'utiliser POST
Oli
D'accord, j'étais sur le point de commencer à travailler sur le réaménagement de l'intranet, ce qui plaçait fermement l'utilisation appropriée de GET et de POST au sommet des exigences. ASP MVC contribue également à rendre cette opération simple et intuitive.
Chao
1
pas vraiment votre erreur, mais une bonne histoire quand même :-)
Dean Harding
3

Jusqu'ici, ma seule erreur de torsion de l'estomac, d'augmentation de la fréquence cardiaque et de démangeaisons soudaines était de lancer une requête UPDATE sans clause WHERE. Heureusement, il y avait une sauvegarde des 15 dernières minutes et les données ne changeaient pas très souvent, ce qui me permettait de restaurer complètement les données en 10 minutes sans que personne ne le sache.

Rien de grave, mais j'ai eu des appels proches. Ils sont et restent des interlocuteurs proches, car j’ai entendu assez d’histoires d’horreur dans cette industrie pour que tout ce que je fais qui pourrait gâcher la situation se passe bien.

ShaunO
la source
1
Avez-vous commis des erreurs dans la base de données?
Jé Queue
@Xepoch, cela n'aidera que si vous avez commencé une transaction
CaffGeek le
1
@Chad, ne devrions-nous généralement pas présumer que tous les appels de données doivent être implicitement transactionnels?
Jé Queue
2
@ Xepoch, ne jamais assumer.
CaffGeek
1
@Char, j'ai une préférence personnelle pour le maintien de toutes les interactions de base de données dans les transactions. Ceux qui ne le font pas supportent des risques ou ont des analyses de rentabilisation qui ne s'en soucient pas. L'hypothèse de spécification et les MANDATS sont que nous allons commencer et gérer les projets de code avec la gestion transactionnelle de bases de données.
Jé Queue
3

Pour un robot sur lequel je travaille, nous gardons un journal de chaque exécution. Nous avons le robot et un simulateur, qui génèrent tous ces dossiers. Les fichiers journaux du simulateur sont inutiles, mais les fichiers journaux du robot sont très utiles et sont stockés pour toujours.

Comme le robot lui-même dispose d'un espace disque limité, il est transféré sur un autre ordinateur et stocké sur celui-ci. Cet ordinateur se trouve être le principal ordinateur utilisé pour communiquer avec le robot.

Eh bien, je venais de commencer à travailler sur le robot quelques mois plus tôt et je ne le savais pas. Je pensais que les journaux de l'ordinateur d'exploitation étaient ceux inutiles générés par le simulateur et les supprimaient. Nous avons perdu tous les anciens journaux car il n'y avait pas de sauvegarde adéquate.

Jsternberg
la source
8
Zut ... je veux travailler sur des robots! Tout ce que je fais toute la journée est de construire des sites Web moche.
Dan Ray
2

Construit une version de notre logiciel sur mon ordinateur au lieu de l'ordinateur de compilation car il était plus rapide (environ 4 heures plus vite, ce qui signifiait qu'il pouvait passer au contrôle qualité ce jour-là au lieu du jour suivant) et l'éditeur le souhaitait immédiatement.

J'ai eu une définition spéciale pour le débogage sur mon ordinateur qui a causé un bogue qui n'a pas été détecté dans le contrôle qualité. Ils ne l'ont détecté qu'à la fin des 4 semaines de tests de validation, mais c'était assez grave pour que la validation échoue.

Dominique McDonnell
la source
2

Supprimer une base de données de production par accident au lieu d'une version de développement. Je n'ai pas vu sur quel serveur je travaillais. Heureusement, la dernière sauvegarde a été produite il y a 4 heures et l'utilisateur n'a pas apporté beaucoup de modifications au système, donc pas de perte de données volumineuses.

Ernesto Otiz
la source
J'ai eu un collègue faire cela. Seulement, il pensait qu'il laissait tomber sa copie locale et non la copie. Nous étions tous en train de travailler puis nous l'avons entendu dire "OH SH ** !!!!" C'était un après-midi amusant.
Tyanna
2

La plus grande erreur que j'ai jamais commise est de ne pas avoir mon travail de contrôle de source sur ma machine de développement. Mon disque dur s'est écrasé et j'ai perdu des semaines de travail. C'est une leçon difficile à apprendre et quelque chose que je ne laisserai plus jamais arriver.

DaveK
la source
pas mon erreur, mais liée. La société pour laquelle je travaillais a fait compromettre l’un de ses serveurs Web, donnant ainsi à un intrus un accès root au serveur de contrôle de version (DMZ? Whazda?), Où il a immédiatement exécuté un "rm -r /"
jwenting le
2

Utiliser ==au lieu deequals pour la comparaison de chaînes en Java

nanda
la source
13
C'est la plus grosse erreur que vous ayez faite?
Chris
C'est beaucoup plus un problème en Java, où se ==trouve une comparaison de référence. En C #, ==fait une comparaison de valeur sur les chaînes, comme .Equals() cela a été dit, il y a quelques différences, voir la réponse de Jon Skeet ici: stackoverflow.com/questions/3678792/…
Tim Goodman
2
@ Tim: ça ne répond toujours pas que c'était "la plus grosse erreur que vous ayez jamais commise" ... Il serait bon de mettre en contexte les conséquences au moins ...
Dean Harding
Si la réponse la plus intéressante concerne la faute de frappe, en quoi ma réponse ici est-elle différente? Si vous êtes débutant, commettre cette erreur est presque impossible à déboguer et pourrait vous frustrer toute la journée.
Nanda
@ Dean: Ce n'est pas la plus grosse erreur que j'ai jamais commise ... Je clarifiais simplement la différence de comportement ici avec C # vs Java
Tim Goodman
1

J'ai dit à mon directeur que le simple fait qu'il soit VIEUX et possède plus d'années d'expérience que moi ne signifie pas que je le respecterai. La seule chose que je respecterais, c'est la CAPACITÉ. Je n'ai pas eu à faire face aux conséquences d'une déclaration aussi pathétique peut-être parce que j'étais programmeur junior que. En regardant en arrière, cela semble être ma plus grande erreur. Où était mon sens commun \ humilité ?? :-(

Geek
la source
2
Je suis en partie d'accord avec vous, le fait que quelqu'un ait plus d'expérience (en années) ne signifie pas qu'il est un meilleur programmeur. Il y a beaucoup de programmeurs qui peuvent écrire «xx années d'expérience» sur leur CV mais n'ont aucune idée de ce qu'ils font.
Bobby
Ils sont plus susceptibles d’avoir détecté une erreur stupide en cours de route, comme celles énumérées ici, qui en feront un développeur plus prudent
johnc
Pour être clair, l'erreur n'était pas d'avoir cette attitude. L'erreur était de dire que vous avez cette attitude.
Dan Ray
Je voulais dire cela à beaucoup de gens au fil des ans.
Reasurria
1

Cela est arrivé à un collègue ce mois-ci.

Il corrigeait un bug survenu lorsque vous envoyez un SMS à de nombreux téléphones portables. Habituellement, ces messages ne sont pas réellement envoyés pour économiser sur les coûts, mais en raison d'une mauvaise configuration dans notre base de données, ils ont été envoyés.

Coût: un mois de salaire du trafic SMS.

Carra
la source
c'est pas cher! :)
Jwenting
1

À la demande d'un responsable, j'ai copié /etc/sudoersd'une machine à une autre (même si cela n'aurait pas résolu le problème, mais ce n'est pas la question). Malheureusement, je sudodéplaçais le fichier copié à la place, sans remarquer que son propriétaire et ses autorisations étaient complètement erronés. À ce stade, personne n'avait de shell racine ouvert, personne ne le pouvait sudoet personne ne pouvait se connecter en tant que root car son shell était défini sur /bin/false. Et la machine était dans un entrepôt de données distant ...

Eswald
la source
1

Je voulais créer des fichiers de métadonnées pour chaque fichier d'un répertoire (c'est-à-dire pour chaque fichier). somedir/foo.bin , je voudrais créer un fichier fichier somedir/foo.bin.meta). Pour une raison stupide, j'ai décidé de créer les fichiers en ouvrant et en fermant un flux de fichiers via Python:

for fn in os.listdir(path):
    open(os.path.join(path, fn), 'w').close()

Pour une raison encore plus stupide, j’ai pensé qu’il était judicieux de tester ce script par rapport à un répertoire de mon disque dur comportant plusieurs concerts de données personnelles. Seulement après l'avoir lancé, j'ai réalisé que j'avais oublié de modifier le nom du fichier avant de le transmettre àopen et que je venais de tronquer chaque fichier de ce répertoire (ouch).

Heureusement, cela se trouvait sur un ordinateur personnel et ne causait aucun dommage à quelque chose d'important, mais j'ai quand même appris ma leçon.

Alan Plum
la source
1

Je travaillais pour une entreprise qui gère l'un des plus grands centres d'assistance clientèle de sociétés de télécommunications en Suède. Sur notre serveur, nous avions un logiciel qui réglementait la file d’appels entrants, le nombre d’appels que nous pouvions prendre, etc. Si cela ne fonctionnait pas, nous ne recevions aucun appel et les clients ne bénéficiaient d'aucune assistance.

Aaaaanyway, j'ai apporté une modification (mineure) au logiciel. J'aurais pu attendre une fenêtre de service pour la changer, mais je me suis dit: "Hé, ça va prendre une minute pour redémarrer le service, pourquoi s'embêter. La fortune préfère les audacieux". Donc je l'ai redémarré, malheureusement le fil était verrouillé, je ne pouvais donc pas le remplacer. Commençant à paniquer, je décide de redémarrer rapidement la machine (j'étais à distance). Malheureusement, dans ma panique, je clique plutôt sur "installer les mises à jour et l'arrêt": P

Inutile de dire qu’il n’y avait pas beaucoup d’assistance clientèle en Suède pendant une demi-heure avant que nous puissions le redémarrer.

Un collègue était pire que moi cependant, il a débogué le système de réponse vocale automatique une nuit et redirigé le numéro sur son téléphone portable. La seule chose qu'il a oublié de changer de téléphone, a pris sa journée de congé le lendemain et a laissé son téléphone portable au travail. Nous nous demandons pourquoi il sonnait constamment ce jour-là :)

Homde
la source
1

Argh, 23h, fermeture du laboratoire, rapide, rapide ...

$ enscript -o midterm.hs midterm.hs
$ submit midterm.hs
Error: submission is empty

Dieu non! FFS. Je voulais dire PS vous ****!

Orbite
la source
Excuses pour le style de langue, il est nécessaire pour l'authenticité.
Orbling le
0

Quelque temps auparavant, lors du codage du JS, je n’étais pas en mesure de faire la distinction entre "1" (un) et "l" "petit L". Même quand je tapais cette réponse, les deux ont presque la même apparence dans l'éditeur!

Gopi
la source
Pourquoi le vote bas?
Gopi
0

J'ai fait un langage de template pour site , dans une version antérieure de laquelle tous les paramètres HTTP étaient implicitement développés en tant que variables. Cela signifiait que vous pouviez écrire une URL telle que:

page.vis? body = <body> <p> Oh mon Dieu </ p> </ body>

Et cela ferait exactement ce à quoi il ressemble.

Heureusement, je n'ai aucun utilisateur (soupir), alors je suppose que ce n'était pas trop un risque de sécurité.

Jon Purdy
la source
0

Problème TSQL: trop d'instructions TSQL dans une seule fenêtre d'éditeur. J'étais un peu fatigué et les gens m'interrompaient à gauche et à droite et j'ai lancé une commande mettant à jour 47 000 enregistrements d'adresse, de ville, d'état et de zip-oops. Avait-il réparé dans environ 25 minutes, cependant.

Tim Claason
la source