Lernen Sie dabei Programmiersprachen: Softwareentwickler über komplexe Projekte



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

    Als Softwareentwickler wissen wir alle, wie schnell sich Technologien ändern. Wir versuchen mit ihnen Schritt zu halten und lernen ständig neue Arbeitsweisen, Werkzeuge, Sprachen und Rahmenbedingungen. Wir müssen ständig ihre Stärken und Schwächen vergleichen und entscheiden, was gemeistert werden muss und was zurückgelassen werden sollte. Dies ist keine leichte Aufgabe, Sie können sich leicht in einem Meer von Optionen verirren.

    Skillbox empfiehlt: Bildung Online - Kurs "Web Developer Job" .
    Wir erinnern: für alle Leser von "Habr" - einen Rabatt von 10.000 Rubel beim Schreiben in einen beliebigen Skillbox-Kurs auf den Aktionscode "Habr".

    Um jedoch professionell zu bleiben, müssen Sie sich mit den aktuellen Technologien vertraut machen. Manchmal muss die Funktion X oder Y einfach deshalb zur Anwendung hinzugefügt werden, weil dies den Zeitgeist erfordert.

    Entwicklern wird geholfen, Bücher, Video-Tutorials und Kurse auf dem Laufenden zu halten. Und es ist ganz einfach: Sie können Ihre ganze Zeit mit dem Training 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. Deshalb begann er, anstatt zu arbeiten, einen Kurs für einen anderen zu belegen, in der Hoffnung, dass ihm jedes weitere Material das nötige Wissen vermitteln würde. Dies ging so weiter, bis Tony einen anderen Weg wählte, den wir jetzt diskutieren werden.

    Kürzlich antwortete ich Quoraauf die Frage, wie schnell Sie JavaScript lernen und mit der Entwicklung von Anwendungen in dieser Sprache beginnen können. Ich schrieb, dass der Programmierer es nicht genau wissen muss, um es zu benutzen. Viele von uns schreiben kleine Ausschnitte in JavaScript für das Web, wobei nur wenige Zeilen Code ausreichen, um die Funktionalität der Site erheblich zu verbessern. Das Gleiche gilt für Node.js: ein bisschen Code - und alles wird besser. JavaScript ist eine sehr leistungsfähige Sprache, und die im Node.js-Ökosystem verfügbaren Module werden nahezu allen Anforderungen gerecht.

    Das JavaScript-Ökosystem ist sehr entwickelt, mit Hilfe dieser Sprache kann man wirklich viel machen. Eine Bestätigung dafür ist, dass ich diesen Artikel in Google Docs schreibe, einem browserbasierten Texteditor.

    Eine Programmiersprache sollte so gut gelernt sein, dass bestimmte Aufgaben damit ausgeführt werden können.

    Vor ein paar Monaten habe ich angefangen, Vue.js zu lernen. Er begann mit dem Udemy-Kurs und sah sich gerade genug um, um mit der Arbeit an dem Projekt zu beginnen. Wenn ich weitere Informationen benötige, kann ich jederzeit zum Studium dieses Themas zurückkehren. In der Zwischenzeit erstelle ich meine Desktop-Anwendung ohne tiefgreifende Kenntnisse von Vue.js - ich lerne nur, was erforderlich ist, um die Wissenslücken in Bezug auf das gewünschte Thema zu schließen.

    Lassen Sie mich noch ein Beispiel geben - meine Erfahrung mit dem Studium von Node.js.

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

    Ich habe mich sofort in JavaScript vertieft, weil unser Team mit Mojito / Manhattan, einer Hosting-Plattform für Anwendungen, begonnen hat. Es war Ende 2010, etwas früher, Ryan Dahlhat Yahoo-Mitarbeitern von Node.js erzählt. Gleichzeitig arbeitete ich mit Packt Publishing an einem Buch über Node.js als technischer Berater. Später wurde mir mitgeteilt, dass der Autor des Buches beschlossen habe, das Projekt abzubrechen. Der Verlag bot mir an, der Autor zu sein. Da ich überhaupt keine Ahnung hatte, wie Bücher geschrieben werden, stimmte ich zu.

    Da ich einiges über JavaScript wusste, begann ich, damit Arbeitsprobleme bei Yahoo zu lösen und schrieb gleichzeitig ein Buch über Node.js. 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, dass Javascript für eine solche Aufgabe gut genug ist? Auf keinen Fall. Außerdem wusste ich nicht, wie man Bücher schreibt. Die Arbeit des Autors enthielt viele mir unbekannte Aspekte, die ich jedoch nach und nach studierte und akzeptierte. Ich wusste wie und liebte es zu schreiben - weil ich ein Blogger war. Vor dem Beginn der Arbeit an dem Buch schrieb ich zehn Jahre lang Artikel und Nachrichten. Aber trotzdem Beiträge - nicht das Buch, schien sein Schreiben sehr schwierige Aufgabe.

    Am Ende wurde mir klar: Statt Angst zu haben, muss man nur einen guten und klaren Arbeitsplan erstellen. Danach wird aus dem Schreiben eines Buches eine Reihe von Aufsätzen. Das Schreiben eines Aufsatzes, Tutorials oder Posts ist bereits eine einfachere Aufgabe. Das Einzige, jeder von ihnen muss dem allgemeinen Geist des Buches und des Plans entsprechen. Jeder vorherige Aufsatz (Kapitel) sollte nahtlos 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 uns weiterzuentwickeln, brauchen wir Willen. In der Tat gibt es auch bei den umfangreichsten Aufgaben nichts Schwieriges. Wenn zum Beispiel eine Person mit dem Vorgang des Hauskaufs konfrontiert ist, scheint der Vorgang zu kompliziert zu sein. Makler werden als Betrüger angesehen. Sie denken, dass nichts funktionieren wird. Tatsächlich ist aber alles einfacher, als es scheint.

    Zuvor habe ich mehrere neue Dinge auf einmal aufgegriffen. Um zum Beispiel zur Popularisierung von Elektrofahrzeugen beizutragen, begann ich, Artikel zu diesem Thema zu schreiben. Ich habe noch nie im Journalismus gearbeitet und wusste nicht, wie alles funktioniert. Am Ende gelang es mir jedoch, mehrere tausend Nachrichtenartikel zu schreiben. Die Leute sagen, dass ich Talent habe und ich mag es wirklich, mich wie ein Mensch zu fühlen, der die Wahrheit sagt.

    Lassen Sie uns über einige der wichtigsten Prinzipien sprechen, bevor ich über das Projekt spreche, das sich jetzt beschäftigt.

    • Ziel löschen. Um dies zu erreichen, müssen Sie das Ziel immer im Auge behalten. Sie sollten es auch klar formulieren.
    • Teilen Sie das Projekt in Elemente auf. Ich habe bereits darüber gesprochen. Es ist am besten, das große Projekt, das Ziel, in mehrere getrennte Aufgaben aufzuteilen.
    • Überlegen Sie, welche Elemente und Unteraufgaben Sie jetzt ausführen können und welche - nein.
    • Erstellen Sie eine Liste von Unteraufgaben, indem Sie die erforderlichen unterstützenden Daten hinzufügen. Am besten zeichnen Sie alles in einem Wochen- oder Aufgabenplaner auf. Übrigens, Trello ist 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 recht 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 wird auf Electron basieren. Ich plane, die Release-Version im Apple- und Microsoft App Store zu veröffentlichen. Ich werde die Benutzeroberfläche basierend auf Vue.js mit der Buefy-Komponentenbibliothek erstellen.

    Dies ist ein ziemlich riskantes Projekt, da ich einige seiner Teile nicht ausführen kann. Zum Beispiel kann ich Electron zwar in App-Stores verkaufen, aber ich verstehe immer noch nicht, wie das geht. Und das ist nicht die einzige schwierige Aufgabe.

    Ich hoffe jedoch, alle Teile meines Projekts abzuschließen.

    Jedes Ziel zu erreichen ist ein theoretisch mögliches Ereignis. Ich weiß, dass einige Aufgaben bereits von anderen Leuten gelöst wurden, so dass ich das Gleiche tun kann. Und wenn ich jetzt nichts weiß, versuche ich es bald herauszufinden.

    Ich habe ein Trello, um die verbleibenden Aufgaben zu verfolgen. Ich versuche, den Plan auf dem neuesten Stand zu halten und auch die Dinge zu studieren, die ich für die Arbeit benötige.

    Ich muss in all dem kein Experte sein. Es gibt klare Aufgaben im Projekt, für die ich bestimmte Daten, Wissenselemente benötige.

    Einige Dinge sind mir jetzt schon bekannt, zum Beispiel die Spezifikation des Standards EPUB3. 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 mich mit der Frage befasst und festgestellt, dass EPUB3 eine Reihe von XHTML-Dateien ist, dieser Standard HTML5- und CSS-Elemente verwendet und ZIP das 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.

    Kürzlich bin ich auf ein ziemlich schwieriges 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 angezeigt werden können. Das Buch kann verschiedene Bezeichner haben, darunter ISBN, DOI, kurze und lange Überschriften, verschiedene Namen in verschiedenen Sprachen und so weiter.

    Die Anwendung sollte ü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 dem Teil, in dem ich eine Lösung für das Arbeiten mit Tabellen finden muss.

    Aber es ist unmöglich, die Aufgabe auf unbestimmte Zeit zu verschieben - und ich habe damit begonnen. Am Ende gelang es mir, mit den Komponenten von Vue.js das gewünschte Ergebnis für die Arbeit mit Tabellen zu erzielen. Ich habe ein paar Tage gebraucht, um die Dinge zu klären. Es stellte sich Folgendes heraus:



    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 benutzerfreundlichste Oberfläche, aber alles funktioniert, und das Projekt ist von der „unmöglichen“ auf die „implementierte“ Phase übergegangen.

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

    Meine nächste "unmögliche" Aufgabe besteht nun darin, herauszufinden, wie man Elektronenanwendungen in Verzeichnissen ablegt. Ich habe gesehen, dass andere Entwickler sie irgendwie posten, also ist dies durchaus möglich. Die Hauptsache - zu verstehen.

    Unbekannt kann ein Problem sein. Die Aufgabe, deren Umsetzung nicht klar ist, ist ein völlig neues Gebiet, das noch nicht gemeistert wurde. Hier macht uns alles Angst. Aber die Augen haben Angst, und die Hände tun es. Dies ist das richtige Prinzip, das auch für die Codierung gilt.

    Ganz am Anfang sprachen wir über die rasanten Veränderungen in der Softwareindustrie. Wir sind ständig bemüht, Schritt zu halten, nicht ins Hintertreffen zu geraten. Dazu meistern wir selbst neue „Territorien“ - wir stehen vor dem Problem und wissen nicht, wie wir die Aufgabe mit dem neuen Toolkit erledigen sollen. 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 obsolet und wir müssen neu lernen.

    Letztendlich sind wir alle Helden. Wir wollen ein bestimmtes Ziel erreichen, wir erreichen einen Ort, der unüberwindlich erscheint, aber dennoch das Problem löst. Und die Lösung, der Prozess ihrer Suche, gibt uns nicht nur den Arbeitscode (wir sprechen von Programmierung, oder?), Sondern auch Selbstvertrauen und neue Erfahrungen.
    Skillbox empfiehlt:


    Jetzt auch beliebt: