Gesichtsloser Code tötet die Programmierung, und wir werden nichts damit anfangen.

Published on December 26, 2018

Gesichtsloser Code tötet die Programmierung, und wir werden nichts damit anfangen.


    Während des nächsten Streits äußerte ein Freund einen Gedanken, der mich sehr verletzte. „In den meisten populären YaPs gibt es so viele verschiedene Möglichkeiten, dasselbe zu tun. Dies führt zu Problemen. Aber in Go ist alles falsch. Die Philosophie der Sprache ist so, dass bei Go verschiedene Entwickler die gleichen Probleme auf die gleiche Weise lösen. Daher ist ihr Code leicht zu lesen, vorhersehbar und zuverlässig. Deshalb entscheidet sich das große Unternehmen für Go. “ Dies ist ein Argument, das stark genug ist, um darüber nachzudenken, wie man widerlegt.


    Deshalb habe ich es in zwei Berichten verschmiert, wobei ich mich an den Mangel an Generika klammerte, eine clevere Idee hatte, mehrere Tage damit lebte und irgendwann meine düstere Vision formte.


    Meine Aufgabe ist es, aus einer unendlichen Anzahl von Kombinationen die am besten geeignete Lösung auszuwählen. Dafür werde ich bezahlt und dafür liebe ich meinen Job und deshalb mein Leben. Aber sie sagen mir - eine super Lösung ist nicht nötig. Wir brauchen das Übliche. Weil das fertige Produkt wichtiger ist als seine Umsetzung.


    Wenn ich auf die Straße geworfen werde und ein Dummkopf an meiner Stelle ist, kann er leicht mit meinem Code arbeiten. So wird das Unternehmen viel komfortabler. Das Geschäft will nicht vom Zufall abhängen. Die Vorstellung, dass die schlechte Laune eines leitenden Entwicklers einem Unternehmen einen Gewinn einbringt, mag keine Top-Manager. Sie wurden zu Top-Managern, weil sie Situationen ausweichen können, in denen ihr heiliges Geschäft Geld verliert. Und wir leben jetzt in einer Zeit, in der „gut gemacht“ und „profitabel“ zwei verschiedene Dinge sind.


    Und ich verstehe sehr gut, wie wir dazu gekommen sind. Lass mich erklären, pass auf deine Finger auf:



    Ich glaube, wie die meisten Ingenieure, dass ich großartige Dinge mache. Was ich erfinde, automatisiere, mit meiner Arbeit und meinem Verstand mache, ist das Leben der ganzen Menschheit besser, während alle Obskurantisten nur die Sprache mahlen. Aber dann ziehe ich meine Nase aus meinem Code-Editor und bin entsetzt darüber, wie grausam ich mich irre.


    Was zur Hölle mache ich?


    Ich denke also über die Architektur eines hochbelasteten Systems nach, aber in 95% der Fälle wird es verwendet, um die selbst erstellten Bilder und Fotos Ihres Lieblingshundes schnell auf Ihrem Telefon zu sortieren. Hier entwickle ich einen VPN-Client, und was werden sie damit machen? Alle Pornos und dummen Raubkopien ansehen?


    Mein Gehirn wird von winziger Wunschliste bedient, damit die Leute mir Geld bringen, damit auch ich meine Wunschliste befriedigen kann.


    In der IT machen sie gute Dinge, aber ihr Prozentsatz ist vernachlässigbar. Die meisten gehen auf dumme Bedürfnisse ein, die es bisher einfach nicht gab, weil es keine IT gab. Das heißt, Ingenieure machen keine großen Dinge, Ingenieure unterstützen einfach die Infrastruktur des Teigpumpens zwischen Menschen.


    In solchen Fällen ist das Schreiben von gutem Code nicht mehr erforderlich. Dies ist nur notwendig, damit es mir mehr Spaß macht zu arbeiten und ich nicht mehr ausbrenne. Aber früher oder später kommt ein Top-Manager und sagt: „Das war's, du klopfst mit den Nägeln an und schießt. Es ist Zeit, die Beute zu schneiden. "


    Anstelle eines abstrakten „universellen Gutes“ hat die IT gelernt, Frauen mit geringem Profil zu verwöhnen, und erst dadurch ist sie zu einer gigantischen Branche herangewachsen, in der Hunderte von Millionen Menschen beschäftigt sind. Früher war das Programmieren die Arbeit der Auserwählten, jetzt wird jeder Trottel ein Jahr lang auf den Kursen sitzen und Code schreiben.


    Und wenn es in die Branche kommt, wird es keine Zeit mehr geben, tief zu graben - das Produkt wird heute Abend benötigt, sonst werden wir das Geld vermissen. Das tiefe Graben und Lernen von Technologie wird zu einem Hobby, das nur notwendig ist, um nicht im Bewusstsein der eigenen Wertlosigkeit verrückt zu werden.


    In dem System, in dem Sie einmal pro Woche ein neues Feature auf den Markt bringen müssen, benötigen Sie einfache Ansätze und einfache Tools. Wenn sich ein cooler Entwickler eine neue Technologie einfallen lässt, versucht er, sie so zu gestalten, dass sie von der Mehrheit beansprucht wird, denn die Nachfrage der Mehrheit ist der Hauptwert der modernen Welt. Deshalb tauchen solche Philosophien und solche Go auf.


    Und ich denke - ich brauche das ganze Ficken nicht. Dies alles führt zur Ablehnung.


    Wenn Sie genau hinschauen, ist mein VSCode voller gefährlicher Symptome. Mein tslint erlaubt mir nicht, einen zusätzlichen Raum hinzuzufügen. Mein Code wird nicht erstellt, wenn ich die Variable mit dem falschen Buchstaben aufgerufen habe. Mein Compiler funktioniert nicht, da ich der public-Methode keine Kommentare hinzugefügt habe. Alles ist einfach - schreiben, Leute, der gleiche Code. Gesichtsloser Code. Das ist kein Roman für dich, was zum Teufel ist der Stil des Autors ?!


    Ich stimme im Allgemeinen zu, dass solche Konventionen eine gute Sache sind, aber nur, solange sie das Erscheinungsbild des Codes betreffen. Der Moment, in dem Sie die Gelegenheit nutzen, um zu entscheiden, wie dieser Code funktioniert - mein schlimmster Albtraum. Stellen Sie sich einen Fall vor: Sie haben ein komplexes, leistungsabhängiges Modul geschrieben und erfahren: „Hören Sie, es ist zu kompliziert. Komm schon, du machst es einfacher, egal welche Arbeit noch schlimmer wird. " Hört sich absurd an? Und so wird es sein. Ernsthaft. Ja, es ist schon da. Sie haben Go keine Generika hinzugefügt, da Generika komplex sind.


    Go ist ein Geschäftseffekt, keine technische Lösung. Er widerspricht sich. Hier will er Zuverlässigkeit, und das geht von Komplexität aus. Die Komplexität in der Branche wurde jedoch aus Gründen der Zuverlässigkeit deutlich. Generika existieren genau aus Gründen der Zuverlässigkeit, um potenzielle Entwicklungsfehler zu antizipieren. Und ja, sie sind ziemlich komplex.


    Programmierung, ich möchte kreativ sein. Ich möchte beim Entwerfen eines Systems eine Vielzahl von Optionen haben. Wir modellieren die Realität in der Welt der Autos, und ich bin mir sicher: Realität ist keine einfache Sache, es gibt keine richtigen und falschen Antworten. Und ich habe das Gefühl, dass Technologien wie Go die Suche nach einfachen Antworten sind. Lassen Sie uns für jede Aufgabe eine richtige Lösung haben. Aber das ist ein Scherz! Es mag funktionieren, aber es gibt immer eine bessere Lösung. Und unter dem Druck, dass wir kein Budget für qualitativ hochwertige Lösungen haben, töten wir selbst die Software und sind dann enttäuscht, dass nicht alles gut funktioniert.



    Die Philosophie des gesichtslosen Codes will mich zu einer Maschine machen, die die Kesselplatte kopiert. Und wenn ich darüber nachdenke, stoße ich auf einen noch schrecklicheren Widerspruch.


    Ich habe immer geglaubt, dass die grundlegende Botschaft der Entwicklung lautet: "Alles, was automatisiert werden kann, sollte automatisiert werden." Aber hier ist die Ironie - mein Versprechen ist auch fatal.


    Ich bin nicht bereit, etwas zu tun, das eine Maschine kann, die ich bauen kann. Das ist irrational, und mir wurde beigebracht, rational zu sein. Aber da ich alles automatisieren muss, muss ich alles automatisieren und automatisieren - das heißt Entwicklung. Und es stellt sich heraus, dass es glückliche Sprachen sind, die uns allmählich dazu führen. Das heißt, mein Beruf sollte, wie die meisten anderen, in einer idealen Welt nicht existieren.


    Fortschritt hört nicht auf. Aber er kann auf verschiedene Arten vorgehen, davon bin ich überzeugt. Wenn sich das Programmieren jetzt in Go und gesichtsloses Üben verwandelt, dann kommen wir zur Kurve selbst und nicht zu der optimierten Automatisierung, die man sich vorstellen kann.


    Meine Lösung des Problems ist utopisch und hält keiner Kritik stand. Ich verstehe, dass es zu spät ist, es anzubieten, aber immer noch.


    Ich würde Geschäft und IT trennen, damit nur gemeinnützige Organisationen mit der Programmierung befasst sind. Und damit war ihre Priorität die tiefgreifende Verbesserung der Technologie, frei vom täglichen Fluss. Damit war die Forderung „herauszulassen, was ist, sonst verlässt der Gewinn“ moralisch inakzeptabel Ich würde auf jeden Fall die Schwelle für den Einstieg in die Programmierung so hoch wie möglich halten, damit sich die Tools nicht an den durchschnittlichen Entwickler anpassen, wenn ein erfahrener Ingenieur und der Absolvent von gestern gezwungen sind, denselben Code zu schreiben.


    Ja, es wird den Fortschritt für Jahrhunderte verlangsamen und unser Leben all der angenehmen Brötchen berauben, an denen wir jeden Tag festhalten. Aber es wird zumindest die Idee des Fortschritts auf die Art zurückbringen, in der wir an die Momente unserer stärksten idealistischen Impulse glauben.