Größter Fehler, den du jemals gemacht hast [geschlossen]

33

Ähnlich wie bei der Frage, die ich bei Server Fault gelesen habe, ist dies der größte Fehler, den Sie jemals in einer IT-bezogenen Position gemacht haben. Einige Beispiele von Freunden:

Ich musste an einer Produktionsstätte arbeiten, also entschied ich mich, die Live-Datenbank auf die Beta-Site zu kopieren. Ziemlich normal, aber als ich auf die Beta-Seite ging, waren die Informationen immer noch veraltet. HOPPLA! Ich hatte die Beta-Datenbank auf die Live-Site kopiert! Gott sei Dank für Backups.

Und für mich habe ich ein Formular für eine Veranstaltung erstellt, die in einem bestimmten Zeitraum stattfinden soll. Die Teilnehmer würden das Formular ausfüllen, um eine Gewinnchance zu erhalten, und wir würden den Veranstaltern eine CSV aus der Datenbank senden. Ich ging in die Datenbank und fand NUR 1 EINTRAG, MEIN. Nach der Untersuchung scheint es, als hätte ich einen automatischen Inkrementierungsschlüssel vergessen, und aufgrund der Serverkonfiguration gab es keine Möglichkeit, die verlorenen Daten wiederherzustellen.

Mir ist bewusst, dass diese Frage ähnlich wie bei Stack Overflow ist, aber die Fragen, die ich gefunden habe, schienen generische Antworten zu erhalten, anstatt tatsächliche Geschichten :)

Was ist der größte Codierungsfehler / -fehler aller Zeiten?

Brandon Wamboldt
quelle
6
Guinness-Fragen!
Junior M
Warum oder warum wurde diese Frage geschlossen? Ich habe das Bedürfnis, meinen eigenen großen Fehler hinzuzufügen: Ich habe eine LIVE-Website für drei Stunden (dh 500 HTTP-Status) nach der Bereitstellung in der Produktion heruntergefahren, nachdem ich ausdrücklich angewiesen wurde, NICHT FÜR DIE PRODUKTION EINZUSTELLEN. Am schlimmsten war es, dass ich versuchte, den Fehler zu verbergen, aber der Kunde bemerkte es und schien nicht sehr glücklich zu sein.
Maria Ines Parnisari
Einfach für mich. Ausbezahlte Investitionen, aber zweimal in Cent umgerechnet. 3 mil statt 30k ausgezahlt. Zweitplatzierter - schlechte SQL-WHERE-Klausel. 4k Personen wurden darüber informiert, dass ihre Investitionen in Höhe von 1 bis 10 USD über Nacht um 1800 USD gestiegen sind. Offensichtlich gingen einige dieser Kunden und gaben das Geld aus. Ziemlich schnell finanziell erholt. Gebrochenes Selbstvertrauen und Schuldgefühle sind nie wirklich verschwunden. Wie man sich erholt: Verantwortung übernehmen. Gib deinen Fehler zu. Beschuldigen Sie nichts anderes, auch wenn Faktoren dazu beigetragen haben. Dies wurde mit Verständnis und Teamanstrengung erreicht, um es zu reparieren. Der Kunde schätzte die Ehrlichkeit.
Reasurria

Antworten:

54

Ausgabe eines SQL-UPDATE mit einer "schlechten" WHERE-Klausel, die zu allem passte.

Gelernte Lektion: Geben Sie immer zuerst ein SELECT aus, um zu sehen, was geändert wird.

Michael Stum
quelle
15
Oder setzen Sie Autocommit auf false, damit Sie sehen können, wie viele Zeilen betroffen wären.
Jewgenij Brikman
2
Oh, das habe ich getan. Sehr böse ...
Glenatron
4
Haha, ich denke, jeder, der SQL im
Griff
3
Aus diesem Grund sollten zuerst Updates für dev durchgeführt werden! Keine Hotfixes direkt zum stoßen. Und seien Sie sehr dankbar für Audittabellen, wenn Sie diese haben, wenn Sie dies tun.
HLGEM
13
Ich habe das einmal gemacht, um jemandes Passwort zurückzusetzen. Nachdem ich für alle das gleiche Passwort festgelegt hatte, teilte ich meinem Chef einfach mit, dass der technische Support viele Anrufe erhalten würde und dass wir dem Anrufer mitteilen sollten, dass wir aus Sicherheitsgründen das Passwort ändern müssen.
Barry Brown
36

Tippfehler

Verbrachte drei feste Tage mit diesem Stück:

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();
}

