Dabei Programmiersprachen lernen: Softwareentwickler über komplexe Projekte



Von einem Übersetzer: Dieser Beitrag ist eine Übersetzung des Originalartikels von David Harron, einem erfahrenen Softwareentwickler. Er schreibt oft Artikel zum Thema seiner Arbeit, einschließlich Node.js, zu denen David eine besondere Beziehung hat.

Als Softwareentwickler wissen wir alle, wie schnell sich die Technologie ändert. Wir versuchen, mit ihnen Schritt zu halten und lernen ständig neue Arbeitsmethoden, Werkzeuge, Sprachen und Frameworks. Wir müssen ständig ihre Stärken und Schwächen vergleichen und entscheiden, was gemeistert werden muss und was zurückgelassen werden muss. Dies ist keine leichte Aufgabe, Sie können sich leicht im Meer der Optionen verlieren.

Skillbox empfiehlt: Der Online- Beruf „Web Developer Profession“ .
Wir erinnern Sie daran: Für alle Leser von „Habr“ - ein Rabatt von 10.000 Rubel bei der Anmeldung für einen Skillbox-Kurs mit dem Promo-Code „Habr“.

Um professionell zu bleiben, müssen Sie sich der aktuellen Technologien bewusst sein. Manchmal muss einer Anwendung eine X- oder Y-Funktion hinzugefügt werden, nur weil der Zeitgeist dies erfordert.

Dem Entwickler wird geholfen, Bücher, Video-Tutorials und Kurse über Wasser zu halten. Und es ist ganz einfach: Sie können Ihre ganze Zeit mit Schulungen verbringen, ohne mit der Arbeit am Projekt begonnen zu haben.

Der Entwickler Tony Mastrorio schrieb einmal, dass er Angst habe, eines seiner Projekte zu starten, weil ihm das Wissen fehlte, um es umzusetzen. Anstatt zu arbeiten, begann er daher, Kurs für Kurs zu belegen, in der Hoffnung, dass jedes nachfolgende Material ihm das notwendige Wissen vermitteln würde. Dies ging so weiter, bis Tony einen anderen Weg wählte, über den wir jetzt sprechen.

Kürzlich habe ich bei Quora die Frage beantwortet , wie schnell Sie JavaScript lernen und Anwendungen in dieser Sprache entwickeln können. Ich schrieb, dass der Programmierer ihn nicht gründlich kennen muss, um ihn zu benutzen. Viele von uns schreiben kleine Schnipsel in JavaScript für das Web, und nur wenige Codezeilen reichen aus, um die Funktionalität der Website erheblich zu verbessern. Das Gleiche gilt für Node.js: ein kleiner Code - und alles wird besser. JavaScript ist eine sehr leistungsfähige Sprache, und die im Node.js-Ökosystem verfügbaren Module erfüllen fast alle Anforderungen.

Das JavaScript-Ökosystem ist sehr entwickelt, mit dieser Sprache können Sie wirklich viel tun. Der Beweis ist, dass ich diesen Artikel in Google Text & Tabellen schreibe, einem browserbasierten Texteditor.

Eine Programmiersprache sollte so gut gelernt sein, dass sie bestimmte Aufgaben ausführen kann.

Vor ein paar Monaten habe ich angefangen, Vue.js zu studieren. Ich begann mit dem Udemy-Kurs und sah gerade genug aus, um mit der Arbeit an dem Projekt zu beginnen. Wenn ich weitere Informationen benötige, kann ich mich jederzeit wieder mit diesem Thema befassen. In der Zwischenzeit mache ich meine Desktop-Anwendung ohne fundierte Kenntnisse von Vue.js - ich studiere nur, was erforderlich ist, um die Wissenslücken zum richtigen Thema zu schließen.

Lassen Sie mich Ihnen ein weiteres Beispiel geben - meine Erfahrung mit dem Lernen von Node.js.

