
Ich kritisiere oft Technologien, die mir falsch erscheinen, und im Gegenzug bekomme ich nicht nur Argumente, sondern auch völlige Wut, Ressentiments und sogar ins Gesicht.
Die an die Technologie gerichteten Injektionen werden von den Entwicklern auf eigene Kosten entwickelt. Der Werkzeugkult ist eine sehr seltsame Sache, die nicht logisch erklärt werden kann. Einige sagen, dass jeder einen Kult hat, weil das Denken eng mit Yap verwoben ist. Andere sagen, es ist eine Junior-Krankheit - Sie haben zum ersten Mal etwas geschrieben, es ist passiert, aus Freude dachten Sie, Ihr Yap sei ein Wunder Gottes.
Was auch immer es war, ich habe diesen Müll nie verstanden.
Anhänger von Kulten scheinen mir unpassierbare Dummköpfe zu sein. Und ich versuche immer zu verstehen, wie Dummköpfe zu Dummköpfen wurden und warum ich nicht zu Dummköpfen wurde. Begann zu denken und zu bammen! - Mir wurde klar, dass ich es tat. Ich bin ein dummer Kultist, der F # lobt. Und natürlich steckt dahinter eine Geschichte.
Ich habe meine Karriere als Junior C # dev begonnen. Roh dann Xamarin, Entwicklung für Android. Die ersten Schritte im ersten Job waren voller Schmerzen. Ich allein habe die Anwendung mit Screenshots und Gifs aus der iOS-Version erstellt. Alles hat einmal geklappt, es gab viele Probleme und das einzige Feedback, das ich erhielt, war „Warum nicht wie auf dem Bild?“. Es war ein Albtraum und ich ging schnell.
Er studierte sechs Monate zu Hause und bekam dann einen Job in einem großen Personal. Für die Menschen war alles wie dort - das Team, Mentoren, Prüfungen, Muster, Codreviews, strenger Linter, die höchsten Anforderungen an Qualität, Lesbarkeit und Codeleistung. Mit einem Wort - ein Ansatz für Erwachsene. Ich habe mich definitiv entschieden - genau das muss getan werden. Aber es stellte sich heraus, dass dieser Albtraum noch schlimmer ist.
Seit mehr als einem Jahr haben wir ein ganzes Team aus einem Modul für ein Werkzeug zusammengestellt, das mit Werkzeugen arbeitet, die zur Entwicklung von Werkzeugen entwickelt wurden. Vielleicht genau die, die wir brauchen, um das Modul zu machen. Jeden Tag mussten wir entweder Inder oder Amerikaner anrufen, und es ist nicht klar, worüber wir berichten sollen.
Irgendwann bemerkte ich, dass ich immer weniger tat, aber nichts änderte sich. In gebrochenem Englisch habe ich offen gelogen: „Der alte Wik ay Serch für Bug. Steele kennt Saxophone. Kontinent Ville »
"Ok, Phil, hört sich toll an", sagte Übersee.
Einmal ging ich in einem Anfall von Scham und Verzweiflung über meine Wertlosigkeit zu meinen Vorgesetzten und bat mich, entlassen zu werden, aber aus irgendeinem Grund erhöhten sie mein Gehalt.
Darüber habe ich bereits gesagt . Ich war weder lustig noch fröhlich - es war ein Selbstmordattentat, als hätte die Welt der Wertlosigkeit die Welt der Logik besiegt.
Ein seltsamer Widerspruch, aber gleichzeitig aus Langeweile und Superambition entschied ich mich, zu Hause einen coolen Entwickler zu spielen. In meinem Kopf schwirrten schon immer viele Ideen, wie ich mit Hilfe von Softwareprojekten die Welt und Ihren Geldbeutel verbessern kann. Ich habe alles richtig gemacht. TK, Architektur, Systemanforderungen, Projekt in VSTS. Alles auf erwachsene Weise, genau wie Unternehmen.
Nikher hat nicht funktioniert.
Beschlossen - die Idee ist Scheiße. Der Papierkorb, ich nehme eine neue Idee, beende, alles wiederholt sich mehrmals. Ich sage meinen Kollegen, sie sind ratlos. Wie so? Immerhin mache ich alles genauso wie diejenigen, die ihr Stück bereits geschnappt haben.
Eine Person mit meinem Selbstwertgefühl ist normalerweise leichter zu leben als andere, aber die Bezahlung kostet viel. Sie brauchen eine qualitativ hochwertige Selbsttäuschung, um Ihre Fehler zu ertragen. Und ich sagte mir: Jeder Entwickler kann alles. Die ganze Frage ist, wie das gemacht wird. Und meine Anforderungen an dieses „Wie“ sind zu hoch. Sie sind nicht für "Startups" zu Hause geeignet und verdienen keine nutzlosen Geschäftsaufgaben. Der folgende Gedanke: "Ich bin nicht bereit, meine Qualitätsstandards aufzugeben." Selbst wenn Sie eine Anwendung erstellen müssen, die Tapu auf den Bildschirm bringt, werde ich sie so hochwertig und nachdenklich wie möglich gestalten.
Infolgedessen arrangierte ich zu Hause einen lokalen Frachtgeschäftskult. Er brachte Rituale, Prozesse, Befehle, aber keinen Inhalt. Ich habe gerade einen Geschäftsentwickler ohne Geschäft gespielt, wie einen Papuaner, der eine Landebahn und Türme aus Stroh geblendet hat, und jetzt erwartet er, dass Eisenvögel dort sitzen, wie fremde Menschen auf einer Nachbarinsel.
Ich habe unglaubliche Mengen an formalem Code geschrieben, die mich dem Ergebnis nicht näher gebracht haben, aber im Gegenteil, ich bin immer wieder herumgewandert. Meine Karriere ist verdammt noch mal eine Geschichte von Misserfolgen und Enttäuschungen. Ich spuckte auf alles, machte mir selbst ein Ende und schaute mir gerade Fernsehsendungen bei der Arbeit an, trank 16 Tassen Kaffee und rauchte einen halben Tag lang.
Als ich ganz zufällig auf den Grund gegangen bin, habe ich einen Artikel über F # über Habré gelesen, den ich ausprobiert habe, und so weiter: „Hm! Nicht schlecht". Mein Arbeitgeber hat mir gerne einen Monat Ausbildung bezahlt (davon weiß er jedoch nichts).
F # war nicht schwer zu lernen, es hat die gleiche Laufzeit wie C # und ich habe den funktionalen Ansatz für die tägliche Programmierung in TypeScript angewendet. Und so wurde mir klar, dass ich jedes meiner Projekte auf F # übertragen kann. Lassen wir meine technischen Fähigkeiten außerhalb der Klammern, denn Fähigkeiten sind eine relative Sache. In den Teams, in denen ich jetzt arbeite, bin ich cool, und im Team von beispielsweise F # -Entwicklern könnte ich höchstens die Position des Reinigungsassistenten beanspruchen.
Aber auf meinem Niveau konnte ich bereits Probleme lösen. Obwohl ich tief im Inneren gut wusste - ich werde nichts entscheiden. Drehen Sie einfach mein Gehirn und werfen Sie weiterhin Wissen in den Müll. Ich habe das Vertrauen in die Entwicklung völlig verloren.
Und eines Tages beschloss ich, diesen ganzen Fick aufzugeben. Es war Winter, kalt und dunkel. Ich verließ das Büro auf der Straße, stieg in eine Schubkarre - es wird nicht starten. Schließlich rasselte der Motor. Ich weiß nicht, was vorher passiert ist - entweder habe ich den Geruch von Brennen gespürt oder ich habe Rauch gesehen. Dann brach eine Flamme unter der Haube hervor. Noch eine Sekunde, und ich renne wie ein Psycho um den Parkplatz und schreie alle an, meine Autos von meinen wegzufahren.
Nach fünf Minuten der Panik und des Chaos gab es nur ein altes verbranntes Stück Scheiße und eine Vidyushka aller Arten von Dummköpfen, die dann Tausende von Ansichten in der lokalen "belauscht" erlangten. Minus 30, ich bin in der Herbstjacke eines Mannes, der in einem warmen Auto nach Hause fahren wollte. Bis zum Ende gefüllt, moralisch völlig gebrochen. Kein Taxigeld, öffentliche Verkehrsmittel für Handys. Ich ging zu Fuß zehn Kilometer nach Hause. Zu Hause müssen Sie Ihrer Frau und Ihrem Kind helfen, essen, sie ins Bett bringen und tausend Dinge tun. Aber die Nacht kommt, ablenkende Dinge enden, Ausreden auch, und ich bin allein mit Enttäuschungen und Schlaflosigkeit - ich bin für nichts gut, nichts wird jemals klappen.
An diesem schlimmsten Abend meines Lebens, der sich noch nicht wirklich aufgewärmt hatte, beschloss ich, mich noch einmal zu versuchen.

