Netzgeflüster: Mythos „Full Stack Developer“

Es gibt einen Begriff, der bringt mich schon seit längerem zum Stirnrunzeln bringt: „Full Stack Developer“. In Artikeln wird öfter darüber gesprochen, mit Softwareentwickler-Kollegen habe ich darüber schon philosophiert und der Begriff prangt in den Job-Beschreibungen einiger Leute. Was ist der Full Stack Developer und was ist das Problem an dem Begriff?

Was ist ein Full Stack Developer?

Ein Full-Stack-Developer ist, um mal Hackernoon (11.05.2019) bzw. Quora zu zitieren:

„A full stack developer is an engineer who can handle all the work of databases, servers, systems engineering, and clients. Depending on the project, what customers need may be a mobile stack, a Web stack, or a native application stack.“ Hackernoon/Quora (11.05.2019)

Demnach bezeichnet full stack, dass sich der Softwareentwickler sowohl mit der Bereitstellung und dem Design von Persistenz-Lösungen (Datenbanken) auskennt, sowohl mit Konfigurationsmanagement (Admin-Tätigkeiten, Continuous Integration, Server-Technologie und -Bereitstellung, Applikationsservern, …), serverseitiger- sowie clientseitiger Implementierung und dadurch eben auch mit klassischen GUI-Anwendungen und RMI genauso wie Web-Anwendungen und Webservices und am besten auch noch nativen und hybriden Mobile Apps. Deren Dokumentation, Usability, Design und Test. Davon mal abgesehen, dass jede dieser Teilaufgaben die Kenntnis von n Technologien voraussetzt. Es gibt nicht nur ein Webdevelopment Framework bzw. Skriptsprache, sondern tausende. Und selbst wenn ich es auf ein paar beliebte Technologien und besonders gefragte eingrenzen müsste, komme ich immer noch auf Javascript (plain vanilla), jQuery, Angular, ReactJS, (S)CSS, HTML5, PHP … . Joar. Da kommt was zusammen.

Keine neue Erfindung …

Als ich den Begriff das erste Mal las und im selben Zusammenhang welche Kenntnisse der beinhaltet, dachte ich: Mensch. Das bin ja ich! Meine Jobbeschreibung war allerdings bisher „Java-Softwareentwickler(in)“. Aber auch ich muss fast alles von dem machen, was da drin steht. Design und Usability mal ausgenommen, wobei ein Entwickler mit Köpfchen natürlich darauf achtet, wenn sich ein UI-Verhalten als hinderlich erweist und proaktiv darauf hinweisen sollte. Automatisierte Tests schreiben etc. gehört auch dazu, genauso wie an der Anwendung sowohl vorn als auch hinten zu schrauben. Wann wurde denn dafür so ein neuer toller Begriff entwickelt? Fest steht aber, egal ob alter oder neuer Begriff, er impliziert etwas problematisches.

Gestatten: die eierlegende Wollmilchsau

Es ist mehr als eine aktuelle Entwicklung, es ist ein Fakt, dass es nicht mehr DEN Spezialisten bzw. DIE Spezialistin für eine Technologie gibt. Viel mehr ist es eine ganze Palette, die man beherrschen muss. Vom User Interface über die Backend-Technologie bis hin zum Applikationsserver und der Datenbank. Die meisten Softwareentwickler können einmal von oben nach unten entwickeln – es ist mehr die Frage: mit welcher von diesen unglaublich vielen Technologien. In meinem Arbeitsumfeld wird daher meist mit den Begriffen „Java-Softwareentwickler“, „C#-Softwareentwickler“ oder „Web-Developer“ um sich geworfen um das etwas einzugrenzen. Und das fand ich bisher ok. Man wusste woran man ist. Java kann der Java-Softwareentwickler sicherlich. Man musste nur noch Fragen stellen (und beantworten) wie: „Wie sieht es denn im Web-Frontend aus?“