Fehler anzeigen? Es ist das Semikolon am Ende des else if. Ich konnte nicht herausfinden, warum meine entfernten Kommentare nicht entfernt wurden. In die Datenbank eingegraben, hatte die AJAX-Anforderung, die ich verwendet habe, POST-Variablen error_logund alerts überall . Es endete damit, die Methode neu zu schreiben und es funktionierte. Dann habe ich einen Unterschied mit der Originalversion gemacht und das Semikolon bemerkt.

Tippfehler sind am schwierigsten, eine Sprache zu finden, die nicht von irgendetwas kompiliert oder vorab überprüft wurde. Selbst solche Fehler wären in einer kompilierten Sprache schwierig. Ändern Sie a ==zu =und plötzlich haben Sie eine Zuweisung innerhalb von if.

Josh K
quelle
8
Hier können sich Tools wie Resharper wirklich auszahlen - dies hätte als Warnung hervorgehoben und Sie aufgefordert, es zu entfernen.
Yaakov Ellis
24
Ist der Titel ein (beabsichtigtes) Wortspiel? : o
Agos
3
@ Rogue Coder: Der Unterschied zwischen einfachen und doppelten Anführungszeichen ist verschwindend gering. Es ist ein Zeitmissbrauch, sich Gedanken darüber zu machen. Sehen Sie sich den Test am Ende von phpbench.com an
Joeri Sebrechts,
2
@ back2dos: Errr ... richtig. Sie empfehlen also, alle genannten Sprachen zugunsten von haXe zu streichen? Etwas, das 2005 zum ersten Mal erschien? Fahren Sie damit fort.
Josh K
10
Vielen Dank für das Argument für den One True Brace Style. +1
eswald
28

Zu denken, dass es beim Programmieren hauptsächlich darum geht, coole neue Dinge von Grund auf neu zu erstellen.

Bobby Tische
quelle
1
Als ich anfing, hatte ich auch diesen Gedanken. Dann erfuhr ich, dass es weit mehr Unterhalt für andere Völker gibt als alles andere. Deshalb versuche ich jetzt, den besten Code (mit Kommentaren) zu schreiben, den ich kann.
2
Es gibt noch viel neuen Code zu schreiben. Viele Open Source-Projekte erfordern eine Codierung von Grund auf, die die gleiche Funktionalität wie ein geschlossenes System implementiert.
PP.
23

Mein größter Fehler war zu denken, dass Programmieren leichtes Geld ist ...

Marcelo de Aguiar
quelle
27
Wenn Sie für das Geld programmieren möchten, sollten Sie eine neue Karriere starten. Nicht, dass das Geld nicht da ist, es ist, aber Sie brauchen die obsessive Liebe für die Programmierung, die wahre Entwickler haben, oder Sie werden sehr schnell
ausbrennen
1
Du hast einen guten Punkt gemacht. Ich habe mich wirklich nicht für das Geld programmiert, aber ich dachte wirklich, dass es viel einfacher sein würde, davon zu leben. Programmieren ist meine Leidenschaft und ich würde das auch tun, wenn ich dafür bezahlen müsste.
Marcelo de Aguiar
4
@ Johnc das gleiche würde für die meisten Berufe gehen. Ich verstehe ehrlich gesagt keine Leute, die zur Universität gehen, um "Programmieren zu lernen". Ich habe mit 14 Jahren mit K & R angefangen. Ich bin zur Universität gegangen, um "Elektronik zu lernen" - aber raten Sie mal, ich bin trotzdem als Programmierer gelandet. Die allerbesten Musiker haben sich selbst beigebracht. Die allerbesten Programmierer haben sich selbst beigebracht. So ist das Leben.
PP.
Amen Bruder, Amen
Misters
23

Versehentlich wurde die Datenbank gelöscht, in der alle Kundeninformationen, der Bestellverlauf und die Rechnungen gespeichert waren, die bis zum Beginn des Unternehmens zurückgingen (im Wert von mehreren Jahren).

Um fair zu sein, muss mein Arbeitgeber einen Teil der Schuld teilen. Sie hatten die einzige Kopie dieser Datenbank auf dem Mac SE gespeichert (ja, das ist schon lange her), die sie mir (einem brandneuen Mitarbeiter, erster Job außerhalb des College) als Arbeitsstation gaben, und hatten noch nie daran gedacht, eine Sicherungskopie zu erstellen.