Bis Januar 2009 arbeitete ich im Java SE-Team von Sun Microsystems. Dann habe ich eine große Anzahl technischer Artikel geschrieben. Als Java-Fan habe ich es mit JavaScript verglichen und die Vorzüge des ersten gezeigt. Mein nächster Job war bereits bei Yahoo, dann benutzte ich weiterhin Java und Ende 2010 wechselte ich schrittweise zu Node.js - dann war es eine neue Technologie.

Ich tauchte sofort in JavaScript ein, als unser Team an Mojito / Manhattan arbeitete, einer Hosting-Plattform für Anwendungen. Es war Ende 2010, etwas früher, als Ryan Dahl Yahoo-Mitarbeitern von Node.js erzählte. Gleichzeitig arbeitete ich zusammen mit Packt Publishing als technischer Berater an einem Buch über Node.js, und wenig später wurde mir mitgeteilt, dass der Autor des Buches beschlossen habe, das Projekt abzubrechen. Der Verlag schlug vor, Autor zu werden. Da ich keine Ahnung hatte, wie Bücher überhaupt geschrieben werden, stimmte ich sofort zu.

Und jetzt, da ich einiges über JavaScript wusste, begann ich damit Arbeitsprobleme in Yahoo zu lösen, während ich ein Buch über Node.js schrieb. Die erste Ausgabe erschien im August 2011, die vierte - im Juni 2018.

Ich könnte Angst vor Unsicherheit haben und aufhören zu schreiben. Wusste ich JavaScript gut genug für eine solche Aufgabe? Auf keinen Fall. Außerdem wusste ich nicht, wie man Bücher schreibt. In der Arbeit des Autors gab es viele Aspekte, die mir unbekannt waren, aber ich habe sie nach und nach studiert und akzeptiert. Ich konnte und liebte es zu schreiben - weil ich Blogger war. Zehn Jahre vor Beginn der Arbeit an dem Buch schrieb ich Artikel und Nachrichten. Trotzdem sind Beiträge kein Buch, das Schreiben schien eine sehr schwierige Aufgabe zu sein.

Am Ende wurde mir klar: Anstatt Angst zu haben, muss man nur einen guten und klaren Arbeitsplan erstellen. Danach wird das Schreiben eines Buches zu einer Reihe von Aufsätzen. Das Schreiben von Aufsätzen, Tutorials oder Beiträgen ist bereits eine einfachere Aufgabe. Das einzige ist, dass jeder von ihnen dem allgemeinen Geist des Buches und des Plans entsprechen muss. Jeder vorherige Aufsatz (Kapitel) sollte reibungslos in den nächsten übergehen. Sobald ich das alles verstanden hatte, ging die Arbeit an dem Buch viel schneller.

Offensichtlich haben viele von uns Angst, komplexe Aufgaben zu erledigen und den Kopf im Sand zu verstecken, anstatt zu handeln. Um weiterzumachen, die Karriereleiter zu erklimmen und sich zu entwickeln, braucht man einen Willen. Tatsächlich ist selbst bei den umfangreichsten Aufgaben nichts kompliziert. Wenn zum Beispiel eine Person mit dem Prozess des Kaufs eines Eigenheims konfrontiert ist, scheint der Prozess zu kompliziert, Makler werden als Betrüger angesehen, Sie denken, dass nichts funktionieren wird. Tatsächlich ist jedoch alles einfacher als es scheint.

Zuvor habe ich einige neue Dinge aufgegriffen. Um zum Beispiel zur Popularisierung von Elektrofahrzeugen beizutragen, begann ich, Artikel zu diesem Thema zu schreiben. Ich habe nie Journalismus gemacht oder wusste, wie alles funktioniert. Aber am Ende habe ich es geschafft, mehrere tausend Nachrichtenartikel zu schreiben. Die Leute sagen, dass ich Talent habe und ich mag es wirklich, mich wie eine Person zu fühlen, die die Wahrheit sagt.