Dass man sich in einem gewissen Maß einarbeitet und die Grundzüge der meisten Technologien ja auch beherrscht ist soweit klar. Häufig wird aber bereits beim „Java-Softwareentwickler“ erwartet, dass man auch gradle Skripte schreiben, LINUX administrieren und Apple Mobile Apps programmieren kann. Undzwar pronto und gefälligst ohne lange Schulungen. Du bist ja schließlich Spezialist und ausgebildet. Was hast du eigentlich in deinen fünf Jahren Studium und deinem bisherigen Berufsleben gemacht? Ist mir schon passiert, kein Scherz. (Nebenbei erwähnt sei, dass man mit etwas Einarbeitung am ehesten noch die gradle Skripte hinkriegt und die LINUX Administration, aber dass Apple eine sehr hermetische Welt und das „schlimmste“ der drei Beispiele ist.) Wenn dann nun das Label „Full Stack Developer“ über all dem thront – wie entzieht man sich dann der irrealen Vorstellung eine eierlegende Wollmilchsau zu sein? Und des damit verbundenen Drucks?

despair

Für und Wider

Wie bei so ziemlich allen Sachverhalten hat alles seine Vor- und Nachteile. So sollte man seinen Technologiestack schon kennen. Ich wäre beunruhigt, wenn mir ein Softwareentwickler erzählt, dass er noch nie eine SQL-Anweisung (oder meinetwegen eine Anweisung in irgendeiner Skriptsprache bezogen auf Datenbankmanagement und Persistenz) geschrieben hat. Ohne das grundlegende Verständnis und „big picture“ wie eine Anwendung funktioniert, kann man schwer im Design einer Anwendung oder deren Umsetzung die richtigen Entscheidungen treffen. Ein bisschen anders sieht das aus, wenn man den „Stack“ mischt. Ich erwarte nicht von einem Webdeveloper, dass er von heute auf morgen mit JavaFX GUIs programmiert. Und ich selbst musste feststellen, dass es sehr tricky sein kann, wenn man von heute auf morgen als Java-Softwareentwickler Apple-Apps schreiben soll, noch dazu wenn diese zwingend mit Objective-C statt dem moderneren Swift entworfen werden müssen. Genau das scheint aber die Definition des „Full Stack Developers“ zu sein. Was dazu führt, dass man sich in allen möglichen Bereichen auskennt, aber nie irgendwo zu 100%. So kommt es dann wie ich es auch oftmals im Berufsalltag erlebe, dass man natürlich mal fix ein Gradle Skript schreiben kann. Und wenn es etwas rudimentäres ist, dann kriegt man das schon mit ein bisschen gegoogel und Hilfe von Stackoverflow hin. Die grundsätzliche Erfahrung mit IT ist ja schließlich da. Aber wenn es ein schwieriges Problem ist, wofür man Erfahrung mit der Technologie braucht, dann findet man sich plötzlich hilflos beim Wälzen eines Abhängigkeitenbaums wieder und fragt sich nach zwei Tagen, warum es immer noch nicht geht und muss in einer Gesellschaft die das weniger und weniger akzeptiert sagen: „Ich kann es nicht“. Von allem nur ein bisschen zu wissen sorgt für ein hartes Leben. Daher bitte liebe Menschheit: lasst den Mist mit dem Full Stack Developer. Es ist klar, dass Softwareentwickler heutzutage nicht mehr damit auskommen eine horizontale Schicht im stack abzudecken oder eine Sprache im Kern zu beherrschen, aber auch der Full Stack Developer ist eine Entwicklung in die falsche Richtung.

Image credit: KS KYUNG

Würde ich mich heute bewerben oder meine Jobbezeichnung angeben, werde ich weiterhin sagen Java-Softwareentwicklerin. Obwohl Full Stack nach heutigem Standard wohl üblich wäre. Wie siehst du da draußen das? Bist du ein Full Stack Entwickler? Und wie lebt es sich mit der Bezeichnung? Empfindet ihr da draußen als Entwickler es ähnlich, dass es sehr störend sein wie schnell man als Entwickler zur eierlegenden Wollmilchsau gemacht wird? Vor Allem dann, wenn etwas nicht geht? Oder gibt es einen ähnlichen Effekt in eurer Branche?

Netzgeflüster ist eine Kategorie meines Blogs in der ich mich immer zwischen dem 10. und 15. eines jedes Monats Themen aus IT, Forschung, Netzwelt und Internet widme genauso wie Spaß rund um die Arbeit mit Bits und Bytes. 🙂