Da ich dachte, es sei eine Kopie der DB, zog ich sie in den Mülleimer. Aufgrund der Größe der Datei wurde sie sofort gelöscht. Wir bekamen es schließlich zurück, nachdem wir einen gottlosen Betrag für einen Datenwiederherstellungsservice gezahlt hatten, aber für ungefähr 5 Tage konnten wir keine Bestellungen erfüllen oder in Rechnung stellen und hatten keine Möglichkeit, auf Informationen über einen Kunden zuzugreifen. Es brachte die (3-Personen-Firma) so ziemlich zum Erliegen.

JohnFx
quelle
15
Autsch. Hinweis für sich selbst: Machen Sie immer ein Backup, auch wenn es bereits ein Backup geben soll.
Kramii setzt Monica
1
@Karmii: Bester Rat, zweifellos.
Chris
@ Kramii - Froh, dass ich diese Lektion zu Beginn meiner Karriere gelernt habe.
JohnFx
Wurdest du nicht gefeuert?
Mateen Ulhaq
3
Es gab genug Schuld, um herumzugehen. Ich war damals noch ein Kind und wahrscheinlich naiver als heute, wenn ich davon ausging, dass ein echtes Unternehmen etwas so Dummes tun würde, als die einzige Kopie der Datenbank auf meinen Desktop zu stellen. Die Erfahrung hat gezeigt, dass es töricht ist, die Bereitschaft meines Arbeitgebers zu überschätzen, auch in einem großen Unternehmen.
JohnFx
15

als phpmyadmin fragte:

"Sie sind dabei, eine komplette Datenbank zu ZERSTÖREN! Möchten Sie wirklich DATABASE xxx TROPFEN?"

Ich drücke die Eingabetaste.

Luis Melgratti
quelle
26
Ein gutes Beispiel dafür, wann defensive Programmierung dazu beigetragen hätte, größere Probleme zu vermeiden. Wenn Sie etwas tun, das schwerwiegende Auswirkungen haben kann, z. B. das Löschen von Tabellen / Datenbanken, setzen Sie die Benutzerreaktion standardmäßig auf "Nein", damit sie der Aktion AKTIV zustimmen müssen.
Hugo
6
@ Hugo: +1. Ich hatte einen Professor an der Uni (ex Unix / Datenbank-Sysadmin), der sagte: "Wenn Sie etwas Ernsthaftes tun, nehmen Sie immer Ihre Hände von der Tastatur und setzen Sie sich ungefähr zehn Sekunden lang darauf und überlegen Sie, was passieren wird."
Bobby Tables
1
@ Hugo: Ich gehe weiter - "Sie sind im Begriff, eine vollständige Datenbank zu zerstören! Wenn Sie wirklich DATABASE xxx DROP möchten, geben Sie DELETE:"
Loren Pechtel
3
@Hugo @Loren Pechtel - "Sie sind im Begriff, eine vollständige Datenbank zu ZERSTÖREN! Eine Websuche Ihres Logins hat mehrfach 'lol' ausgelöst, und daher wird diese Aktion abgelehnt. Wenden Sie sich an Ihren Administrator oder erfahren Sie, wie Sie kommunizieren können."
Detly
15

Ich bin mir nicht sicher, ob es mein "größter Fehler" war, aber definitiv ein denkwürdiger. In den ersten ein oder zwei Wochen eines neuen Jobs wurde mir eine kleine "Funktionserweiterung" zugewiesen, bei der die Sortierreihenfolge einiger Elemente auf einer der beliebtesten Seiten der Website geändert wurde. Ich war mit der Codebasis nicht allzu vertraut, fand aber schnell den relevanten Comparator und fügte Aufrufe zu ein paar harmlos aussehenden Methoden innerhalb der compareTo-Methode hinzu, ohne zu viel darüber nachzudenken. Der Code wurde lokal und in der Qualitätssicherung ohne Probleme getestet und ging online.

Ich hatte einen 1 gegen 1 mit meinem Chef am selben Tag und mit einem großen Lächeln im Gesicht gratulierte er mir, dass ich mein erstes "Feature" so bald nach meinem Beitritt live bekommen hatte. Wir sahen beide zu, als er die entsprechende Seite besuchte, um die Funktion in Aktion zu sehen. Das Laden der Seite dauerte 47 Sekunden. Mein Herz sank. Er hat die Seite aktualisiert: 53 Sekunden. Sein Lächeln verschwand. Ich ging zurück zu meinem Schreibtisch und verbrachte einen langen Abend damit, kritische Patches zu debuggen und auf die Live-Site zu schieben.

Es stellte sich heraus, dass eine der harmlos aussehenden Methoden, die ich hinzugefügt habe, ein Fernwartungsaufruf war, der zu mindestens einem DB-Treffer führte. In jedem compareTo-Aufruf. Auf einer Seite, auf der mehr als 2.000 Artikel sortiert wurden, habe ich ~ 6000 (nlogn) DB-Treffer erzielt. Autsch.

Jewgenij Brikman
quelle
War der DB-Treffer in Ihrem Code offensichtlich oder trat er in einer von Ihnen aufgerufenen Methode / Eigenschaft auf?
dbkk
Der DB-Treffer war tatsächlich hinter einer Methode verborgen, die wie ein einfacher Getter aussah : Ich habe der compareTo-Methode einen Aufruf myObj.getFoo () hinzugefügt. Das JavaDoc in der entsprechenden Unterklasse hat die Möglichkeit eines DB-Treffers bemerkt, aber das JavaDoc in der myObj-Schnittstelle (was ich beim Schreiben des Codes angesehen habe) hat nichts dergleichen erwähnt. In beiden Fällen denke ich, dass dies ein klarer Beweis dafür ist, dass (a) in meinem Namen unzureichende Tests durchgeführt wurden und (b) was passieren kann, wenn Sie keine guten Namenskonventionen befolgen.
Jewgenij Brikman
eher war es der (sehr häufige) Fall, dass die Testumgebung nicht repräsentativ für die Produktionsumgebung war. Sie haben es getestet, es hat eine gute Leistung erbracht, und sind zu dem Schluss gekommen, dass es gut war, ohne zu wissen (und dass Sie es damals nicht konnten), dass die Testdatenbank nur einen Bruchteil der in der Produktionsdatenbank enthaltenen Daten enthielt.
Jwenting
15

Ich habe das gemacht:

rm -rf /bin

(Eigentlich habe ich genau das nicht getan . Das wäre dumm und unentschuldbar. Ich habe es auf subtilere Weise getan, was dazu führte, dass im Wesentlichen dieser Befehl ausgeführt wurde.)

Unnötig zu erwähnen, dass das Unix-System nach diesem Zeitpunkt unbrauchbar war und erneut installiert werden musste. Ich war zu dieser Zeit ein anfänglicher Sysadmin und der ältere Mann, der mich beaufsichtigte, war verständnisvoll.

Einige gute kamen aus der Erfahrung. Ich habe gelernt, wie man Verzeichnisse auflistet, ohne einen der Befehle / bin zu verwenden.

echo *
Barry Brown
quelle
+1 erlernte Tricks wie das Simulieren von ls und cat mit nur Bourne-Shell-Konstrukten aus dem Einzelbenutzermodus auf einem DEC-BSD-System
Arcege
11

Der Kunde möchte eine E-Mail an seine gesamte Nutzerbasis, die im Grunde genommen eine personalisierte E-Mail über ein Ereignis sendet. Wenn er auf einen Link in der E-Mail klickt, meldet er sich automatisch in einem Formular an, in dem die Hälfte seiner Daten ausgefüllt ist.

Ich schreibe den Code, teste den Code, es funktioniert gut, die Links funktionieren, es ist ziemlich glatt. Nachdem ich alles überprüft und nochmals überprüft habe, wechsle ich zur Live-Liste und los geht's.

Die Live-Liste ist deutlich größer als meine Beispieldaten und der Mailserver fällt um. Ich muss meine Konsolen-App anhalten und dann feststellen, dass ich sie an der Stelle neu starten muss, an der sie angehalten wurde. Glücklicherweise ist diese Funktion nicht allzu schwer hinzuzufügen, und ich habe die Benutzer protokolliert, an die das Mailout bereits gegangen ist, habe den Mailserver also wieder in Betrieb genommen und den Code neu konfiguriert, damit er von dem Punkt aus, an dem er zuvor fehlgeschlagen ist, neu gestartet und angehalten werden kann Damit der Mailserver aufholt, gehen wir.

Leider hatte ich es irgendwie geschafft, meinen gesamten Code nicht richtig zu aktualisieren. Ich erinnere mich nicht an die Details dessen, was ich getan habe, aber die Abfrage zum Abrufen der Benutzerdaten enthielt einen Datensatz, und die Abfrage zum Generieren des Hashs enthielt einen weiteren Datensatz. Wenn ein Benutzer also auf den Link klickte, wurde ein angezeigt Formular, das die persönlichen Daten einer anderen Person aus deren Kontodaten enthielt . Und dies in einer Nischenbranche, in der viele wettbewerbsfähige Kleinunternehmen auf der Liste standen.

