Was bedeutet es, "Full Stack" zu sein?

Chris Coyier - 21. Mai 2019

Diese Frage stellte mir kürzlich ein Kollege, der auf derselben Web-Tech-Konferenz war wie ich. Dieser Entwickler hatte viele neue Leute getroffen, die sich buchstäblich als **Full-Stack-Entwickler** vorstellten, so ähnlich wie Bob Vance, Vance Refrigeration in der Serie The Office, nur eben stattdessen Tony Frank, Full-Stack-Entwickler.

Ich vermute, der Entwickler, der die Frage aus dem Titel dieses Beitrags stellte, kannte bereits die grundlegende Idee dessen, was die Leute unter "Full-Stack-Entwickler" verstehen, fragte sich aber, was zum Teufel das alles soll. Es lag ein bestimmter *Ton* in der Frage. Ein Ton, der darauf hindeutete, dass diese Person den Begriff nicht gerade liebte.

Heutzutage wahrscheinlich auch ein bisschen DevOps (z. B. Git, Tests und die Bereitstellung von Websites in der Produktion). Der "Stack" ist all diese Dinge kombiniert, daher ist ein Full-Stack-Entwickler eine Kurzform für: Wenn es um den Bau von Websites geht, kann ich alles tun.

Es gibt einige Stacks, die im Laufe der Jahre Berühmtheit erlangt haben. Vielleicht haben Sie schon vom LAMP-Stack gehört?

Linux Apache MySQL PHP

Ein Full-Stack-Entwickler auf diesem Stack bedeutet, dass Sie Linux, Apache, MySQL und PHP kennen. (Abstrakt: Server-Software, Webserver, Datenbank, Back-End-Sprache.) Diese Seite läuft auf diesem Stack, und ich bin allein für ihre Entwicklung verantwortlich, also bin ich wohl in einem lockeren Sinne ein Full-Stack-Entwickler.

Aber "locker" ist eine großzügige Auslegung. Ich weiß nichts über Linux, außer dass es meine Webserver betreibt. Ich weiß nicht viel über Apache, außer dass ich manchmal HTAccess-Direktiven verwende, um Dinge zu tun. Die Anzahl der MySQL-Abfragen, die ich geschrieben habe, könnte ich an beiden Händen abzählen, und PHP kenne ich wirklich nur im Kontext von WordPress.

So betrachtet bin ich kaum noch ein Entwickler. Full Stack bezieht sich im Allgemeinen auf das Einbeziehen von Front-End-Aufgaben, und in diesem Bereich bin ich kompetent genug, dass mein Front-End-Fähigkeitenset allein es mir ermöglicht hat, im Laufe meiner Karriere Dutzende (oder Hunderte!) von Websites zu erstellen. Full-Stack-genug, jedenfalls.

Es gibt unzählige andere Stacks.

LAMP ist nicht besonders vorschreibend, wie man das Front-End erstellt. Es stammt aus einer Zeit, in der davon ausgegangen wurde, dass man ein Back-End erstellt, das HTML ausgibt, und das ist dann das Front-End.

Ein weiterer Stack, der seit der großen Ankunft von JavaScript Berühmtheit erlangte, ist der MEAN-Stack.

MongoDB Express Angular Node

Es ist durchaus möglich, Teile eines Stacks auszutauschen. Vielleicht würden Sie Nginx anstelle von Apache oder PostgreSQL anstelle von MySQL in einem ansonsten LAMP-Stack verwenden. MEAN ist bemerkenswert, da jede Schicht des Stacks durch neue Technologie ersetzt wurde. Node brachte JavaScript auf das Back-End, das Webserver betreiben, Routing verwalten, Datenquellen verbinden, Build-Prozesse ausführen, Code kompilieren und vieles mehr konnte.

Ein Full-Stack-Entwickler in dieser Welt schreibt fast alles in JavaScript. Kein Wunder, dass es eine gewisse Explosion von Leuten gibt, die sich selbst als "voll" Stack bezeichnen. Eine einzige Sprache wie JavaScript, die selbst im Browser läuft und eine überragende Front-End-Technologie darstellt, ist eine weit verbreitete übertragbare Fähigkeit.

Der MEAN-Stack kann genauso leicht Schichten austauschen wie LAMP. Vielleicht verwenden Sie einen Datenspeicher wie Fauna oder Firebase stattdessen. Vielleicht verwenden Sie Vue oder React anstelle von Angular. Vielleicht brauchen Sie Express nicht, weil Sie Ihr Routing einem Framework überlassen oder es clientseitig machen.

Shawn Wang nennt einen weiteren beliebten Stack STAR

Design Systems TypeScript Apollo React

Das ist durchgehend JavaScript.

Es ist bemerkenswert, dass wir, obwohl wir immer noch von einem Stack sprechen, weniger über unsere Server und Server-Software nachdenken, bis zu dem Punkt, an dem sie nicht mehr wirklich ein Schlüsselelement des Stacks sind. Nicht, dass Entwickler und Unternehmen dies nicht ernst nehmen, aber es ist jetzt abstrakter als traditionell. Ich verweise auf die Welt des Serverless als Beispiel. Die Fragen drehen sich nicht darum, welches Betriebssystem unsere Server verwenden sollen; sondern darum, welche Plattform am kostengünstigsten für die Ausführung unserer JavaScript-Funktionen ist.