Lassen Sie uns über einige der wichtigsten Prinzipien sprechen, bevor ich über das Projekt spreche, an dem ich gerade arbeite.

  • Klares Ziel. Um sich darauf zu konzentrieren, müssen Sie Ihr Ziel immer im Auge behalten. Sie müssen es auch klar artikulieren.
  • Teilen Sie das Projekt in Elemente auf. Ich habe oben bereits darüber gesprochen. Es ist am besten, ein großes Projekt, ein Ziel, in mehrere separate Aufgaben zu unterteilen.
  • Überlegen Sie, welche Elemente, Unteraufgaben Sie jetzt ausführen können und welche nicht.
  • Erstellen Sie eine Liste mit Unteraufgaben, indem Sie unterstützende Daten hinzufügen, die möglicherweise benötigt werden. Schreiben Sie am besten alles in einen Wochen- oder Aufgabenplaner. Trello ist übrigens ein großartiges Werkzeug dafür.
  • Verwenden Sie Agile.
  • Sei positiv. Ziele können erreicht werden, auch wenn es zunächst unmöglich erscheint.

Oben habe ich über mein Projekt gesprochen. Diese Software und die Aufgabe ist ziemlich kompliziert. Ich werde eine Desktop-Anwendung erstellen, mit der Benutzer E-Books im EPUB3-Format erstellen können. Das Programm verwendet Dateien in verschiedenen Formaten, die sich in einem bestimmten Verzeichnis befinden, und formatiert sie gemäß dem EPUB 3.0.1-Standard. Die Entwicklung basiert auf Electron. Ich plane, die Release-Version im Apple- und Microsoft-Anwendungsspeicher zu veröffentlichen. Ich werde eine Benutzeroberfläche basierend auf Vue.js unter Verwendung der Buefy-Komponentenbibliothek erstellen.

Dies ist ein ziemlich riskantes Projekt, da ich noch nicht weiß, wie ich einige seiner Teile ausführen soll. Während beispielsweise der Verkauf von Electron in Anwendungsgeschäften möglich ist, verstehe ich immer noch nicht, wie das geht. Und das ist nicht die einzige schwierige Aufgabe.

Trotzdem hoffe ich, alle Teile meines Projekts abzuschließen.

Um jedes Ziel zu erreichen, halte ich ein theoretisch mögliches Ereignis für möglich. Ich weiß, dass einige Aufgaben bereits von anderen gelöst wurden, damit ich das Gleiche tun kann. Und wenn ich jetzt nichts weiß, werde ich versuchen, es in naher Zukunft herauszufinden.

Ich habe Trello, um die verbleibenden Aufgaben im Auge zu behalten. Ich versuche, den Plan relevant zu halten und auch die Dinge zu studieren, die ich zum Arbeiten brauche.

Ich muss in all dem kein Experte sein. Das Projekt hat klare Ziele, für deren Lösung ich bestimmte Daten, Wissenselemente benötige.

Einige Dinge sind mir bereits jetzt bekannt, zum Beispiel die Spezifikation des EPUB3-Standards. Vor ungefähr vier Jahren bin ich mit dem Verständnis aufgewacht, dass EPUB nur ein ZIP-Archiv von HTML-Dateien ist. Drei Tage lang habe ich das Problem untersucht und festgestellt, dass EPUB3 eine Sammlung von XHTML-Dateien ist, dieser Standard HTML5- und CSS-Elemente verwendet und ZIP ein Verpackungsformat verwendet. Wenig später erstellte ich ein Tool auf Node.js, mit dem ich EPUB-Dokumente kompilieren konnte. Eine etwas komplexere Version dieses Dokuments wird der Kern meiner neuen Anwendung sein.