Es dauerte nicht lange, bis das Telefon im Büro des Kunden klingelte ...

Das war der einzige Fehler, der mich bisher zum Rücktritt veranlasst hat.

Glenatron
quelle
+1 für reale Daten deutlich größer als Beispieldaten :-(
nakedfanatic
IMO dies ist einer der
schlimmsten
7

Ich habe einmal einen Cross-Join ohne Filter verwendet. Funktionierte einwandfrei in der Testdatenbank mit einem Bruchteil der Daten. Bei der Bereitstellung wurden in einer durchschnittlichen Abfrage ca. 60 Millionen Zeilen angezeigt.

Austin Salonen
quelle
14
Eigentlich war Ihr größter Fehler, dass Sie nicht gegen eine Datenbank der richtigen Größe entwickelt haben. Verwenden Sie niemals eine kleine Testdatenbank, um eine große Produktionsdatenbank zu entwickeln. Sie können keinen performanten Code schreiben, es sei denn, Sie haben die richtige Größe der Dabase.
HLGEM
7

Ich habe einen 100 000 $ Laserscanner abgestürzt.

Der Controller hat Positionen als Ganzzahl gespeichert, also habe ich alles durch 10000 geteilt, um die tatsächliche Position in Zoll zu erhalten.

Wenn die letzte Ziffer eine 0 war, wurde sie weggelassen, sodass die Z-Achse zehnmal zu weit war.

Hillarity folgte

Eric
quelle
6

"Wir müssen neu schreiben."

Andererseits war es eine fünf Jahre alte VB6-App.

Greg Buehler
quelle
5

Mein Manager durfte mich dazu bringen, einen Job zu verlassen, den ich liebte. Ich hätte ihn die Dinge vermasseln lassen, mich entlassen lassen und dann die Teile aufräumen sollen. Stattdessen habe ich aufgehört und es seitdem bereut.

Henry
quelle
17
Manager werden selten über solche Dinge gefeuert. Um zum Managerlevel zu gelangen, muss man sehr gut im Abdecken des Rückens sein. Sie wurden wahrscheinlich der Sündenbock, als Sie die Firma verließen. Vielleicht hättest du es anders angehen können, aber schlag dich nicht dagegen an.
Mark Ransom
Wäre er durcheinander gekommen, wären Sie beschuldigt und gefeuert worden (oder hätten zumindest eine miserable Zeit, bis Sie in Ungnade gefallen wären).
Jwenting
4

Vor sieben Jahren war mein Chef und Firmeninhaber, den ich noch nicht kennengelernt hatte, so neu im Beruf, dass er in einem anderen Bundesstaat eine Demo unserer Forschungswebsite für ein paar potenzielle Kunden machte. Die Mitgliedsbeiträge bewegten sich im niedrigen bis mittleren fünfstelligen Bereich, daher waren diese Demos eine große Sache für unser junges Unternehmen.

In der Mitte seiner Demo, als ich einige Datenbankarbeiten machte, nahm ich eine Änderung an der Live-Datenbank vor und aktualisierte jede Umfragefrage in jeder Umfrage auf den gleichen Text, etwa "Dies ist eine Testfrage" wegen eines Fehlers in das WO. Mein Kollege und ich suchten nach dem Backup und duckten uns, in der Hoffnung, dass er diesen Bereich der Website nicht gerade testete, sondern auf die E-Mail in Großbuchstaben wartete, die dankbarerweise nie aufgetaucht waren.

Die gute Seite war, dass der Chef endlich für eine Entwicklungsbox gefedert war.

Hans
quelle
3

Ich habe Xenus Link-Suche in unserem Intranet ausgeführt, um einige der vielen defekten Links zu beseitigen, die sich im Laufe der Jahre gebildet haben (die meisten waren, was nicht überraschend war, Links vom Wiki zum freigegebenen Netzlaufwerk).

Nach ungefähr 30 Minuten bemerkte ich, dass einige der neuen Objekte seltsame Bilder aufwiesen. Es sah so aus, als hätten die Leute einige der körnigen alten Fotos verwendet, die sich auf dem System befanden, aber ich ignorierte diesen Gedanken, dass es vielleicht nichts Neueres gab hatte was sie wollten.

Weitere 10 Minuten später bemerkte ich, dass sich die vorgestellten Gegenstände aus irgendeinem Grund zufällig änderten. Zu diesem Zeitpunkt wurde mir klar, was gerade geschah. Das Intranet verwendet die Windows-Authentifizierung, und einige Funktionen (z. B. das Auswählen von Nachrichtenbildern und empfohlenen Elementen) wurden codiert, um auf HTTP-GET-Anforderungen zu antworten. Der Link Checker hatte meine Authentifizierung verwendet und war zu Seiten auf der Admin-Seite gekrochen, hatte loyal seine Arbeit erledigt und hatte jeden gefundenen Link befolgt, einschließlich solcher wie

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

Chao
quelle
7
Dies scheint zu sein, wie viele Leute lernen, wann es angebracht ist, GET zu verwenden und wann es angebracht ist, POST
Oli
Ich war einverstanden, dass ich mit der Neugestaltung des Intranets beginnen wollte, und dies stellte die ordnungsgemäße Verwendung von GET und POST ganz oben auf die Anforderungen. ASP MVC hilft auch dabei, dies einfach und intuitiv zu tun.
Chao
1
Nicht wirklich dein Fehler, aber trotzdem eine gute Geschichte :-)
Dean Harding
3

