Ein Full Stack Developer wird von manchen als vielseitiges Multitalent angesehen, das neben dem Programmieren auch die Grundlagen der Quantenmechanik, des Bauwesens und des Mandarin beherrschen sollte. Von einem Full Stack wird viel verlangt, aber wir sollten es nicht übertreiben.
Es gibt sicherlich Fähigkeiten, ohne die es schwierig ist, als Full Stack zu agieren. Es gibt auch solche, auf die man verzichten kann, aber sie zu haben, kann wiederum ein großer Vorteil sein. Dies gilt natürlich sowohl für harte, als auch für weiche Kompetenzen. In diesem Artikel werde ich sie alle zusammen mit Beispielen für bestimmte Technologien und einer Erklärung, warum sie eine mehr oder weniger wichtige Rolle spielen, beschreiben.
Die wichtigsten Hard Skills für einen Full Stack Developer
Die unten aufgeführten Fähigkeiten halte ich für absolut unerlässlich. Gemessen an der Gesamtzahl der Unterabschnitte in diesem Artikel sind es relativ wenige, aber sie sind für den modernen
Full Stack Developer bei weitem am wichtigsten.
Sprache und Backend-Framework
Beispiele: Java (Spring Boot), C# (ASP.NET), JavaScript (Express.js), PHP (Laravel)
Für diejenigen, die neu in der Programmierung sind, wird das Backend sicherlich die schwierigere Seite sein, aber die Kenntnis dieser Sprachen bietet eine ausgezeichnete Grundlage für das weitere Lernen. Wenn das Ziel das Agieren als Full Stack sein soll, dann ist das Backend der beste Ausgangspunkt. Was spezifische Sprachen betrifft, so sind die beliebtesten Sprachen derzeit Java, C#, JavaScript und PHP. Sie gut zu kennen, reicht aus, um Ihren Posteingang mit Angeboten zu füllen.
Frontend-Sprache + HTML und CSS
Beispiele: JavaScript + modernes Framework (React.js, Angular, Vue.js)
Wer als Full Stack Developer arbeiten möchte, sollte unbedingt über Kenntnisse in JavaScript und einem der modernen Frontend-Frameworks verfügen. Laut einer Umfrage von Stack Overflow ist sie die am weitesten verbreitete Sprache der Welt und wird von 63 % der Programmierer (von 83.000 Befragten) verwendet. Die Sprache wird in jedem Webprojekt verwendet und hat eine riesige Gemeinschaft von Programmierern, die ständig neue Plugins und Bibliotheken entwickeln. Vor allem aber deutet nichts darauf hin, dass sie an Beliebtheit verlieren wird. Das Gleiche gilt für HTML- und CSS-Kenntnisse, die Hand in Hand mit JavaScript gehen und für jeden Frontend-Programmierer unverzichtbar sind.
System zur Versionskontrolle
Beispiele: Git + ferngesteuertes Repository, z.B. GitHub oder GitLab
Es gibt praktisch keine Wahl. Für die Arbeit als Full Stack (und als Programmierer im Allgemeinen) sind Git-Kenntnisse unerlässlich. Darüber hinaus lohnt es sich, eine der Methoden für die Arbeit mit Git zu erlernen, wie z. B. Gitflow. Es wird von praktisch allen Softwarehäusern und anderen Unternehmen, die
Software entwickeln, verwendet. Es ist sicher, dass viele Programmierer ihren Arbeitstag mit einem Blick auf Git beginnen. Damit können Sie frühere Versionen wiederherstellen, alle Änderungen am Code verfolgen und den Fortschritt anderer Teammitglieder überprüfen.
Relationale Datenbanken
Beispiele: SQL + eine der Datenbanken: PostgreSQL, MariaDB, MySQL (Open-Source) oder Oracle, SQL Server (kommerziell)
Relationale Datenbanken bilden die Grundlage für die große Mehrheit der kommerziellen Webanwendungen. Wie bei JavaScript können wir auch hier unveränderte Stabilität erwarten. Die Sprache zur Erstellung und Pflege relationaler Datenbanken, d. h. SQL, wird seit vielen Jahrzehnten verwendet und weiterentwickelt.
Zwar kann es vorkommen, dass bestimmte Aufgaben innerhalb eines Entwicklungsteams die Arbeit mit Datenbanken nicht erfordern, aber die Vertrautheit mit ihnen ist immer ein großer Vorteil. Dies ermöglicht es uns, die Gesamtheit der Systeme und die Beziehungen zwischen ihren Komponenten zu verstehen.
Wenn Sie es also ernst meinen, als Full Stack zu agieren, sollten Sie versuchen, sie kennen zu lernen.
Unerlässliche Hard Skills
In der folgenden Liste geht es um Fähigkeiten, die bei vielen Stellenbesetzungen ein Vorteil sein können, aber auch ohne sie sollte kein Programmierer Probleme haben, eine Stelle zu finden. Ich habe sie von der größten bis zur geringsten Relevanz für den modernen Programmierer sortiert.
Projektmanagement-Methoden – agil (Scrum oder Kanban) und traditionell (Wasserfall)
Trotz der Tatsache, dass Projektmanagement-Methoden wie Scrum, Kanban oder Wasserfall in fast jedem Softwareunternehmen eingesetzt werden, habe ich mich aus zwei Gründen entschlossen, sie in die Kategorie “nice to have” einzuordnen:
- Für Programmieranfänger sollten fehlende Kenntnisse dieser Methoden kein Hindernis sein, eine Stelle zu finden. Sie zu beherrschen ist zeitaufwändig, weshalb die Unternehmen diesem Aspekt bei der Einstellung von Nachwuchskräften nicht viel Aufmerksamkeit schenken.
- Die Erfahrenen hingegen haben sich in 99 % der Fälle bereits mit ihnen auseinandergesetzt.
Framework zum Testen
Beispiele: je nach Technologie, z. B. JUnit, Enzyme, Jest
Der Einsatz automatisierter Code-Test-Tools ist in Softwareunternehmen weit verbreitet. Die Kenntnis dieses Verfahrens oder die Fähigkeit, selbst automatisierte Tests zu schreiben, kann ein wichtiger Vorteil sein.
Containerisierung
Beispiel: Docker
Containerisierung bedeutet, dass eine Anwendung zusammen mit ihrer Umgebung in einer Einheit, einem Container, gekapselt wird. Dadurch kann es problemlos transferiert werden und auf verschiedenen Rechnern und Betriebssystemen laufen (mit zusätzlicher Software). Wie der logistische Standard der Größe und der Regeln für den Transport von Containern auf Schiffen (daher der Name) ist es eine allgemein akzeptierte Methode, mit der es sich lohnt, sich vertraut zu machen.
Grundlagen von Netzwerkprotokollen und Computernetzwerken
Beispiele: HTTP, REST, Public-Key-Infrastruktur
Eine einfache Beziehung – die meisten der von Ihnen erstellten Produkte basieren auf HTTP und einige andere in weitaus geringerem Umfang. Man kann sie jahrelang benutzen, ohne zu verstehen, wie sie funktionieren, aber in gewisser Weise ermöglichen sie die Existenz der von Ihnen erstellten Software. Sie kennenzulernen ist ein weiteres Element für das Verständnis der Gesamtprojekte, an denen Sie arbeiten.
Grundlagen der Cloud-Technologien
Beispiele: AWS, Azure, Google Cloud
Die Unterscheidung zwischen Infrastructure as a Service und Platform as a Service ist in diesem Fall wichtig. Der Unterschied besteht darin, dass es sich im ersten Fall um die Anmietung virtueller Maschinen handelt, die Rechenleistung bereitstellen, und im zweiten Fall um eine Cloud-basierte Plattform für die Bereitstellung von Anwendungen.
Continuous Integration Systems
Beispiele: Jenkins, Travis CI, GitHub Actions, GitLab CI (die drei letztgenannten haben Freiminuten)
Diese Systeme ermöglichen eine kontinuierliche Kontrolle der Codequalität, automatisierte Tests und die Integration von Änderungen. Diese Lösung ist in kleinen Projekten und beim Erlernen der Programmierung eher unüblich, so dass wir sie meist bei der Arbeit für eine Agentur oder ein größeres Unternehmen kennen lernen. Dennoch kann es sehr nützlich und wertvoll sein, sie zu kennen. Um sie kennen zu lernen, können Sie die neuesten Beispiele verwenden, da sie kostenlose Pakete anbieten.
Datenbanken NoSQL (Not Only SQL)
Beispiele: MongoDB, ElasticSearch, Redis
Nicht-relationale Datenbanken sind auf dem Markt weniger verbreitet als relationale und werden für etwas andere Zwecke eingesetzt, aber dennoch verwenden viele Unternehmen sie. Sie sind konzeptionell einfacher als relationale Datenbanken, so dass man weniger Zeit braucht, um die Grundlagen zu erlernen. Dennoch ist es gut zu wissen, dass es sie gibt.
Erstellung der Dokumentation
Die Fähigkeit, technische Texte zu schreiben oder Dokumentationen zu erstellen, wird von Einsteigern in die Entwicklung nur selten verlangt. Wenn Sie jedoch als fortgeschrittener Full Stacker gelten wollen, ist es wichtig, diese Fähigkeiten zu besitzen.
UX/UI Grundlagen
Das Verständnis der einfachsten UX/UI-Regeln erleichtert die Kommunikation, das Verständnis von Richtlinien und die Rolle bestimmter Teile im Gesamtpuzzle. Es ist nicht notwendig, aber es kann Ihnen die Arbeit erleichtern und manchmal sogar ermöglichen, mit einer genauen Beobachtung oder Korrektur zu glänzen.
Welche Soft Skills sollte ein Full Stack haben?
Eine Reihe von technischen Fähigkeiten öffnet viele Türen in der Welt der Softwareentwicklung, aber oft sind es die weichen Eigenschaften, die den Unterschied machen, um eine Stelle zu bekommen. Der moderne Programmierer muss zunehmend über die geometrischen Grenzen eines 16:9-Monitors hinausgehen und sich auf andere Weise beweisen. Was ist also in dieser Hinsicht sinnvoll?
Aufmerksames Zuhören und effektive Kommunikation
Wenn Sie sich aktiv am gesamten Prozess beteiligen, können Sie Probleme schneller lösen und Aufgaben schneller abschließen. Dies ist nicht möglich ohne effektive Kommunikationsfähigkeiten und vor allem ohne die Bereitschaft, zuzuhören und die eigenen Gedanken mitzuteilen. Maximale Fluidität in solchen Prozessen hat einen messbaren Einfluss auf eine effiziente
Code-Entwicklung.
Dies gilt nicht nur für die Teamarbeit. Programmierer stehen zunehmend in direktem Kontakt mit den Kunden, auch in Form von Präsentationen vor einer größeren Anzahl von Personen. Erfahrung im öffentlichen Reden kann daher bei einigen Stellenbesetzungen ein sehr wichtiger Faktor sein.
Anpassung an sich verändernde Bedingungen
Die Arbeit in einem
Softwarehaus bedeutet oft, dass man das Projekt, an dem man arbeitet, schnell ändern muss. Die Fähigkeit, sich anzupassen, schnell zu lernen oder sogar eine neue Technologie zu erlernen, ist ein wichtiger Vorteil für einen Programmierer und ein großer Wert für jede Agentur.
Verständnis der geschäftlichen Bedürfnisse.
Das Schreiben des Codes geht immer leichter von der Hand, wenn man seinen Zweck und die Bedeutung der einzelnen Elemente kennt. Die Fähigkeit, das Geschäft eines Kunden zu verstehen, ermöglicht es Ihnen oft auch, potenzielle Risiken oder strategische Fehler zu erkennen. Dank ihres breiten Wissens und ihrer Arbeit an vielen Projekten werden fortgeschrittene Programmierer oft zu exzellenten Unternehmensberatern, die nicht nur Code erstellen, sondern Produkte realistisch besser machen. Aus diesem Grund ist am Einstellungsprozess oft der Endkunde des Softwarehauses beteiligt, der sich für Programmierer interessiert, die sich in seiner Branche auskennen.
Zusammenarbeit
Wenn wir mit allen Instrumenten der Teamarbeit bestens vertraut sind, macht uns das noch nicht zu guten Teamplayern. Nur durch Einfühlungsvermögen, Zuhören und Verständnis für die Bedürfnisse der Kollegen entsteht eine gute Atmosphäre, und in einer solchen Atmosphäre wird der beste Code geschaffen.
Last but not least
Die letzte Fähigkeit, die ich erwähnen möchte, wird die pyramidale Reihenfolge des Artikels durchbrechen, da sie absolut die wichtigste ist – gutes Englisch in Wort und Schrift.
Wer das nicht weiß, verschließt sich eine Vielzahl von Möglichkeiten in der Welt der Softwareentwicklung, nicht nur aus Gründen der Kommunikation, sondern auch aus pädagogischen Gründen. Abgesehen von den Programmiersprachen selbst ist ein großer Teil der Tutorials, Schulungen oder nützlichen Foren nur auf Englisch verfügbar. Ein Mangel an Sprachkenntnissen bedeutet daher einen Mangel an Entwicklung. Damit sollte man immer beginnen.
Und damit möchte ich enden. Vielen Dank für Ihre Aufmerksamkeit!