Also entwickeln sich Stacks im Laufe der Zeit weiter. Aber es geht nicht nur darum, welche Technologien sie verwenden, sondern auch darum, was wir überhaupt als Teil eines Stacks betrachten. **Was Full-Stack bedeutet, wandelt sich im Laufe der Zeit.** Wir befinden uns gerade an einem Punkt, an dem das Beherrschen von JavaScript Ihnen eine Full-Stack-Ehrennadel verleiht. Sie können mit Client-seitigen Frameworks arbeiten, Komponenten entwerfen und sie zusammenfügen, um ein gesamtes Front-End zu erstellen. Sie können Webserver schreiben. Sie können Back-End-Code schreiben, der mit APIs spricht. Sie können alle notwendigen State-Management-Aufgaben erledigen. Sie können Build-Prozesse und Deployment-Pipelines erstellen. Sie können sogar CSS in JavaScript integrieren, wenn Sie dazu neigen.

Selbst wenn Sie sich hauptsächlich auf JavaScript konzentrieren, sind die Fähigkeiten der Leute im Allgemeinen breiter gefächert. Fügt man etwas HTML- und CSS-Kompetenz, Git-Kenntnisse und ein kleines DevOps-Hobby hinzu, ist man eine echte Web-Macht. Sie können alles tun! Ein Universalgelehrter! Herr der sieben Königreiche!

Ich finde das eigentlich ziemlich großartig. Es befähigt Entwickler wirklich. Während es sich lohnt, darüber nachzudenken, wo die Eintrittsbarrieren für die Front-End-Entwicklung liegen, ist es auch interessant, all die Orte zu betrachten, an denen diese Hürde gesenkt wurde. Es ist besonders cool für mich zu sehen, wie sich die Front-End-Entwicklung immer weiterentwickelt, bis sie fast den gesamten Stack verschlingt. Der allmächtige Front-End-Entwickler, sozusagen.

Das erinnert mich stark daran, wie mächtig es sich anfühlt, ein WordPress-Site-Slinger zu sein. Man kann *viel* tun, auch wenn man nicht jedes kleine Detail tiefgehend versteht.

Mein Bekannter auf der Konferenz fuhr fort

Warum sind einige Entwickler stolz darauf, Full Stack zu sein? Viele von ihnen sagen das mit einem stolzen Lächeln. Sie fühlen sich aus irgendeinem Grund gezwungen, *Full Stack* zu betonen, wenn sie sich vorstellen.

Ich vermute, es ist genau das: Stolz.

Stolz ist eine knifflige Sache. Es bedeutete mir die Welt, als meine Eltern mir unaufhörlich sagten, sie seien stolz auf mich oder auf etwas, das ich getan hatte. Auf beiden Seiten etwas Positives. Aber seltsamerweise ist Stolz auch eine der sieben Todsünden und eine, wie man sagt, die der Ursprung von allem anderen sein mag. Ich will die Dinge nicht übertreiben, aber ich denke, es gibt hier eine Verbindung. Es ist eine Sache, ermächtigt zu sein und sich stark und fähig zu fühlen, aber etwas anderes ist es, prahlerisch zu sein und die Grenzen seiner Fähigkeiten nicht zu erkennen.

Wir alle haben viele Grenzen, besonders wenn es darum geht, eine vorbildliche Arbeit zu leisten im Gegensatz zum bloßen Erledigen der Arbeit. Auffallen erfordert heute, vorbildlich zu sein. Wie gut sind Ihre visuellen Designfähigkeiten? Bauen Sie Designsysteme oder implementieren Sie bestehende? Wie viele Jahre haben Sie Systeme gewartet? Haben Sie ein gutes Gespür für die schmerzhaftesten Arten von technischer Schuld? Wie gut helfen Sie Kollegen beim Erfolg? Können Sie eine Benutzertest-Sitzung moderieren? Wie gut sind Sie darin, Leistungsengpässe zu diagnostizieren? Was ist, wenn es ernsthafte Serverprobleme gibt? Hilft Ihnen Ihr Full-Stack-Moniker dabei, Server-Logs zu verstehen? Sind Sie mit Barrierefreiheitsaudits vertraut? Haben Sie jemals mit kniffligen relationalen Daten und langsamen Abfragen zu tun gehabt?

Ich versuche nicht, jemanden davon zu überzeugen, dass er kein Full-Stack-Entwickler ist oder dieses besondere Verdienstabzeichen nicht verdient – nur, dass das Web ein *großer* Ort mit unterschiedlichen Bedürfnissen und sich ständig verändernden Stacks ist, die alle unterschiedliche Fähigkeiten erfordern. Wenn Sie sich auf eine Stelle als Full-Stack-Entwickler bewerben, erzählen Sie ihnen ruhig, wie Full-Stack Sie sind.