Bisher habe ich nur eine UPDATE-Abfrage ohne WHERE-Klausel ausgeführt, die den Magen verdreht, die Herzfrequenz erhöht und plötzlich heiß und juckt. Glücklicherweise gab es in den letzten 15 Minuten ein Backup und die Daten änderten sich nicht sehr oft, was bedeutete, dass ich die Daten innerhalb von 10 Minuten vollständig wiederherstellen konnte, ohne dass es jemand wusste.

Nichts Schlimmes, aber ich hatte ein paar knappe Anrufe. Sie sind und bleiben enge Anrufe, weil ich genug Horrorgeschichten in dieser Branche gehört habe, dass alles, was ich tue, was Dinge vermasseln kann, eine gute Sache wird.

ShaunO
quelle
1
Machst du keine DB-Fehler, die du jemals als Rollback bezeichnen würdest?
Jé Queue
@ Xepoch, das hilft nur, wenn Sie eine Transaktion gestartet haben
CaffGeek
1
@Chad, sollten wir generell nicht davon ausgehen, dass alle Datenaufrufe implizit transaktional sein sollten?
Jé Queue 13.01.11
2
@Xepoch, nimm niemals an.
CaffGeek
1
@Char, ich habe eine persönliche Vorliebe für die Verwaltung aller DB-Interaktionen innerhalb von Transaktionen. Diejenigen, die dies nicht tun, tragen ein Risiko oder haben Geschäftsfälle, die es nicht interessieren. Die Spezifikationsannahme und MANDATEs sind, dass wir Code-Projekte mit transaktionalem DB-Management starten und pflegen.
Jé Queue 13.01.11
3

Für einen Roboter, an dem ich arbeite, führen wir eine Protokolldatei für jeden Lauf. Wir haben den Roboter und einen Simulator, die beide diese Protokollordner erzeugen. Die Protokolldateien des Simulators sind unbrauchbar, aber die Protokolldateien des Roboters sind sehr nützlich und werden für immer gespeichert.

Da der Roboter selbst nur über begrenzten Festplattenspeicher verfügt, werden sie auf einen anderen Computer übertragen und dort gespeichert. Dieser Computer ist der Hauptbediencomputer für die Kommunikation mit dem Roboter.

Nun, ich hatte vor ein paar Monaten angefangen, an dem Roboter zu arbeiten und wusste das nicht. Ich dachte, die Protokolle auf dem Betriebssystemcomputer wären die nutzlosen, die vom Simulator generiert wurden, und löschten sie. Wir haben alle alten Protokolle verloren, weil keine ordnungsgemäße Sicherung vorhanden war.

Sternberg
quelle
8
Verdammt ... ich möchte an Robotern arbeiten! Ich mache den ganzen Tag nur miese Websites.
Dan Ray
2

Erstellen Sie eine Version unserer Software auf meinem Computer anstelle des Build-Computers, da diese schneller war (etwa 4 Stunden schneller, was bedeutete, dass sie an diesem Tag anstelle der nächsten in die Qualitätssicherung gehen konnte), und der Herausgeber wollte sie so schnell wie möglich.

Ich hatte eine spezielle Definition für das Debuggen auf meinem Computer, die einen Fehler verursachte, der in der Qualitätssicherung nicht erkannt wurde. Sie haben es erst nach 4 Wochen Validierungstest entdeckt, aber es war schlimm genug, um die Validierung nicht zu bestehen.

Dominique McDonnell
quelle
2

