Zum Hauptinhalt springen

HexSchool Node.js Unternehmenskurs

· 5 Minuten Lesezeit
Pitt Wu
Software / Product Engineer

Ein paar grobe Gedanken und Reflexionen nach Abschluss des HexSchool Node.js Unternehmenskurses.

Warum habe ich mich fuer diesen Kurs entschieden? Welches Problem sollte er loesen?

Das war ein ziemlich teurer Kurs. Gleichzeitig kann HexSchool (ein Coding-Bootcamp in Taiwan) aus geschaeftlichen Gruenden keine Teilnehmer ablehnen, weshalb die Kursinhalte eher einfach gehalten werden muessen.

Unter diesen Voraussetzungen scheint die Anmeldung kein gutes Geschaeft zu sein. In der Praxis gibt es aber dennoch einige Aspekte, die es wert sind, beruecksichtigt zu werden:

Teamarbeit

Da man von Anfang an in Gruppen zusammenarbeiten muss und die meisten Teilnehmer aus dem Frontend-Bereich kommen und kaum Backend-Erfahrung haben, koennen wir die Kommunikation und das Vorankommen in der Backend-Entwicklung ueben.

Aus einer anderen Perspektive betrachtet: Die Partner, mit denen man zusammenarbeitet, koennen sich auch in Zukunft gegenseitig helfen. Es ist also eine Moeglichkeit, sich ein Netzwerk aufzubauen.

Versunkene Kosten

Wie gesagt, der Kurs ist ziemlich teuer. Selbst wenn man so faul ist wie ich — wenn man dieses Geld nicht einfach in den Sand setzen will, muss man nach der Arbeit Zeit und Energie investieren, um mit dem Projektfortschritt mitzuhalten und die Deadline einzuhalten, damit es sich am Ende nicht als Verlust herausstellt. In gewisser Weise hilft das auch, Selbstdisziplin zu erreichen.

Neue Perspektiven

Da das gesamte Projekt vom Design bis zur Entwicklung komplett durchlaufen wird, koennen alle Mitglieder, auch wenn es objektiv gesehen recht oberflaechlich bleibt, einmal den gesamten Ablauf von PM, UI/UX, Frontend und Backend durchspielen. Das kann auch fuer die kuenftige Arbeit neue Blickwinkel eroeffnen.

Kursinhalte

Was die Kursinhalte angeht: Abgesehen von den grundlegenden MongoDB-Befehlen und der Node.js API-Implementierung sehe ich den groessten Mehrwert persoenlich bei der Anbindung von Drittanbieterdiensten — etwa Third-Party Login und Payment-Integration. Dieser Teil ist ziemlich trocken und erfordert viel Zeit zum Durchlesen der jeweiligen Dokumentation. Wenn das im Kurs behandelt wird, spart man sich die Zeit fuer die Recherche.

Ausserdem basieren einige Design-Beispiele im Kurs noch auf dem MVC-Muster. Hier muss das Team bei der Projektumsetzung die Trennung von Frontend und Backend selbst vornehmen, was auch etwas Denkarbeit erfordert.

Bestimmte Kursinhalte werden extern als Live-Streams eingekauft, was zu gewissen Diskrepanzen fuehren kann. Die Unit-Testing-Beispiele etwa waren fuer das Frontend gedacht. Wenn man Backend-Unit-Tests ueben will, ist man als Team also auf sich selbst gestellt.

Projektumsetzung (extrem subjektive Einschaetzung)

Die Projektumsetzung ist meiner Meinung nach der wertvollste Teil des Kurses. Und das Allerwichtigste dabei ist die Zusammenarbeit und Planung innerhalb des Teams.

Seid ehrlich vor der Gruppenbildung

Vor der Gruppenbildung gibt es eine Selbsteinschaetzung der eigenen Faehigkeiten. Wenn es Bereiche gibt, in denen ihr euch nicht auskennt, seid bitte ehrlich. Wenn das Faehigkeitsgefaelle im Team zu gross ist, kann es schnell zu ernsthaften Meinungsverschiedenheiten kommen, die das Projekt zum Scheitern bringen.

Plant Pufferzeit fuer die Entwicklung ein

Da die meisten als Frontend-Entwickler in die Backend-Entwicklung einsteigen, gibt es viele Fallstricke, die man als Frontend-Entwickler vorher nie gesehen hat und die die Entwicklung verlangsamen. Zum Beispiel: Nach der Payment-Integration muss man sich zwangslaeufig mit Bestellungen beschaeftigen, und Bestellungen bringen wiederum Fragen rund um Transaktionszeiten mit sich.

Als Frontend-Entwickler hat man sich damit frueher kaum auseinandergesetzt — man hat einfach APIs angebunden und Listen dargestellt. Aber im Backend muessen all diese Dinge beruecksichtigt werden.

Setzt euch als Ziel, das Projekt live zu bringen

Bitte beruecksichtigt unbedingt folgende Punkte:

  • Die meisten Teammitglieder arbeiten Vollzeit und koennen nur begrenzt Zeit investieren (man kann nicht vorhersagen, ob jemand im Job gerade unter Druck steht oder Ueberstunden machen muss)
  • Die Deadline ist sehr knapp, die tatsaechliche Entwicklungszeit begrenzt
  • Die meisten Mitglieder haben keine Backend-Erfahrung und werden zwangslaeufig auf Probleme stossen

Das Ziel der ersten Phase sollte also sein, ein brauchbares Produkt zu entwickeln — kein perfektes. Denkt in dieser Phase nicht zu viel ueber Architektur, Optimierung, Tests usw. nach. Das kommt spaeter.

Wenn man zu stark nach Perfektion strebt, wird nicht nur die Entwicklung blockiert — schlimmer noch, es kann zu einer Spaltung im Team fuehren (mit allen moeglichen Konflikten, besonders wenn man nicht wissen kann, ob Teammitglieder tagsaber unter Arbeitsdruck stehen). Wenn das Team erst einmal gespalten ist, ist das Projekt zu 94,87 % zum Scheitern verurteilt. Ein haessliches, aber funktionierendes Feature kann das Vertrauen aller enorm staerken.

Vermeidet es unbedingt, die eingesetzten Technologien endlos auszuweiten. Im Frontend sollte es nicht vorkommen, dass gleichzeitig React und Vue verwendet werden. Selbst wenn jemand im Team ein Framework hervorragend beherrscht, heisst das nicht, dass alle anderen es schnell lernen und damit produktiv arbeiten koennen.

Erweiterung und Optimierung

Nachdem das Projekt die erste Kernfunktion abgeschlossen hat, kann man davon ausgehen, dass die erste Phase beendet ist. Man kann durchatmen und anfangen, ueber weitere Features nachzudenken — einschliesslich Technologien, die man ausprobieren moechte, oder Verbesserungen der User Experience.

Bei unserem Projekt haben wir zum Beispiel Schritt fuer Schritt websocket-Messaging, PWA, Animationen, ein Check-in-System und mehr hinzugefuegt, um die Webseite insgesamt reichhaltiger zu gestalten.

Fazit

Abschliessend hier die Deployment-Links und Repos unseres fertigen Projekts (Frontend und Admin-Backend). Schaut gern vorbei.

Frontend (Client)

Admin-Backend (Admin)

<!-- test account & password -->

account : admin
password : 12345678

Darueber, dass ich Coach beim HexSchool 2023 Node.js Software Engineer Unternehmenskurs wurde