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?
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. 🙂
Schreibe einen Kommentar