Löschen Sie versehentlich eine Produktionsdatenbank anstelle einer Entwicklungsversion. Ich habe nicht gesehen, auf welchem ​​Server ich arbeite. Glücklicherweise wurde das letzte Backup vor 4 Stunden erstellt und der Benutzer hat keine großen Änderungen am System vorgenommen, so dass kein großer Datenverlust zu verzeichnen ist.

Ernesto Otiz
quelle
Ich habe das von einem Kollegen machen lassen. Nur er glaubte, seine lokale Kopie fallen zu lassen, nicht die gestochene. Wir arbeiteten alle und hörten ihn dann "OH SH ** !!!!" Das war ein lustiger Nachmittag.
Tyanna
2

Der größte Fehler, den ich jemals gemacht habe, war, dass ich meine Arbeit in der Quellcodeverwaltung nicht von meinem Entwicklungscomputer aus erledigt habe. Meine Festplatte ist abgestürzt und ich habe wochenlang Arbeit verloren. Es ist eine hart erlernte Lektion, die ich nie wieder zulassen werde.

DaveK
quelle
Nicht mein Fehler, aber verwandt. Die Firma, für die ich gearbeitet habe, hatte einen ihrer Webserver kompromittiert und einem Eindringling den Root-Zugriff auf den Versionskontrollserver (DMZ? Whazda?) Gewährt, auf dem er am
Uhr
2

Verwenden von ==anstelle von equalsfür den Zeichenfolgenvergleich in Java

nanda
quelle
13
Das ist der größte Fehler, den Sie jemals gemacht haben?
Chris
Dies ist in Java ein weitaus größeres Problem, da ==es sich um einen Referenzvergleich handelt. Führt in C # ==einen Wertevergleich für Zeichenfolgen durch, wie bereits erwähnt .Equals() , es gibt einige Unterschiede, siehe Jon Skeets
Tim Goodman,
2
@ Tim: das antwortet immer noch nicht, wie das "der größte Fehler war, den Sie jemals gemacht haben" ... Ein weiterer Kontext über die Konsequenzen wäre zumindest nett ...
Dean Harding
Wenn es sich bei der am häufigsten gestellten Antwort um Tippfehler handelt, wie unterscheidet sich meine Antwort hier? Wenn Sie Anfänger waren, ist es fast unmöglich, diesen Fehler zu beheben. Dies kann Sie den ganzen Tag frustrieren.
Nanda
@Dean: Es war nicht der größte Fehler, den ich jemals gemacht habe ... Ich habe nur den Unterschied im Verhalten hier mit C # gegen Java
Tim Goodman
1

Ich sagte meinem Direktor, dass nur weil er ALT ist und mehr Jahre Erfahrung hat als ich, das nicht bedeutet, dass ich ihn respektiere. Das einzige, was ich respektieren würde, ist die FÄHIGKEIT. Ich musste mich nicht mit den Konsequenzen einer solch pathetischen Aussage auseinandersetzen, vielleicht weil ich ein Junior Programmer war als. Rückblickend scheint dies mein größter Fehler zu sein. Wo war mein gesunder Menschenverstand \ Demut? :-(

Aussenseiter
quelle
2
Ich stimme Ihnen teilweise zu, nur weil jemand mehr Erfahrung (in Jahren) hat, heißt das nicht, dass er ein besserer Programmierer ist. Es gibt viele Programmierer, die "xx Jahre Erfahrung" in ihren Lebenslauf schreiben können, aber keine Ahnung haben, was sie tun.
Bobby
Es ist wahrscheinlicher, dass sie auf ihrem Weg einen dummen Fehler entdeckt haben, wie die hier aufgelisteten, der den Entwickler jedoch vorsichtiger macht
johnc
Um klar zu sein, der Fehler hatte diese Einstellung nicht. Der Fehler war zu sagen, dass Sie diese Einstellung haben.
Dan Ray
Ich wollte das über die Jahre vielen Leuten sagen.
Reasurria
1

Dies ist einem Kollegen in diesem Monat passiert.

Er hat einen Fehler behoben, der auftrat, als Sie eine SMS an viele Handys schickten. Normalerweise werden diese Nachrichten nicht gesendet, um Kosten zu sparen. Aufgrund einer falschen Konfiguration in unserer Datenbank wurden sie jedoch gesendet.

Kosten: ein Monatslohn für SMS-Verkehr.

Carra
quelle
das ist billig! :)
Jwenting
1