6 Antworten

  1. Avatar von voidpointer
    voidpointer

    Ein bisschen gestört habe ich mich auch schon an dem Begriff, aber wie Du richtig sagst, ist er hilfreicher als den Entwickler auf seine Programmiersprache festnageln zu wollen. Nicht selten steht der Begriff auch in Stellenausschreibungen und da wünschen Unternehmen sich natürlich das Blaue vom Himmel.
    Auch Probleme will ja keiner haben und daher werden sie gerne abgewälzt und damit ist das Problem dann für die Leute auch schon halb gelöst und kann doch so schwer nicht sein. 😉 Wenn man es schafft einem Chef den Wunsch zu nehmen (einen gewissen) Druck aufzubauen, dann nimmt man ihm fast die Luft zum Atmen würde ich sagen. 😉

    Bzgl. Mobile development bietet sich bei Mobile auch ein weites Feld: Xamarin, Qt, HTML5 oder native Lösungen für Android/iOS können ja nach Projekt, Team und Firma die richtige Wahl sein. Die Wahl der Richtung scheint auch mlir nicht Teil von „Full-Stack“ zu sein.

    Ich denke je größer ein Projekt wird, desto mehr bringt Expertise in den Technologien, weil die Lösungen tragfähiger sein sollten. Bei kleinen Anwendungen wie vielen Mobile-Apps ist Schnelligkeit zwar nicht alles aber doch sehr viel. Wie überall bestimmen aber auch dort die Anforderungen den Aufwand. Wenn nicht alles 0815 sein soll, dann muss man seine Frameworks schon genau kennen und das dauert eben auch dort. Gerade bei UIs ist Kenntnis des Frameworks fast alles und ein routinierter Entwickler ist bei höheren Anforderungen um ein Vielfaches schneller als jemand der erst vor kurzem damit angefangen hat. Wenn jemand neu in den Technologien ist, ist es immer effizient und daher klug, wenn ein erfahrener Entwickler dabei hilft den Rahmen abzustecken. Das Berufsleben sieht natürlich oft anders aus…

    Ich habe eine Zeit lang iOS-Apps entwickelt. Apple war/ist ein bisschen eine eigene Welt was auch als Entwickler seine Vor- und Nachteile hat. Wenn Du tiefer in die iOS-Programmierung einsteigen willst, würde ich Dir „Programming iOS 12“ von Matt Neuburg empfehlen, Zwar kenne ich nur eine ältere Version und leider sind die Beispiele im Buch in Swift, aber gute Bücher zu iOS Entwicklung waren zumindest früher selten. Auch nutzen wohl die meisten Bücher inzwischen Swift.

    Inzwischen bin ich wieder verstärkt in der C++ Welt unterwegs und mache eben was nötig ist. So UI-lastig wie z.B. die iOS-Projekte die ich früher gemacht habe, sind meine aktuellen Projekte aber nicht mehr.

  2. Avatar von netzvagabund
    netzvagabund

    Das mit dem Fullstack-Entwickler funktioniert aus meiner Sicht immer nur bis zu einem bestimmten Grad. Ich bin selbst vor 4 Jahren als Quereinsteiger in die Entwicklung in einer kleinen Firma mit einer Hand voll Entwicklern eingestiegen. Diese Größe erfordert einfach, das man quasi überall mit anfassen kann. Zum Lernen fand ich das auf der einen Seite spannend, weil man feststellen kann was einem liegt und was vielleicht weniger und wie die ganzen Technologien ineinander greifen. Aber man merkt auch schnell, dass die Qualität drunter leidet. Man kann eben nicht alles GUT können. Es reicht um was zum Laufen zu bekommen, aber Feinheiten fallen hintenüber, wenn man nicht auch Spezialisten für die einzelnen Bereiche hat. Inzwischen möchte ich eigentlich lieber mal eine Sache für längere Zeit machen um mich auch mal in die Wissenstiefe begeben zu können anstatt immer nur an der Oberfläche rumzukratzen.

  3. Sehr spannender Artikel – danke dafür! Werde ich auf jeden Fall mal mit meinen Developern drüber diskutieren, tolle Anregung 🙂 Liebe Grüße, Sabine

  4. […] Mythos „Full Stack Developer“ […]

  5. […] mal Kunst studieren, habe mir das aber aus ähnlichen Gründen abgeschminkt und weil ein anderes Herzensfach […]

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert