Dinge, die ich 2018 nicht weiß

Hallo Habr! Ich präsentiere Ihnen die Übersetzung des Artikels "Dinge, die ich ab 2018 nicht weiß" von Dan Abramov .


Die Leute denken normalerweise, dass ich viel weiß, aber das ist in Wirklichkeit nicht so. Das ist nicht so schlimm und ich beschwere mich überhaupt nicht. (Ein kleiner Teil der Menschen leidet oft unter vorgefassten Überzeugungen, obwohl sie mehr verdienen, was schrecklich ist).


In diesem Beitrag werde ich eine unvollständige Liste von Programmierthemen zeigen, von denen die Leute fälschlicherweise annehmen, dass ich sie kenne. Ich sage nicht, dass Sie sie nicht studieren müssen oder ich weiß keine anderen nützlichen Dinge. Aber da ich mich nicht in eine verletzliche Position gebracht habe, kann ich ehrlich sein.


Warum halte ich das für wichtig?


Erstens besteht oft die unrealistische Erwartung, dass ein erfahrener Ingenieur jede Technologie auf seinem Gebiet kennt. Haben Sie die "Lernkarte" gesehen, die aus Hunderten von Bibliotheken und Tools besteht? Das ist nützlich, aber beängstigend.


Unabhängig davon, wie erfahren Sie sind, können Sie dennoch zwischen einem Gefühl der Fähigkeit, Unzulänglichkeit („Impostor-Syndrom“) und Selbstvertrauen („Mahnwesen - Krüger-Effekt“) wechseln. Dies hängt von Ihrer Umgebung, Ihrer Arbeit, Ihrer Persönlichkeit, Ihrem Kollegen, Ihrem mentalen Zustand, Ihrer Tageszeit usw. ab.


Erfahrene Entwickler sprechen manchmal über ihre Unsicherheit, um Neulinge aufzuheitern. Aber es gibt einen großen Unterschied zwischen einem erfahrenen Chirurgen, der immer noch nervös ist, und einem Studenten, der zum ersten Mal ein Skalpell hält!


Zu hören, dass „wir alle Anfängerentwickler sind“, kann entmutigend sein und wie ein leeres Gespräch mit Studenten klingen, die mit einer tatsächlichen Wissenslücke konfrontiert sind. Geständnisse von wohlwollenden Praktizierenden wie mir, die dies nicht überwinden können.


Selbst erfahrene Ingenieure haben jedoch viele Wissenslücken. In diesem Beitrag geht es um meinen, und ich fordere diejenigen, die sich eine solche Schwäche leisten können, auf, ihre eigenen zu teilen. Aber lassen Sie uns unsere Erfahrung an dieser Stelle nicht außer Acht lassen.


Wir sind in der Lage, unsere Wissenslücken zu erkennen, wir können uns als Betrüger fühlen oder auch nicht, und dennoch haben wir sehr wertvolle Erfahrungen zu sagen, dass jahrelange harte Arbeit Entwicklung erfordert.


Damit bin ich nicht verantwortlich, hier sind nur ein paar Dinge, die ich nicht weiß:


  • Unix- und Bash-Befehle Ich kann ls und cd machen , aber auch alles andere ausspionieren. Ich habe das Konzept der Rohrleitungen verstanden, es aber nur in einfachen Fällen verwendet. Ich weiß nicht, wie man mit xargs komplexe Ketten erstellt oder wie man verschiedene Ausgabestreams zusammenstellt und umleitet. Ich habe Bash nie richtig studiert, daher kann ich nur sehr einfache (und oft fehlerhafte) Shell-Skripte schreiben.
  • Niedrige Sprachen. Ich verstehe, dass Sie mit Assembly Dinge im Speicher speichern und durch den Code navigieren können, aber das ist alles. Ich habe mehrere Zeilen in C geschrieben und verstehe, was ein Zeiger ist, aber ich weiß nicht, wie man Malloc oder andere Methoden der manuellen Speicherverwaltung verwendet. Ich habe mich nie mit Rust angelegt.
  • Netzwerkstapel. Ich weiß, dass Computer IP-Adressen haben, und mit DNS arbeiten wir mit Hostnamen. Ich weiß, dass es Low-Level-Protokolle wie TCP / IP für den Paketaustausch gibt, die (möglicherweise?) Die Integrität garantieren. Das ist alles - ich verstehe die Details nicht.
  • Container Ich habe keine Ahnung, wie man Docker oder Kubernetes benutzt. (Sind sie verwandt?) Ich habe eine vage Vorstellung davon, dass ich eine separate virtuelle Maschine bereitstellen kann. Das klingt cool, aber ich habe es nicht versucht.
  • Serverlos. Klingt auch cool. Ich habe es nie versucht. Ich habe keine klare Vorstellung davon, wie dieses Modell die Backend-Programmierung ändert (wenn überhaupt).
  • Microservices Wenn ich das richtig verstehe, bedeutet dies einfach, dass "viele API-Endpunkte miteinander kommunizieren". Ich weiß nicht, was die praktischen Vor- oder Nachteile dieses Ansatzes sind, weil ich nicht damit gearbeitet habe.
  • Python Es ist immer schlecht für mich, mich daran zu erinnern - ich arbeite seit mehreren Jahren mit Python und habe mich nie darum gekümmert, es zu lernen. Es gibt viele Dinge, wie zum Beispiel das Importverhalten, die für mich ein dunkler Wald sind.
  • Knoten JS. Ich verstehe, wie man Node startet, habe einige APIs verwendet, zum Beispiel fs, um Tools zu erstellen, und ich kann Express konfigurieren. Ich habe jedoch noch nie über Node mit einer Datenbank kommuniziert und weiß nicht, wie ich ein Backend darin schreiben soll. Ich bin auch nicht vertraut mit React Frameworks wie Next, weitere "Hallo Welt".
  • Native Plattform. Ich habe irgendwann versucht, Objective-C zu lernen, aber das hat mir nicht geholfen. Ich habe auch nicht schnell unterrichtet. Gleiches gilt für Java. (Ich hätte sie wahrscheinlich beherrschen können, seit ich mit C # gearbeitet habe.)
  • Algorithmen Das Maximum, das Sie von mir bekommen, ist Blasensortierung und möglicherweise bestenfalls Quicksortierung. Ich kann wahrscheinlich einfache Aufgaben zum Durchlaufen von Graphen ausführen, wenn sie sich auf ein bestimmtes praktisches Problem beziehen. Ich verstehe die O (n) -Notation, aber mein Verständnis ist nicht viel tiefer als "Schleifen nicht in Schleifen setzen".
  • Funktionssprachen. Wenn Sie JavaScript nicht zählen, spreche ich keine traditionell funktionierende Sprache. (Ich bin nur in C # und JavaScript frei - und habe C # bereits vergessen.) Ich kann kaum Lisp-inspirierten (wie Clojure), Haskell-inspirierten (wie Elm) oder ML-inspirierten (wie OCaml) Code lesen.
  • Funktionale Terminologie. Zuordnen und reduzieren Ich weiß, wie viel benötigt wird. Ich kenne keine Monoide, Funktoren usw. ... Ich weiß, was eine Monade ist, aber vielleicht ist dies nur eine Illusion.
  • Modernes CSS. Ich kenne Flexbox oder Grid nicht. Floats ist mein Alles.
  • CSS-Methoden. Ich habe BEM verwendet (dh als Teil von CSS, nicht als Original-BEM), aber das ist alles, was ich weiß. Ich habe OOCSS oder andere Methoden nicht ausprobiert.
  • SCSS / Sass. Ich habe nie angefangen, sie zu studieren.
  • CORS. Ich habe Angst vor diesen Fehlern! Ich weiß, dass ich die Header anpassen muss, um sie zu reparieren, aber in der Vergangenheit habe ich viel Zeit damit verbracht.
  • HTTPS / SSL. Niemals einrichten. Ich weiß nicht, wie das funktioniert, außer der Idee von privaten und öffentlichen Schlüsseln.
  • GraphQL. Ich kann die Abfrage lesen, weiß aber nicht, wie ich Dinge mit Knoten und Kanten ausdrücken soll, wann ich Fragmente verwenden soll und wie die Paginierung dort funktioniert.
  • Steckdosen Nach meinem Verständnis ermöglichen sie Computern die Kommunikation außerhalb des Anforderungs- / Antwortmodells, aber das ist alles, was ich weiß.
  • Streams. Abgesehen von Rx Observables habe ich nicht mit so engen Threads gearbeitet. Ich habe die alten Node-Threads ein- oder zweimal verwendet, aber immer einen Verarbeitungsfehler erhalten.
  • Electron Ich habe es nie versucht.
  • TypeScript Ich verstehe das Konzept von Typen und kann Anmerkungen lesen, aber ich habe es nie geschrieben. Ich habe es mehrmals versucht, bin aber auf Schwierigkeiten gestoßen.
  • Bereitstellung und Entwicklung. Ich kann mehrere Dateien per FTP senden oder einige Prozesse beenden, aber dies ist die Grenze meiner Fähigkeiten in Devops.
  • Grafik Sei es Leinwand, SVG, WebGL oder Low-Level-Grafik, ich bin nicht schlau darin. Ich habe die allgemeine Idee verstanden, aber ich muss keine einfachen Dinge lernen.

Dies ist natürlich keine vollständige Liste. Es gibt viele Dinge, die ich nicht weiß


Dies mag seltsam erscheinen. Es lohnt sich nicht einmal darüber zu schreiben. Zeige ich meine Unwissenheit? Mein Fazit zu diesem Beitrag lautet wie folgt:


  • Selbst Ihre Lieblingsentwickler wissen möglicherweise nicht viele Dinge, die Sie wissen.
  • Unabhängig von Ihrem Kenntnisstand kann Ihr Vertrauen sehr unterschiedlich sein.
  • Erfahrene Entwickler sind trotz Wissenslücken sehr kompetent.

Ich kenne meine Wissenslücken (zumindest einige). Ich kann sie später ausfüllen, wenn ich interessiert bin oder sie für das Projekt benötige.


Dies schmälert mein Wissen und meine Erfahrung nicht. Es gibt viele Dinge, die ich gut machen kann. Zum Beispiel, um Technologien zu studieren, wenn ich sie brauche.

Source: https://habr.com/ru/post/de446088/


All Articles