Was ist eigentlich ein Fullstack Developer?
Jeder spricht von Fullstack-Entwicklung. In der modernen Webentwicklung ist kaum noch die Rede von reiner Front- oder Backend-Entwicklung. Verbreitet ist der Wunsch, dass Sie sich in Front- und Backend gleichermaßen gut auskennen: HTML, CSS und JavaScript, PHP, XML, DOM, Ajax, Web-APIs und Web-Architekturen, REST, GraphQL, SQL und NoSQL sowie Docker gehören zu den klassischen Fähigkeiten.
Aber müssen Sie wirklich alle diese Technologien perfekt beherrschen und Expert*in für jeden Bereich sein? Im Folgenden finden Sie Antworten auf die Fragen: Was ist Fullstack-Entwicklung? Was muss man als Fullstack-Entwickler*in können? Welche Fähigkeiten müssen Sie mitbringen? Steigen Sie ein in die Welt der Fullstack-Entwicklung und werfen Sie einen Blick über den Tellerrand!
Grundlagen der Webentwicklung
Um verstehen zu können, welche Fähigkeiten Sie als Fullstack Developer brauchen und mit welchen Aufgaben Sie sich beschäftigen, müssen zunächst einige Begrifflichkeiten geklärt sein. Neben dem Verständnis von Webseiten, Webanwendungen, Client und Server, dürfte insbesondere der Begriff »Stack« eher unbekannt sein. Im Folgenden haben wir Ihnen die Definitionen kurz und knapp zusammengefasst.
Was ist der Unterschied zwischen Webseite, Website und Webanwendung?
Die Begriffe Webseite, Website und Webanwendung, werden fälschlicherweise oft synonym verwendet. Per Definition bezeichnet eine Webseite ein einzelnes HTML-Dokument (Hypertext Markup Language), das unter einer bestimmten URL abgerufen werden kann, z. B. die Produktseite https://www.rheinwerk-verlag.de/fullstack-entwicklung-das-handbuch-fuer-webentwickler/. Eine Website dagegen ist eine Zusammenfassung verschiedener einzelner Webseiten, z. B. die Verlagswebsite https://www.rheinwerk-verlag.de/. Bei einer Webanwendung dagegen handelt es sich um eine Website, die einer Desktopanwendung ähnelt. Beispiele hierfür sind Google Documents und Google Sheets. Ein synonymer Begriff für solche, vor allem interaktiven und mitunter komplexen, Webanwendungen ist auch Rich Internet Application (RIA).
Was versteht man unter Client und Server?
Webseiten und Webanwendungen bestehen aus dem Frontend, der auf der Clientseite ausgeführt wird, und dem Backend, der auf der Serverseite ausgeführt wird. Auf Serverseite sorgt ein Webserver dafür, dass die Webseite bereitgestellt wird. Auf Clientseite greift man über einen Webclient, auch User Agent genannt, auf die Webanwendung zu. In der Regel handelt es sich dabei um einen Webbrowser. Es gibt aber auch andere Arten von Clients, wie z. B. Screenreader, kommandozeilenbasierte bzw. programmgesteuerte HTTP-Clients oder Headless Browser, die keine grafische Oberfläche haben.
Ruft man im Browser eine Webseite auf, folgt man dabei diesem Ablauf: Auf Clientseite gibt der Nutzer im Browser die Adresse ein, die URL (Uniform Resource Locator), und bestätigt mit entsprechender Taste bzw. entsprechendem Button im Browser das Laden der Webseite. Der Browser generiert daraufhin im Hintergrund eine Anfrage, die über das HTTP-Protokoll an den Server gesendet wird, auch HTTP-Request genannt. Auf Serverseite nimmt der Webserver die Anfrage entgegen und generiert eine passende Antwort, eine HTTP-Response, die er dann an den Client zurückschickt. Der Browser wiederum nimmt die Antwort entgegen und rendert, sprich visualisiert die Webseite. Benötigte Ressourcen wie beispielsweise Bilder lädt der Browser dabei automatisch nach, damit sie dargestellt werden können.
Was sind Software-Stacks?
Bei einem Software-Stack, auch Stack oder Solution-Stack genannt, handelt es sich um eine konkrete Auswahl bestimmter Komponenten, die gemeinsam eine Plattform bilden, mit der eine Applikation entwickelt und betrieben wird. Einzelne Komponenten des Stacks können sein:
- Das Betriebssystem, auf dem die Software bzw. Applikation läuft (sowohl auf Clientseite als auch auf Serverseite). Hierzu zählen die klassischen Betriebssysteme → Linux, macOS und Windows, aber auch mobile Betriebssysteme wie Android oder iOS.
- Der Webserver, der die Applikation hostet, z. B. nginx oder der Apache HTTP Server.
- Die Programmiersprache, die verwendet wird, um die Applikationslogik zu implementieren, z. B. → JavaScript, → Java, → C++ oder → PHP.
- Programmierwerkzeuge (Tools), die während der Entwicklung zum Einsatz kommen, wie z. B. bestimmte Compiler, die für Menschen lesbaren Quelltext in für Computer lesbaren Maschinencode übersetzen.
- Bibliotheken, die zum Einsatz kommen, z. B. Frontend-Bibliotheken wie Lodash oder jQuery.
- Frameworks, die zum Einsatz kommen, z. B. Web-Frameworks wie Express.
- Die Laufzeitumgebung, unter der die Applikation ausgeführt wird, z. B. die JavaScript-Laufzeitumgebung → Node.js, die es ermöglicht, JavaScript-Code auch auf Serverseite auszuführen.
- Die verwendeten Datenbanken, etwa relationale Datenbanken wie MySQL und PostgreSQL oder nicht-relationale Datenbanken, auch NoSQL-Datenbanken genannt, wie MongoDB.
Der Begriff Stack rührt daher, dass die einzelnen Komponenten in der Plattform hierarchisch angeordnet und wie »übereinandergestapelt« sind.
Bei Webapplikationen unterscheidet man darüber hinaus oft auch zwischen einem serverseitigen Stack (Server-Stack) und einem clientseitigen Stack (Client-Stack), die grundsätzlich verschieden sein können. Es ist nicht unüblich, für die Implementierung des Backends auf eine Programmiersprache wie Java zurückzugreifen und das Frontend mit → HTML, JavaScript und CSS umzusetzen. Umgekehrt ist es denkbar, das Backend in JavaScript zu programmieren und das Frontend in Java, z. B. bei der Entwicklung einer Android-basierten App für Smartphones.
Welche Stacks gibt es?
Eines der bekanntesten und ältesten Beispiele für einen Backend-Stack ist der LAMP-Stack, eine Kombination aus dem Betriebssystem Linux, dem Webserver Apache, der Datenbank MySQL und der Programmiersprache PHP. Alternative Varianten dieses Stacks verwenden statt Linux ein anderes Betriebssystem und nennen sich dann WAMP (Windows-Variante) bzw. MAMP (macOS-Variante). Neuere Varianten dieses Stacks verwenden anstelle von PHP auch Ruby oder Python als Programmiersprache.
Nicht so alt, aber dafür in den letzten Jahren umso bekannter geworden, ist der MEAN-Stack – der allerdings nicht ganz sauber zwischen Backend und Frontend unterscheidet. MEAN steht für die nicht-relationale Dokumentendatenbank MongoDB, das Web-Framework Express, das Frontend-Framework Angular sowie die serverseitige JavaScript-Laufzeitumgebung Node.js. Diese Kombination hat für Entwickler den charmanten Vorteil, dass sowohl für die Clientseite als auch für die Serverseite dieselbe Programmiersprache zum Einsatz kommt.
Der beliebte MERN-Stack ist eine leichte Abwandlung des MEAN-Stacks, bei dem für das Frontend statt Angular das Framework React zum Einsatz kommt. Die anderen Komponenten des Stacks, also MongoDB, Express und Node.js, bleiben gleich.
Der Frontend-Stack besteht aus den grundlegenden Webtechnologien HTML, CSS und JavaScript. Dieser Stack hat für die Entwicklung von Frontends eine so große Relevanz, dass gar nicht mehr explizit von einem Stack gesprochen wird.
Fullstack-Entwicklung – das steckt dahinter
In den vergangenen Jahren hat sich die Berufsbezeichnung »Fullstack-Entwickler*in« immer mehr etabliert. Dabei geht es nicht darum, dass Sie in einem Webprojekt alles können muss. Es geht darum, einen Überblick über das Gesamtsystem einer Webapplikation zu haben und die Zusammenhänge zu verstehen. Das beginnt bei der Infrastruktur, auf der die Applikation ausgeführt wird, über die Organisation der Datenhaltung und des Backends der Applikation bis hin zur Umsetzung des Frontends. Ein Fullstack Developer ist dabei nicht nur mit einem sehr breiten, aber flachen Wissen ausgestattet, sondern kann sich in einem Thema spezialisieren. Wichtig ist, dass der erwähnte Blick für das Gesamtsystem nicht verloren geht.
Was ist ein Fullstack-Entwickler?
Der Begriff Fullstack umfasst den gesamten Stack, also sowohl den Backend- als auch den Frontend-Stack. Sind Sie in der Fullstack-Entwicklung aktiv, kennen Sie sich daher gleichermaßen mit Backend- und Frontend-Technologien aus. Als Fullstack-Entwickler*in sind Sie ist also ein echter Allrounder: Sie können sowohl eine Weboberfläche mit HTML, CSS und JavaScript als auch einen Webservice implementieren, der auf Serverseite läuft und Anfragen vom Client verarbeitet. Sie sind außerdem in der Lage, je nach Anforderungen die richtige Datenbank auszuwählen, und wissen auch, wie die gesamte Applikation für den Produktiveinsatz vorbereitet werden kann.
Anforderungen an die Fullstack-Entwicklung
In einem Webprojekt gibt es verschiedene Rollen in der Entwicklung. Neben den drei folgend vorgestellten Gruppen kann es speziellere Untergruppen geben, wie zum Beispiel Datenbankspezialist*innen, Mitarbeitende im Frontend-Design, im UX-Design, Texten und viele mehr.
Als Frontend-Entwickler*in können Sie mit HTML, CSS und JavaScript komplexe Weboberflächen bauen und haben im besten Fall auch Erfahrung im Design. Sie kennen sich außerdem mit Frontend-Bibliotheken und -Frameworks wie Angular, React und Vue aus, kennen die entsprechenden Tools wie WebPack oder Babel und wissen mit CSS-Präprozessorsprachen umzugehen.
Als Backend-Entwickler*in können Sie komplexe Applikationslogik für die Serverseite entwickeln und diese z. B. über Webservices zur Verfügung stellen. Sie kennen sich mit dem Design von Webservice-APIs aus und wissen, welche Datenbank für welchen Zweck geeignet ist.
Als DevOps-Spezialist*in – DevOps setzt sich aus den Begriffen Development, also Entwicklung, und Operations, also Vorgänge, zusammen – vereinen Sie in sich Fähigkeiten, die für die Softwareentwicklung und den IT-Betrieb notwendig sind. Zu den Aufgaben von → DevOps-Teams zählen z. B. Anwendungen für das Produktivsystem zusammenzustellen (deployen), Build-Systeme zu konfigurieren und Webserver zu administrieren. Darüber hinaus kennen sich DevOps-Teams auch oft mit Themen wie Sicherheit und Performance von Webanwendungen aus.
Als Fullstack-Entwickler*in erfüllen Sie im besten Fall alle der genannten Anforderungen und vereinen die drei Rollen bis zu einem gewissen Grad in einer Person. Keine leichte Aufgabe und zudem eine, für die Sie einige Jahre lang Erfahrung sammeln müssen.
Fullstack-Entwickler vs. Spezialisten
Aufgrund der breit gestreuten Anforderungen laufen Sie als Fullstack-Entwickler*in allerdings auch schnell Gefahr, »alles nur ein bisschen, dafür aber nichts ganz richtig zu können«. Demgegenüber stehen die Spezialist*innen, die sich genau auf ein bestimmtes Gebiet festgelegt haben. Ein Datenbankspezialist kennt sich mit Datenbanken in der Regel besser aus als eine Fullstack-Entwicklerin, ein Frontend-Designer kennt im Zweifelsfall besser die verschiedenen CSS-Kniffe, die notwendig sind, um ein Layout genau nach Vorlage umsetzen zu können. Und eine DevOps-Spezialistin ist bei der Arbeit auf der Kommandozeile und der Verwaltung von Servern oft effektiver als jemand aus der Fullstack-Entwicklung.
In großen Unternehmen bzw. großen Softwareprojekten ist es häufig so, dass es für verschiedene Bereiche des verwendeten Stacks ganze Teams gibt. Ein Team kümmert sich um die Datenbank, ein weiteres um das Frontend-Design, ein anderes ist für die Umsetzung des Designs in eine konkrete Weboberfläche zuständig. Dennoch kann umfassendes Wissen – das in der Fullstack-Entwicklung vereint wird – von Vorteil sein, da die einzelnen Bereiche nicht komplett unabhängig voneinander agieren, sondern in der Regel ineinandergreifen.
Oftmals werden Fullstack-Entwickler*innen insbesondere in kleineren Firmen oder Start-ups benötigt, die agiler und flexibler auf Anforderungen reagieren können – oder müssen.
Wie wird man Fullstack-Entwickler?
Fullstack-Entwickler*in werden Sie nicht von heute auf morgen. Wenn Sie den ersten Schritt auf Ihrem Weg in die Fullstack-Entwicklung machen möchten, sollten Sie sich einen Überblick über alle Themen, die für die Umsetzung einer vollwertigen Webapplikation von Bedeutung sind, verschaffen: angefangen beim Frontend mit HTML, CSS und JavaScript über Backend-Schnittstellen bis hin zur Speicherung von Informationen in Datenbanken. Aber auch Themen wie Testing, Deployment und die Organisation des Quellcodes mit Versionskontrolle sind für Sie relevant. Sie sollten mit modernen Technologien umgehen können, Konzepte kennen, die für das Verständnis einer Applikation notwendig sind, und mit den gängigen Bibliotheken und Frameworks vertraut sein.
JavaScript als Technologie bildet eine wichtige Grundlage, da es sowohl client- als auch serverseitig eingesetzt werden kann. Um ein solides Grundwissen in dieser Sprache kommen Sie daher nicht herum. Wenn Sie JavaScript in Form der Node.js-Plattform auch serverseitig einsetzen, machen Sie sich das Leben als Fullstack-Entwickler*in deutlich leichter. Aber auch hier gilt: Werfen Sie einen Blick auf andere Lösungsansätze wie beispielsweise C# oder → Python. Lassen Sie sich inspirieren, und finden Sie den Ansatz, der zu Ihnen passt.
Programmieren lernen für Einsteiger und Fortgeschrittene
Mit diesen Büchern werden Sie schnell und einfach Programmieren lernen. Unsere Experten zeigen Ihnen, welche Technologien, Konzepte und Methoden Sie kennen müssen – und begleiten Sie auf Ihrem Weg zum Profi.
In der modernen Anwendungsentwicklung ist die → Cross-Plattform-Programmierung besonders effektiv. Erfahren Sie, was dahinter steckt und welche Vorteile wie auch Herausforderungen das plattformunabhängige Development mit sich bringt.
FAQ rund um die Fullstack-Entwicklung
Was sind die Unterschiede zwischen Frontend-, Backend- und Fullstack-Entwicklung?
In der Frontend-Entwicklung werden mit HTML, CSS und JavaScript komplexe Weboberflächen gebaut. Erfahrung im Design ist von Vorteil. In der Backend-Entwicklung werden komplexe Applikationslogik für die Serverseite entwickelt und diese z. B. über Webservices zur Verfügung gestellt. In der Fullstack-Entwicklung werden diese Fähigkeiten vereint. Jemand, der in der Fullstack-Entwicklung arbeitet, kennt sich sowohl mit Backend- wie auch mit Frontend-Technologien aus.
Welche Fähigkeiten muss man in der Fullstack-Entwicklung mitbringen?
Als Fullstack-Entwickler*in kennen Sie sich mit HTML, CSS und JavaScript aus. Auch Themen wie Testing, Deployment und die Organisation des Quellcodes mit Versionskontrolle sind Ihnen vertraut. Als Fullstack Developer können Sie mit modernen Technologien umgehen, kennen Konzepte, die für das Verständnis einer Applikation notwendig sind, und sind mit den gängigen Bibliotheken und Frameworks vertraut.
Was sind typische Aufgaben in der Fullstack-Entwicklung?
In der Fullstack-Entwicklung können Sie sowohl eine Weboberfläche mit HTML, CSS und JavaScript als auch einen Webservice implementieren, der auf Serverseite läuft und Anfragen vom Client verarbeitet. Je nach Anforderungen sind Sie in der Lage, die richtige Datenbank auszuwählen und können die gesamte Applikation für den Produktiveinsatz vorbereiten.
Ist ein*e Fullstack-Entwickler*in besser als ein Team aus Backend- und Frontend-Entwickler*innen?
Bei großen Softwareprojekten gibt es in der Regel einzelne Teams für die verschiedenen Bereiche des verwendeten Stacks. Die Teams kümmern sich jeweils um die Datenbank, das Frontend-Design, die Umsetzung des Designs in eine konkrete Weboberfläche etc. Dennoch kann eine Person, die das Wissen aus der Fullstack-Entwicklung vereint, von Vorteil sein, da die einzelnen Bereiche so ineinandergreifen und produktiver agieren können. Oftmals werden Fullstack-Entwickler*innen aber vor allem in kleineren Firmen oder Start-ups benötigt und eingesetzt, da diese agiler und flexibler auf Anforderungen reagieren müssen.
Die Inhalte und Bilder auf dieser Seite stammen aus dem Buch »Fullstack-Entwicklung. Das Handbuch für Webentwickler«. | Bilder: © Rheinwerk Verlag (1, 2, 3, 4)
Bleiben Sie auf dem Laufenden
In unseren Newslettern versorgen wir Sie monatlich mit Informationen zu Neuerscheinungen, Buchempfehlungen, Aktionen, Veranstaltungen und vielem mehr.