Ich setzte mich und beschloss, ein kleines digitales Biom in F # zu schreiben, in dem maschinelle Lerneinheiten mit sich selbst interagieren, sich entwickeln und die Parameter verdrehen und sehen, was sie aus dieser Welt machen.
Und ja, vielleicht habe ich dann ein wenig nachgedacht.
Normalerweise verwende ich eine Mischung aus einem Top-Down- und einem Bottom-Up-Designansatz. Ich beschreibe die Lösung allgemein mit Pseudocode. Dann beginne ich, die wichtigsten Details zu implementieren, die ich als unabhängige Module im Gegenteil mache. Von Details zu Allgemein.
Bereits ohne Pseudocode implementiere ich ein paar drei große Module und sehe, ob dies funktioniert. Normalerweise funktioniert es nicht und ich beginne mit der Verwendung von Iterationen. Ich wiederhole diesen Vorgang von Anfang bis Ende, bis er beginnt. Aber öfter werfe ich nur Iterationen auf den fünften oder sechsten.
Mit F # habe ich den gleichen Ansatz angewendet. Ich hatte eine allgemeine Vision des Projekts. Im Kopf wird Stein für Stein die Verwirklichung aufgebaut. Sie denken über einen Fall nach dem anderen nach und verstehen irgendwann - alles, Sie wissen bereits, wie man es codiert. Und dann setzen Sie sich zum Code, und Sie verstehen, dass nein. Gedanken werden nicht an YP übertragen, obwohl es Ihnen so vorkam, als würden Sie darüber nachdenken. Ich habe es so ständig.
Aber es stellte sich anders heraus. Ich habe eine txt-Datei in VSCode erstellt und einen Pseudocode für eine Funktion geschrieben, die den Lebenszyklus meiner Anwendung beschreibt. Und mir wurde klar, dass mein Pseudocode ein gültiges F # ist. Es muss nichts geändert werden, ich habe gerade die Hauptfunktion des Projekts geschrieben. Okay, die Dateierweiterung wurde geändert und einer sauberen Lösung hinzugefügt. Hier ist die Lebenszyklusfunktion. Es nimmt den aktuellen Zustand der Welt, das Ding, das sie verarbeitet (eigentlich die Welt selbst) und spuckt den aktualisierten Zustand aus, das Ding, das den Zustand in einen Satz von Parametern für die KI verwandelt und umgekehrt, und die KI selbst, die ihre Parameter empfängt und die Entscheidung ausspuckt.
Dann ist alles einfach. Sie nahmen den Zustand an, wandelten ihn in KI-Parameter um, speisten die Funktionen der KI ein, wandelten das Ergebnis wieder in den Zustand um, es wurde wiederum der Spielfunktion und das Ergebnis der gleichen Lebenszyklusfunktion gegeben. Göttliche Rekursion, einfacher Algorithmus, schöner Code, alles GoF out of the box. Es bleibt, alle diese Funktionen zu implementieren.
Aber der Punkt hier ist, dass ich nicht mehr über Architektur nachdenken muss. Ich schreibe, was Sharpe-Javists den coolen Begriff Inversion of Control Container nennen - eine Funktion, die eine Lebenszyklusfunktion übernimmt und sie in die Funktionsparameter meiner Module (II, Game) einfügt. VScode unterstreicht es rot, da noch keine Module oder Funktionen darin sind. Aber ich habe die Hauptsache - sobald die roten Unterstreichungen verschwinden und das Projekt erstellt werden kann, ist die Lösung fertig.
Ich nehme es einfach und implementiere diese Module einzeln und arbeite auf die gleiche Weise. Das gesamte Projekt besteht aus fünf Dateien. AI-Datei - 500 Zeilen, viele, aber idiomatisch. Das Schöne an diesem Ansatz ist, dass ich eine Funktion für den Arbeitslebenszyklus schreiben konnte - das Herzstück meiner Anwendung - ohne etwas anderes zu beschreiben.
Die gesamte Architektur besteht aus 10 Codezeilen, die in einer Minute geschrieben werden. Keine Schnittstellen, abstrakten Fabriken, Iocs, all diese DefaultInterfaceNameClass und anderer Mist, den ich in C # machen muss, bevor ich überhaupt verstehe, was ich tun möchte. Sie nehmen und schreiben einen dummen Code, der das Problem nur löst, und Sie erhalten ihn sogar besser als Ihr Unternehmen, das unter diesen Java-Sharps leidet.
Ich tat dies, indem ich einfach meine Gedanken in den Editor trieb, als würde ich in F # denken. An Stellen, an denen ich in den Kommentaren zum Code einen Arbeitsplan in C # schreiben würde, fand ich Arbeitsfunktionen heraus. Anstatt Dutzende und dann Hunderte von Schnittstellen zu beschreiben, eine kleine Datei mit einem Domänenmodell der Anwendung. Bauen Sie es auf. Habe eine funktionierende Lösung. Für die Nacht. Mit einem guten Code, der später keine Angst hatte, sich auf dem Hund zu zeigen. So einfach.
Am Morgen schrieb ich an die Arbeit, dass ich krank sei, und stürzte mich eine Woche lang kopfüber in das Projekt, bis mir klar wurde, dass meine Idee lange Zeit verwirklicht wurde und niemand sie brauchte. Aber ich habe meinen Glauben wiedererlangt, und das war die Hauptsache.

