Die Daily WTF- Website sammelt seit 14 Jahren lustige, wilde und / oder traurige Geschichten aus der IT-Welt. Ich übersetzte mehrere Geschichten, die mir interessant erschienen. Alle Firmennamen und Namen wurden geändert. Frühere Ausgaben finden Sie unter dem Label "
kuriose Perversionen ".
Die erste Geschichte: "Nicht nur brillant"
[ Original ]Wir hatten alle Kollegen, die unseren Job nicht machen konnten.
Jarad hatte auch Glück.
Er arbeitete bei Initech in einer kleinen Gruppe von Entwicklern, die einen Windows-Client für Kunden erstellten, die ihn zur Interaktion mit ihrem Server verwendeten. Das Unternehmen hat beschlossen, die Anwendung von .NET nach Java zu portieren. Der wichtigste Leitfaden empfahl den
hoch angesehenen führenden Java-Entwickler Kisha von Intelligenuity als Projektmanager. "Mach dir keine Sorgen", sagte das Management. "Intelligenuity stellt nur die brillantesten Programmierer ein."
Bei der ersten Projektbesprechung gab der Manager bekannt, dass er Eclipse für das Java-Projekt verwenden werde. Kisha sagte: „Ich habe keine Sonnenfinsternis. Kann jemand senden? " Jarad schickte ihr einen Link. Beim nächsten Treffen fragte er sie, ob sie Eclipse installiert habe. Sie antwortete, dass sie das Medium nicht herunterladen könne und wartete auf das nächste Treffen, um um Hilfe zu bitten. Die Managerin rannte zu ihrem Auto und löste das Problem, indem sie auf den Download-Link klickte.
Fahren wir mit dem nächsten Treffen fort: Kisha sagte, dass sie nicht weiterarbeiten könne, weil "Eclipse einige Probleme mit dem JDK hat, kann es mir jemand schicken?" Jarad schickte ihr den Link erneut. Ein paar Tage später, beim nächsten Treffen, sagte sie: "Eclipse funktioniert nicht, weil es eine JAR-Datei benötigt. Kann jemand sie senden?" Und danach: "Kann mir jemand Code zum Erstellen von Klassen senden, weil Eclipse ständig eine
NullPointerException
?"
Schließlich änderte der Manager die Struktur der Besprechungen. Sie setzten ihre regulären Windows-Client-Besprechungen fort, fügten jedoch eine separate dedizierte Besprechung nur für Kishi hinzu. Im Laufe der Zeit stellte sich heraus, dass sie und ihr Mann Freunde eines sehr hochrangigen Führers und seiner Frau waren. Ein separates Treffen wurde abgehalten, um „seine erfolgreiche Arbeit sicherzustellen“; Dies bedeutete, dass der Teammanager Code für sie schrieb.
Kisha teilte dem Manager einmal mit, dass der Kunde ein
kritisches Problem mit dem Webportal habe und dass so schnell wie möglich ein Treffen mit dem Kunden stattfinden sollte, um sein Problem zu lösen.
Der Manager organisierte ein Treffen mit dem Kunden, sich selbst, Kishi, Jarad und dem Projektmanager, um das Problem ein für alle Mal zu lösen. Am Tag des Meetings war der Kunde von der Anzahl der Mitarbeiter und Manager des technischen Supports überrascht. Er erklärte: "Ähm ... das" Problem mit dem Portal "war, dass ich Kisha nach der URL des Webportals gefragt habe. Es war genug, um ihm einen Brief zu schicken. "
Manchmal passiert Gerechtigkeit in dieser Welt und Kisha hat dadurch ihren Job verloren.
Die zweite Geschichte: "Drei Monate Juckreiz"
[ Original ]Im März 2016 brauchte
Ian einen Job. Fast unmittelbar nach Beginn der Suche hatte er Glück: Er fand ein winziges Startup, das einen Mitarbeiter mit Kenntnissen der Python-Architektur und der Designfähigkeiten benötigte. "Winzig", denn neben Ian hatte das Unternehmen nur drei Entwickler unter der Leitung seines Gründers Jack.
Das Interview mit Ian wurde von Jack selbst geführt. Nach einem technischen Test erfuhr er mehr über das Projekt des Unternehmens: ein fast vollständiger Prototyp der iOS-App. Der Benutzer synchronisiert sein Telefon mit einem Herzfrequenzmesser am Handgelenk. Anschließend sollte das Telefon Musik abspielen, die den aktuellen Aktivitäten des Benutzers entspricht. Das Hauptziel der Anwendung war es, den notwendigen Puls während des Trainings zu erreichen. Die App verwendete auch die Beschleunigungsmesser des Telefons, um das Tempo des Benutzers während der Fahrt zu verfolgen. Diese Daten sollten laut Jack für Studien zur Parkinson-Krankheit nützlich sein. Er unterstützte seine Aussage mit wissenschaftlichen Artikeln der besten Universitäten. Jack wollte, dass Ian ein neues Backend-System für die Datenspeicherung und Abfrageverarbeitung entwickelt.
Jack war freundlich und charismatisch und seine Begeisterung infizierte andere. Ian nahm das Angebot sofort an und machte sich am nächsten Tag an die Arbeit. Sein Büro war eng, gehörte aber immer noch ihm allein. Seine Aufgabe war es, das für die Anwendung notwendige Backend zu erstellen.
Zwei Wochen sind vergangen. An einem frühen schläfrigen Montagmorgen lud Jack sein Entwicklungsteam in den Besprechungsraum ein. Der Glanz seiner Powerpoint-Präsentation verbrannte die Netzhaut.
„Ich habe es mir genau überlegt. Wir sind ein völlig neues Startup. Niemand weiß von uns, oder? Wir müssen
etwas tun
, um die Markenbekanntheit zu steigern. Also entschied ich mich: Wir werden den Musikteil der Anwendung loswerden und uns ausschließlich auf die Datenerfassung konzentrieren. "
Ian sagte instinktiv fast
"Was ?!" Sie müssen die Ergebnisse von zwei Wochen Arbeit wegwerfen. Darüber hinaus war der Datenerfassungsteil zuvor vollständig optional.
Jack wechselte zu einer anderen Folie, die die Metriken zeigte, die er nun für jeden Benutzer verfolgen wollte. Es gab so viele von ihnen, dass ich die kleinste Schriftart verwenden musste. Zum Lesen musste Ian schielen.
"Wenn Sie einen ausreichend großen Heuhaufen zusammenstellen, wird sicherlich eine Nadel darin erscheinen!", Sagte Jack. „Wir werden die Anwendung kostenlos machen und die Arbeit damit impliziert eine obligatorische Registrierung. Das reale Einkommen für uns werden die gesammelten Daten sein. “
Das Investorenkapital wurde für ein luxuriöses Büro im Geschäftszentrum der Stadt ausgegeben. Kostenlose App-Entwickler verdienen nur das Beste. Jack stellte einen zweiten iOS-Entwickler, Data Science und Praktikanten ein.
"Aber
geben Sie dem Praktikanten keine wichtige Arbeit", sagte Jack zu Vollzeitbeschäftigten.
Nachdem Ian die neue Situation gemeistert hatte, begann er mit der Entwicklung der Architektur eines neuen Systems, das alle erforderlichen Daten aufzeichnet.
Drei Monate später warf Jack alles in den Mülleimer. „Keine Bewerbungen! Wir brauchen eine neue Entwicklungsrichtung! “
Jacks neue Vision war es, eine Website zu erstellen, auf der die Leute die Kompositionen angeben müssen, die sie in einem Traum hören, während des Trainings und anderer Aktivitäten.
"Die Leute reden gerne über sich selbst", sagte Jack. "Wir sollten sie nicht dafür bezahlen, dass sie uns ihre Daten geben!"
Ein Front-End-Entwickler wurde beauftragt, die Website zu erstellen. Kurz nach dem Start der Website prahlte Jack den Investoren, er habe eine Million Besucher erreicht. Tatsächlich gab es nur etwa 300 Registrierungen, von denen die Hälfte von einer Person erstellt wurde.
Sie können bereits erraten, was drei Monate später passiert ist. Jack gab die sich langsam entwickelnde Website zugunsten des Slack-Bots auf, der auf den Befehl
"Play ${song} by ${artist}"
reagieren sollte, fand das Lied in Spotify und gab einen Link dazu. Ein Spotify-Widget spielt eine 30-Sekunden-Vorschau oder, wenn der Benutzer über ein Spotify Premium-Konto verfügt, den gesamten Titel ab.
"Und das ist alles? Wie werden wir Geld verdienen? “, - Zu diesem Zeitpunkt hielten sich die Entwickler nicht mehr in ihren Ansprüchen zurück.
"Das Abonnement wird bezahlt", antwortete Jack kühn.
"Für den
Chat-Bot?" "Ian widersprach. „Damit es vollständig funktioniert, benötigt der Benutzer bereits Spotify Premium. Wenn wir wollen, dass die Leute darüber hinaus zahlen, müssen wir ihnen mehr Möglichkeiten geben! “
"Wir werden uns später darum kümmern", antwortete Jack.
Jack beauftragte den Praktikanten mit der Entwicklung des neuen Kernprodukts des Unternehmens, was vor sechs Monaten gegen Jacks Anforderungen verstieß. Der Praktikant gab sich maximale Mühe, musste aber bald wieder zur Schule gehen. Unvollständiger Code ohne Zeremonie wurde dem Front-End-Entwickler zur Überarbeitung übergeben. Mit Hilfe eines der iOS-Entwickler hat er es fertiggestellt. Was machte Ian? Er erstellte ein Dashboard und eine Protokollierung, weil Jack darauf bestand, dass sie genügend Benutzer anziehen, um den Aufwand zu rechtfertigen.
Drei weitere Monate vergingen. Viele „Funktionen“ wurden hinzugefügt, zum Beispiel hat der Bot Benutzer auf dem Slack-Kanal zwanghaft gebeten, sie zu verwenden. Dieses Verhalten verstieß gegen die Nutzungsbedingungen von Slack, sodass die Anwendung nicht in den Store zugelassen wurde. Jack selbst musste Links an interessierte Leute senden, damit sie es manuell installierten. Zunächst wurde das Produkt an 50 „sehr freundliche“ Unternehmen übertragen, die Jack persönlich kannte. Von diesen installierten nur wenige es und noch weniger benutzten es am nächsten Tag weiter. Dann erweiterte Jack die Werbung auf 300 „freundliche“ Unternehmen, aber mit dem gleichen Ergebnis.
Der Wendepunkt kam für Ian, als Jack begann, auf zusätzliche Arbeitszeit zu bestehen, obwohl Ian anderen Entwicklern bei ihren Aufgaben nicht helfen konnte. Jack zwang ihn jedoch, bis spät zu bleiben, um "Solidarität zu zeigen". Dies war der letzte Strohhalm: Ian schrieb zwei Wochen später ein Rücktrittsschreiben. Sein letzter Arbeitstag fiel mit der Veröffentlichung des Slack-Bots zusammen, bei dem er sehr gerade Linien auf dem Armaturenbrett beobachtete. Als er schließlich das luxuriöse Büro verließ, verdiente das Startup immer noch nicht seinen ersten Cent.
Zum Glück hatte Jack einen Plan. Nachdem Ian gegangen war, fing er bei Null an und wollte gerade ein neues Produkt entwickeln. Nein, er bringt kein Geld mit, aber sie müssen zuerst etwas über die Marke wissen.
Dritte Geschichte: "Backup-Förderer"
[ Original ]"Ähm ... kannst du dir etwas für mich ansehen?"
Pat löste sich von der Programmierung neuer Funktionen und sah Miltons Würfel in ihrer Nähe stehen.
"Ich glaube, ich habe Probleme", fügte Milton hinzu.
Eines der wichtigsten internen Systeme des Unternehmens war die Datenverarbeitungspipeline. Vielleicht kann das Wort "Pipeline" als übertrieben angesehen werden, da in der Praxis nur wenige Shell-Skripte und Python-Programme Daten aus Dateien extrahieren, Operationen mit diesen Daten ausführen und die Ergebnisse in andere Dateien speichern, die dann von anderen Skripten gelesen werden. Während der Arbeit nahmen die Benutzer normalerweise die neueste Version von Skripten aus dem Versionskontrollsystem, modifizierten und passten sie so an, dass sie eine Antwort auf eine bestimmte Frage im Zusammenhang mit den Daten gaben. Wenn es den Anschein hatte, dass dieser bestimmte Prozess einen Wert haben könnte, bereinigten sie den Code und fügten ihn erneut dem Versionskontrollsystem hinzu. Wenn sie dachten, dass sie den Code nicht mehr benötigen, setzen sie ihn einfach auf HEAD zurück.
Einige, wie z. B. Milton, haben jedoch im Grunde genommen eine eigene Kopie aller Skripte aufbewahrt. Oder, wie bei Milton, ein paar Exemplare. Milton kannte die Datenverarbeitungspipeline am besten, aber der Großteil dieses Wissens war in seiner persönlichen Skriptbibliothek enthalten.
"Ich dachte, es lohnt sich, meine Änderungen am Versionskontrollsystem vorzunehmen", sagte Milton. "Ich hatte ein Skript, das von einem Skript aufgerufen wurde, das vom Skript aufgerufen wurde, und alles hing von einer Reihe erstellter Shell-Variablen ab, zum Beispiel
$SETUP_DIR
."
Pat nickte.
„Also wollte ich all dies in ein Argument umwandeln, damit andere Leute den Code verwenden können. Ich habe es getan ... aber vor dem Testen habe ich vergessen, die aufrufenden Skripte so zu ändern, dass sie
ein Argument übergeben. "
Insbesondere Miltons Skript enthielt folgende Zeile:
#!/bin/sh
rm -rf $SETUP_DIR/*/
Er überarbeitete es in die folgende Zeile:
#!/bin/sh
rm -rf $1/*/
Shell-Skripte kümmern sich nicht um die Existenz dieser Variablen. Milton hatte eine dauerhafte Umgebung für
$SETUP_DIR
. Aber
$1
ist das erste Argument, und wenn Sie das Argument nicht übergeben, ist es leer. Daher wurde ein neues Milton-Skript beim Starten ohne Argumente in
rm -rf /*/
bereitgestellt, wodurch alles gelöscht wurde, auf das sein Konto Zugriff hatte.
Grundsätzlich führte dies zu zahlreichen Versuchen, Dateien zu löschen, für die er keine Rechte hatte. Darüber hinaus bedeutete dies das Verschwinden seines Home-Verzeichnisses mit einer ganzen Reihe von Spaghetti-Skripten, die überhaupt nicht neu erstellt werden konnten, da sie nie in die Versionskontrolle gerieten.
"Kann das irgendwie behoben werden?", Fragte Milton.
„Ja, natürlich. Alles kann von Ihrem letzten Backup wiederhergestellt werden “, sagte Pat.
Obwohl auf allen Windows-Systemen ein automatisiertes Sicherungstool gestartet wurde, wurde es auf keinem Linux-System konfiguriert. Die Support-Abteilung war der Ansicht, dass Sie über ausreichende Kenntnisse verfügen, um Ihr eigenes Backup-System zu konfigurieren, wenn Sie technisch kompetent genug sind, um mit Linux zu arbeiten und Shell-Skripte zu schreiben. Speziell für diesen Zweck gab es ein zugängliches SAN für alle.
"Oh, und ich ... habe nie ein Backup erstellt", flüsterte Milton. "Nun ... zumindest habe ich nicht gepusht?"
Pat hoffte, Milton würde aus diesem Fehler die richtige Lektion lernen.
Vierte Geschichte: "Was ist ein Gleitkomma?"
[ Original ]Für unerfahrene Programmierer gibt es viele Fallstricke: Der Unterschied zwischen dem Deklarieren und Initialisieren einer Variablen, die Notwendigkeit, manchmal Semikolons zum Vervollständigen von Zeilen zu verwenden, Fehler um eins zu versetzen ... Wir alle haben in unserer Branche geniale autodidaktische Programmierer getroffen, die selbst große Anwendungen mit der richtigen Architektur erstellen können Ein Traum, aber wir sahen autodidaktische Junioren, die die Grundlagen kaum beherrschten und dachten, das sei alles, was sie brauchten. Am Ende sind Diplome und formale Bildung aus einem bestimmten Grund erforderlich.
Diese Geschichte begann, als
Olaf gerade sein Studium abgeschlossen hatte und bei seinem ersten richtigen Job als „Trainee-Programmierer“ arbeitete. Das Unternehmen hat sich zum Ziel gesetzt, die Regierungsführung im staatlichen Gesundheitssystem zu verbessern: Jeder, der das zweifelhafte Vergnügen hatte, mit den Gesundheitssystemen zu kommunizieren, würde sagen, dass dies eine noble Aufgabe ist. Das Unternehmen wurde jedoch von einem Arzt gegründet, der nur oberflächliche Kenntnisse in PHP hatte, die er zu gegebener Zeit unabhängig studierte.
Olaf machte sich an die Arbeit und beabsichtigte, sein Wissen über Designmuster anzuwenden. PHP ist leicht zu erlernen, aber schwer zu beherrschen. Viele in PHP-Software geschriebene Beispiele verwenden Gottobjekte, und der Code wird mit der Präsentation gemischt - zwei schwerwiegende Fehler, die jedoch in den meisten Online-Tutorials nicht erwähnt werden. Olaf begann, die Funktion vom Formular zu trennen, Objekte zu erstellen, die wiederholt verwendet werden können, um das Kopieren und Einfügen zu minimieren, und war mit ähnlichen Aufgaben beschäftigt, um das Chaos des an ihn übergebenen Codes glücklich in Ordnung zu bringen.
Und so befand er sich im Büro des Chefs, der dafür sorgte, dass er sich wusch.
"Andere Programmierer werden das nicht verstehen!", Rief der Chef. „Der Code ist zu kompliziert. Warum änderst du es? Es funktioniert, du musstest es verlassen! “
Entmutigt kehrte Olaf zur Arbeit zurück und lud eine saubere Version ohne Änderungen in seine Hauptniederlassung hoch. Um eine Kollision mit schlechten Praktiken zu vermeiden, begann er, an einem Fehler im Buchhaltungssystem zu arbeiten, der eine hohe Priorität und Dringlichkeit hat, da er mit der Abrechnung zusammenhängt. Benutzer konnten CSV-Dateien mit Informationen zu ihren Ausgaben auf den Server hochladen, und das System fasste die Werte nach Kategorien zusammen und erstellte Abrechnungsberichte. Irgendwo im Inneren schlich sich jedoch ein Rundungsfehler ein, der in einigen wichtigen Grenzfällen zu falschen Beträgen führte.
Olaf hat mehr studiert als seine Kollegen, aber keine Ausbildung ist umfassend. Es gelang ihm schnell festzustellen, dass es sich um einen mathematischen Fehler mit einem Gleitkomma handelte. Da Dezimalzahlen nicht mit voller Genauigkeit in binärer Form dargestellt werden können, traten in Grenzfällen Berechnungsfehler auf. Er suchte nach den richtigen Wegen, um mit Dezimalwerten in PHP umzugehen. Im Gegensatz zu Node oder C # sind externe Bibliotheken in PHP nur schwer zu verbinden, da diese Sprache keine integrierte Unterstützung für die Paketverwaltung bietet. Er konnte nicht herausfinden, wie man eine Bibliothek hinzufügt, die mathematische Operationen korrekt ausführen kann. Da die Software nur die Summen berechnete, entschied sich Olaf für die Verwendung von Integer-Mathematik: Lesen Sie den Wert, entfernen Sie den Dezimalpunkt (sodass der Wert von 10,50 USD als 1050 dargestellt wird), führen Sie die Berechnungen durch und fügen Sie den Dezimalpunkt erneut hinzu, wenn er angezeigt wird.
Einem anderen Junior gefiel die Idee. Der leitende Entwickler stimmte dem zu, aber der Chef lehnte das Angebot rundweg ab. Wie hat er dafür argumentiert? „Dies ist kein Gleitkommafehler. Aufgrund der schwachen Typisierung von PHP versucht das Programm, die Werte als Zeichenfolgen und nicht als Zahlen zu summieren. "
(Für diejenigen, die neugierig sind: PHP verwendet den Operator + nicht zum Verketten von Zeichenfolgen. Stattdessen wird das "." Verwendet. Das Ergebnis von
"hello " . "world"
ist
"hello world"
.)
Infolgedessen erkannte der leitende Entwickler diese Entscheidung: Das gesamte Teil vom Bruchteil zu trennen, sodass aus 10,50 USD 10,00 USD und 0,50 USD wurden, und dann jedes Teil separat zusammenzufassen.
Olaf verweilte nicht und wartete darauf, dass sie herausfanden, dass der Fehler noch vorhanden war, da das Programm den Bruchteil immer noch mit Cent als Gleitkommazahl verarbeitete. Er fand einen besseren Job mit einer besseren Sprache und verließ das Unternehmen.
Fünfte Geschichte: "Berechnete Sicherheit"
[ Original ]In den späten 80ern arbeitete
Karl einige Zeit in einem Softwareentwicklungsunternehmen, das sich mit Avionik und globalen Positionierungssystemen für militärische und zivile Kunden befasste. Aus geschäftlichen Gründen besuchte er häufig die Schlockdeed Corp., einen Kunden mit dem Auftrag, eine neue Generation von Kampfjets für die US-Armee zu entwickeln. Aufgrund der strengen Geheimhaltung ihrer Arbeit war es sehr wichtig, die Sicherheit zu gewährleisten.
Jedes Mal, wenn Carl das Unternehmen betrat oder verließ, musste er die Sicherheitsabteilung durchlaufen. Dort überprüfte er sorgfältig seine Aktentasche, Jacke, Brotdose und fast alles außer einer vollständigen Untersuchung der Körperhöhlen. Trotz der sorgfältigen täglichen Kontrollen in Schlockdeed grenzten einige ihrer „Sicherheitsmaßnahmen“ an das Absurde.
In dieser Zeit der Informationsübertragung über das
Floppin nahmen Programmierer oft mit zur Arbeit und nahmen Boxen mit Disketten davon. Schlockdeed , , . « ». , .
, HP-41CX. , , . HP-41CX .
: «, . ». . 41CX - ? , ? «, CIO. », — .
, , , «» . , (Chief Information Officer) . , 80-. , Calculator Inspection Officer.
«, », — , . HP-41CX. : « . , , . ,
!» , .
, . . , . AC (Approved Calculator), . HP-41CX, , Schlockdeed . , , « » -.