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
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.
Ich glaube, ich bin auch ein Full-Stack-Entwickler... aber der Mangel an Expertise in einigen spezifischen Themen hindert mich daran, es zu sagen. Ich bin wirklich gut in den Grundlagen wie HTML, Sass, jQuery, ich bin auch wirklich gut in PHP mit Symfony, MySQL, aber ich weiß nichts über React.
Ich würde gerne Ihre Gedanken zum Gebrauch von "Software-Ingenieur" im Vergleich zu "Web-Entwickler" hören. Ich sehe, dass so viele Stellenangebote jetzt Ingenieur verwenden.
Meine Sorge beim Titel "Full Stack" hat mehr mit den Erwartungen vieler Unternehmen zu tun - sie können eine Person einstellen, die alles macht. Ich befürchte, das schafft einen sehr besorgniserregenden Standard für Web-Entwickler, insbesondere für neue Web-Entwickler. Ich habe diese Sorge hier ausführlicher geschrieben.
Gut gesprochen, ohne zu sehr zu einer Seite zu neigen. Wie es sein sollte.
Als wichtiger Punkt für mich persönlich gibt es zwei Hauptdinge, denen ich sehr zustimme: sogenannte "Soft Skills", die keine Kenntnisse oder Erfahrungen in genannten Stacks sind, und vor allem die Kompetenz der Person, die das Vorstellungsgespräch führt (wo unsere Kenntnisse auf die Probe gestellt werden).
Danke für den Artikel.
Es gibt "Full-Stack" und dann gibt es das "Full-Stack-Einhorn". Der Unterschied liegt darin, dass jemand technisch alles tun kann, aber nichts davon besonders gut (oder nur einen Teil gut) und dann die Person, die alles fachmännisch in einem bestimmten Stack erledigen kann. Ich hasse es, dass viele der besser bezahlten Jobs Ihnen keine Beachtung schenken, es sei denn, Sie bezeichnen sich als Einhorn... obwohl nur wenige wirklich eines sind. Die Arbeit in Front- und Back-End aufzuteilen, sollte Standard sein. Niemand sollte meiner Meinung nach erwartet werden, alles bis ins kleinste Detail zu lernen. Die "Full-Stack"-Arroganz muss aufhören, weil ich wirklich nicht sagen kann, dass ich auch nur einen einzigen "Full Stack"-Entwickler getroffen habe, der in allen Bereichen kompetent ist (obwohl ich weiß, dass es einige gibt... sie sind einfach extrem selten).
Toller Artikel. Titel sind nur das, Titel. Die Art von Person, die Sie sind (hoffentlich), dreht sich nicht um Ihren Titel.
Als ich anfing, in der Branche zu arbeiten, verstand ich "Full Stack" als einen sehr erfahrenen Entwickler, der in jedem Teil der Anwendung bestehen konnte.
Mit der Zeit erkannte ich, dass "Full Stack" eher eine Aussage der Präferenz als etwas anderes ist. Alle Full-Stack-Entwickler, die ich getroffen habe, haben sich einfach entschieden, ihre Fähigkeiten zu erweitern, anstatt sie zu vertiefen. Das ist keineswegs schlecht, es ist nur ein anderer Ansatz als der, an den ein "Front-End"-Entwickler vielleicht gewöhnt ist.
Interessanterweise habe ich gehört, dass viele Konvertiten zu Full Stack sagen, sie hätten sich einfach entschieden, sich selbst so zu bezeichnen, und das habe für sie mental einen großen Unterschied gemacht. Indem man sich selbst "Full Stack" nennt, kommt man effektiv aus dem Weg und das "Back-End" wird zugänglicher.
Das Unternehmen, in dem ich jetzt arbeite (hauptsächlich Full Stack), sucht nach einem "Junior Full Stack Developer".
Ich habe mich letzten Monat in die Programmierung verliebt und gesucht, bin dann auf die CSS-Tricks-Seite gestoßen, habe mein erstes Programm erstellt, eine Navigationsleiste. Diese Seite ist erstaunlich, Sie leisten großartige Arbeit. Diese Seite hilft mir sehr, Programmieren zu lernen. Ich lese jeden Tag Artikel, die mein Wissen erweitern. Ich habe gerade meine Website gestartet, nachdem ich HTML und CSS gelernt habe
und der Beitrag von CSS-TRICKS beträgt 90% zu meinem Lernen. Jetzt hilft er, mein Wissen zu erweitern.
Danke Chris und CSS-TRICKS
Für mich bedeutet Full-Stack, die Standards und einige Technologien von oben nach unten zu kennen – vom Webserver (Proxy, Cache) über die API (SQL, NoSQL, REST) bis hin zum Browser mit DOM, HTML, CSS... natürlich JS, aber auch Lua, Python, Go... und vor allem HTTP (Request, Response-Header: Verhandlung, Cache, Sicherheit, Berichterstattung, Richtlinien, Cookies...), Verschlüsselung und Authentifizierung (SSL, RSA, JWT). Und das ist nur eine kurze Liste.
Es wird immer schwieriger, sich als irgendetwas zu identifizieren. Ich möchte mich als Front-End-Entwickler bezeichnen, aber ich kann Node schreiben, ein bisschen DevOps machen, einen Server einrichten und all diese Dinge. Ich gestalte auch manchmal, lese über *Design* und alles, was mir in den Weg kommt.
Das Web ist groß und man braucht sicherlich viele Kleinigkeiten, um loszulegen. Selbst der sogenannte Front-End-Entwickler ist manchmal kein JavaScript-Veteran, aber Abstraktionen befähigen uns. Vor einiger Zeit habe ich für ein Tutorial über reines NodeJS bezahlt, weil ich einen Artikel gelesen hatte, der Fragen zu Node stellte und ich nichts wusste – und ich schrieb Node. Ich dachte, ich hätte Bibliotheken und nicht Node gelernt. Kommt es darauf an, die Grundlagen zu kennen, oder wie hart im Nehmen man darin ist, das zu wissen, was man vorgibt zu wissen? Da bin ich mir nicht sicher. Aber ich bin so überarbeitet, dass ich versuche, einen *Namen* für das zu finden, was ich bin. Ist es überhaupt Ingenieur oder Entwickler, oder sogar Designer?
Als ich C# schrieb, stellte ich fest, dass dasselbe Problem bestand – .NET-Entwickler, C#-Entwickler, Windows-Entwickler, Microsoft-Entwickler. Selbst in großen Unternehmen, die angeblich alles gut organisiert haben, kann es schwierig sein, Leute zu benennen.
Ich denke, Wissen ist spärlich, und jeder lernt eine riesige Menge an verwandten Dingen, nur um die Arbeit zu erledigen. Aber wie gut kennen Sie die Grundlagen, oder wie tief kennen Sie die fortgeschrittenen Dinge. Jedes Mal, wenn ich versuche, Leuten zu erklären, wer ich bin, basierend darauf, was ich tue, denke ich, ich würde jederzeit einen Front-End-Job annehmen, weil ich das zu 90 % der Zeit tue – aber nur in meiner ersten Arbeitswoche, als ich meinen Back-End-Entwickler brauchte und er nicht verfügbar war, schrieb ich mein eigenes Node. Ich denke, ich bin einfach ein Web-Entwickler, auf der Stratosphäre.
Ja, ich habe Leute gehört, die stolz darauf sind, ein Full-Stack-Entwickler zu sein. Ja, es ist sehr cool, sie bei der Arbeit zu sehen. Ich arbeite daran, ein Full-Stack-Entwickler (MERN) zu werden.
Es sind alles nur Worte. Nur schicke Titel, "Bullshit-Bingo" oder Marketing-Gerede – sehr unspezifisch. Wenn Sie also einen Jobtitel als Full-Stack-Entwickler bekommen, seien Sie nicht überrascht, wenn Sie Aufgaben bekommen, die Ihnen nicht gefallen – oder als Arbeitgeber, dass Ihr Mitarbeiter kein Experte für das ist, was Sie sich erhofft haben.
Ich schlage vor, Titel zu überspringen und einfach zu sagen, was Sie tun oder tun möchten. Zum Beispiel: "Ich baue Websites." Und gehen Sie bei Bedarf ins Detail. Klingt einfach, oder? Vielleicht nicht sehr schick in den Ohren anderer Webseitenbauer, aber was kümmert es sie? Und es ist immer genauer als all diese Titel.
Wenn Sie es mit Leuten zu tun haben, die in Titeln denken, verwenden Sie diese Titel einfach zufällig, erfinden Sie vielleicht sogar neue, die noch schicker klingen. Für diese Leute wird das den größten Eindruck hinterlassen. ;)
Also, heute bin ich ein "Multi-Stack-Ingenieur", morgen ein "All-Stacks-Architekt" und übermorgen ein "Stack-Design-Papst".
Und auf lange Sicht, nachdem wir die Szene mit zufälligen Titeln überschwemmt haben, werden sie alle schließlich keine Wirkung mehr haben und wir können wieder darüber sprechen, was wir eigentlich tun. ;)
Alsooo... Wie nennt man den Linux – Nginx/OpenResty – Tarantool – Fengari Stack? Den Hipster-Stack?
Ich bin verliebt in das Design dieser Website.
Full-Stack-Entwickler gibt es, aber Arbeitgeber sollten verstehen, dass sie einen Alleskönner bekommen, der aber kein Meister ist.
Interessanter Artikel, vielen Dank
Ich habe mich nie wirklich als Full-Stack betrachtet, da ich weiß, dass ich viele Dinge nicht weiß. Aber ich sehe auch, dass meine Expertise im Vergleich zu vielen recht breit gefächert ist. Dennoch hängt es vom Stack, der Aufgabe, der zu erledigenden Arbeit ab. Und ich bin immer noch mehr auf UX und Front-End spezialisiert als auf Back-End und Server, also...
Schauen Sie, wo Sie hinkommen, sammeln Sie Erfahrungen und rufen Sie bei Bedarf Experten hinzu.
Und Titel in der Webentwicklung sind nur für ein Jahr gut... die Dinge bewegen sich zu schnell.
Meine 2 Cent
Das ist so ähnlich, als würde man fragen: "Macht mich das Ausführen von Ölwechseln bei Jiffy Lube zu einem
Automechaniker?"
Ein echter Full-Stack-Entwickler kann mit einer leeren Kiste beginnen und eine voll funktionsfähige, relevante und für die Zeit moderne Webanwendung erstellen. Das bedeutet die Installation und Härtung des Betriebssystems (z. B. eines Linux-Servers); die Installation und Konfiguration des HTTP-Dienstes, einschließlich Interpreter, Caches usw. (wie Apache, PHP, Memcache usw.); die Installation und Konfiguration des Datenbankservers (MySQL oder andere); die Programmierung und Wartung des Back-Ends, einschließlich SQL; das Design und die Programmierung des Front-Ends (HTML, JS, CSS usw.). Das mag steif klingen, aber irgendwann wird jemand kommen, der den Unterschied kennt. Der Vater Ihrer Freundin kennt vielleicht den Unterschied nicht, aber zukünftige Kollegen, Kunden, Chefs usw. sind eine andere Geschichte.