Auf Wunsch eines Managers habe ich /etc/sudoersvon einem Computer auf einen anderen kopiert (obwohl dies das Problem nicht behoben hätte, aber das ist nicht der Punkt). Leider habe ich sudodie kopierte Datei verschoben, ohne zu bemerken, dass der Eigentümer und die Berechtigungen völlig falsch waren. Zu diesem Zeitpunkt hatte noch niemand eine Root-Shell geöffnet, niemand konnte sudosich anmelden und niemand konnte sich als Root anmelden, da die Shell auf festgelegt war /bin/false. Und die Maschine befand sich in einem entfernten Data Warehouse ...

eswald
quelle
1

Ich wollte Metadatendateien für jede Datei in einem Verzeichnis erstellen (dh für jede Datei somedir/foo.binmöchte ich eine Datei erstellen somedir/foo.bin.meta). Aus irgendeinem blöden Grund habe ich beschlossen, die Dateien durch Öffnen und Schließen eines Dateistreams über Python zu erstellen:

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

Aus irgendeinem noch dümmeren Grund fand ich es klug, dieses Skript gegen ein Verzeichnis auf meiner Festplatte mit mehreren Aufträgen persönlicher Daten zu testen. Erst nach dem Ausführen wurde mir klar, dass ich vergessen hatte, den Dateinamen vor der Übergabe tatsächlich zu ändern , openund dass ich gerade jede einzelne Datei in diesem Verzeichnis (autsch) abgeschnitten hatte.

Zum Glück befand sich das auf einem PC und verursachte keinen Schaden an irgendetwas Wichtigem, aber ich lernte trotzdem meine Lektion.

Alan Plum
quelle
1

Ich habe für ein Unternehmen gearbeitet, das für einen der größten Kundenbetreuer von Telekommunikationsunternehmen in Schweden zuständig ist. Auf unserem Server gab es eine Software, die die Warteschlange für eingehende Anrufe, die Anzahl der Anrufe usw. regulierte. Wenn es nicht funktionierte, bekamen wir keine Anrufe und die Kunden bekamen keinen Support.

Aaaaanyway, ich habe eine (kleinere) Änderung an der Software vorgenommen. Ich hätte warten können, bis ein Servicefenster es ändert, aber ich dachte: "Hey, es wird eine Minute dauern, bis der Service neu gestartet wird. Das Glück ist mutig." Also habe ich es neu gestartet, leider war der Thread gesperrt, so dass ich ihn nicht ersetzen konnte. In Panik zu geraten, entschloss ich mich, den Computer schnell neu zu starten (ich hatte ein Remoting durchgeführt). Leider klicke ich in meiner Panik stattdessen auf "Updates installieren und herunterfahren": P

Es ist unnötig zu erwähnen, dass in Schweden in der nächsten halben Stunde nicht viel Kundensupport verfügbar war, bevor wir den Neustart schafften.

Ein Kollege war schlechter als ich. Eines Nachts haben wir das automatische Sprachantwortsystem getestet und die Nummer auf sein Handy umgeleitet. Das Einzige, was er vergessen hatte, war, dass er am nächsten Tag frei hatte und sein Handy bei der Arbeit ließ. Wir fragen uns, warum es an diesem Tag dauernd geklingelt hat :)

Homde
quelle
1

Argh, 23 Uhr, Labor geschlossen, schnell, schnell ...

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

O Gott, nein! FFS. Ich meinte PS du ****!

Orbling
quelle
Entschuldigung für den Sprachstil, er wird für die Authentizität benötigt.
Orbling
0

Vor einiger Zeit konnte ich beim Codieren des JS nicht zwischen "1" (eins) und "l" "kleines L" unterscheiden. Selbst als ich diese Antwort getippt habe, sehen beide im Editor fast gleich aus!

Gopi
quelle
Warum abstimmen?
Gopi
0

Ich habe eine Site-Template-Sprache erstellt , in der alle HTTP-Parameter in einer frühen Version implizit als Variablen erweitert wurden. Dies bedeutete, dass Sie eine URL wie folgt schreiben konnten:

page.vis? body = <body> <p> Oh je </ p> </ body>

Und es würde genau das tun, wie es aussieht.

Zum Glück habe ich keine Benutzer (seufz), also war es wohl kein allzu großes Sicherheitsrisiko.

Jon Purdy
quelle
0

Auf jeden Fall ein TSQL-Missgeschick - zu viele TSQL-Anweisungen in einem Editorfenster. War ein bisschen müde, und die Leute unterbrachen mich von links und rechts, und ich gab einen Befehl aus, der 47.000 Datensätze mit Adresse, Stadt, Bundesstaat und Postleitzahl aktualisierte. Hatte es in etwa 25 Minuten behoben.

Tim Claason
quelle