Vor kurzem bin ich auf ein ziemlich kompliziertes Problem gestoßen. Tatsache ist, dass meine Anwendung darauf hinausläuft, eine grafische Konfigurationsoberfläche für XML-Dateien mit Metadaten zu erstellen. Eine OPF-Datei (Open Package Format) enthält mehrere Datenelemente, z. B. dc: identifier oder dc: title-Tags, die als Tabelle betrachtet werden können. Ein Buch kann verschiedene Bezeichner haben, darunter ISBN, DOI, kurze und lange Überschriften, verschiedene Namen in verschiedenen Sprachen usw.

Die Anwendung muss über eine Methode verfügen, mit der der Benutzer Elemente aus verschiedenen Datentabellen hinzufügen, bearbeiten oder löschen kann. Aber wie?

Von Anfang an begann ich diese Aufgabe zu verschieben. Ich habe alles geschrieben, außer den Teil, in dem Sie eine Lösung für die Arbeit mit Tabellen finden müssen.

Aber es ist unmöglich, die Aufgabe auf unbestimmte Zeit zu verschieben - und ich bin dazu übergegangen. Am Ende gelang es mir, mit Hilfe der Vue.js-Komponenten für die Arbeit mit Tabellen das zu erreichen, was ich wollte. Ich habe ein paar Tage gebraucht, um es herauszufinden. Folgendes ist passiert:



Hier sehen wir einige Tabellen für die Verarbeitung von DC: Creator- und DC: Contributor-Listen. Jede Zeile enthält zwei Schaltflächen zum Bearbeiten und Löschen. Eine mit einem Pluszeichen gekennzeichnete Schaltfläche fügt eine neue Zeile hinzu, und die Tabelle unterstützt die Paginierung, wenn zu viele Zeilen vorhanden sind.

Vielleicht ist dies nicht die freundlichste Oberfläche, aber alles funktioniert, und das Projekt wechselte von der Phase "unmöglich" zu "implementiert".

Und schließlich habe ich die Lösung für dieses Problem so oft verschoben, und es stellte sich heraus, dass es an der Oberfläche lag - Sie müssen nur die Vue.js / Buefy-Komponente verwenden. Und es gibt viele ähnliche Aufgaben - sie finden sich sowohl zu Hause als auch bei der Arbeit.

Jetzt ist meine nächste „unmögliche“ Aufgabe, die Platzierung von Elektronenanwendungen in Verzeichnissen zu behandeln. Ich habe gesehen, wie andere Entwickler sie irgendwie gepostet haben, also ist dies durchaus möglich. Die Hauptsache ist, es herauszufinden.

Unbekannt kann Anlass zur Sorge geben. Die Aufgabe, deren Umsetzung nicht klar ist, ist ein völlig neues Gebiet, das noch nicht erschlossen ist. Alles hier macht uns Angst. Aber die Augen haben Angst und die Hände tun es. Dies ist das richtige Prinzip, das auch bei der Codierung gilt.

Ganz am Anfang haben wir über schnelle Veränderungen in der Softwareindustrie gesprochen. Wir versuchen ständig mitzuhalten, nicht zurückzubleiben. Dazu meistern wir neue „Gebiete“ für uns selbst - wir stehen vor einem Problem, wissen nicht, wie wir die Aufgabe erledigen sollen, indem wir neue Werkzeuge verwenden. Und selbst wenn wir dieses Problem mit den vorherigen Tools gelöst haben, ist es jetzt aus irgendeinem Grund möglicherweise nicht verfügbar. Zum Beispiel wird jQuery veraltet und wir müssen neu lernen.

Letztendlich sind wir alle Helden. Wir wollen ein bestimmtes Ziel erreichen, wir erreichen einen Ort, der unüberwindbar erscheint, aber dennoch das Problem lösen. Und die Lösung, der Prozess, sie zu finden, gibt uns nicht nur funktionierenden Code (wir sprechen über Programmierung, oder?), Sondern auch Selbstvertrauen und neue Erfahrungen.
Skillbox empfiehlt:

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


All Articles