Ich weiß nicht, worum es hier geht - ist F # die großartigste Technologie oder passt sie mir einfach zu gut oder wurde speziell für solche Aufgaben entwickelt - was ist der Unterschied? Das Wichtigste ist, dass ich in diesem Moment ertrank und eine Rettungsboje brauchte. Das Leben warf mich F # und ich stieg aus. Das ist für mich nicht nur seelenlose Technologie, sondern ein riesiger emotionaler Bereich.
Wenn mich jemand auslacht F #: „Totgeborene Technologie! Ein Spielzeug für Nerds ... “- Ich erinnere mich sofort an die Winterdunkelheit, ein brennendes Auto, eine an meinen Lippen gefrorene Zigarette, einen depressiven Zustand und F #, die mich herausgezogen haben. Das heißt, sie schienen meinen besten Freund zu scheißen. Meine Reaktion ist offensichtlich - ich bin beleidigt und wütend.
Von außen sieht es seltsam aus, aber wenn Sie an diesem Tag anstelle von mir leben würden, würden Sie auch reagieren. Ich denke, das ist bei allen Technologiekultisten der Fall. Sie verliebten sich in ihre Yapis, weil die Umstände, unter denen sie sie trafen, für sie persönlich sehr akut sind. Und hier komme ich und spucke in ihre Seelen. Nun, und wer ist ein Idiot? Ich bin ein Idiot. Hoffentlich werde ich nicht.
Wenn überhaupt, über F #
hier .