Die große Kluft

Zwei Frontend-Entwickler sitzen in einer Bar. Sie haben sich nichts zu erzählen.

Nehmen wir an, es gibt eine Kluft in der Frontend-Entwicklung. Ich spüre sie, aber es ist nicht nur ein Gefühl. Basierend auf sehr vielen schriftlichen Entwickler-Statements, Interviews, die Dave Rupert und ich bei ShopTalk geführt haben, und persönlichen Diskussionen ist es, wie man so schön sagt... ein Ding.

Die Kluft besteht zwischen Menschen, die sich als (oder den Jobtitel) Frontend-Entwickler bezeichnen, aber unterschiedliche Fähigkeiten besitzen.

Auf der einen Seite eine Armee von Entwicklern, deren Interessen, Verantwortlichkeiten und Fähigkeiten sich stark um JavaScript drehen.

Auf der anderen Seite eine Armee von Entwicklern, deren Interessen, Verantwortlichkeiten und Fähigkeiten sich auf andere Bereiche des Frontends konzentrieren, wie HTML, CSS, Design, Interaktion, Muster, Barrierefreiheit usw.

Hören wir von Leuten, die diese Kluft spüren.

Als Antwort auf unseren Beitrag „Was macht einen guten Frontend-Entwickler aus?“ schrieb Steven Davis :

Ich denke, wir müssen vom Begriff selbst wegkommen. Wir sollten uns in UX Engineers und JavaScript Engineers aufteilen. Das sind unterschiedliche Denkweisen. Die meisten Leute sind nicht in beidem, JavaScript und CSS, erstaunlich gut. Lasst UX Engineers eng mit UX/Design zusammenarbeiten, um großartige Designs, Interaktionen, Prototypen usw. zu erstellen, und lasst JavaScript Engineers alle Datenteile handhaben.

Ich habe es so satt, großartig in CSS zu sein, aber zu JavaScript gezwungen zu werden. Ich bin kein Programmierer!

Dieses Schisma passiert nicht unter unseren Füßen. Wir fordern es.

Ich hörte zum ersten Mal von einer Identitätskrise in Vernon Joyces Artikel „Hat die Frontend-Entwicklung eine Identitätskrise?“ Er verweist auf die großen JavaScript-Frameworks:

Frameworks wie Angular oder Bibliotheken wie React erfordern von Entwicklern ein viel tieferes Verständnis von Programmierkonzepten; Konzepte, die historisch vielleicht nur mit dem Backend verbunden waren. MVC, funktionale Programmierung, Higher-Order Functions, Hoisting… schwierige Konzepte, wenn Ihr Hintergrund in HTML, CSS und grundlegendem interaktiven JavaScript liegt.

Das trifft auf mich zu. Ich arbeite gerne mit modernen Frameworks, schicken Build-Tools und interessanten Datenlayer-Strategien und lese darüber. Im Moment arbeite ich gerne mit React als UI-Bibliothek, Apollo GraphQL für Daten, Cypress für Integrationstests und webpack als Build-Tool. Ich schiele ständig auf CSS-in-JS-Bibliotheken. Doch während ich diese Dinge durchaus als Teil der Frontend-Entwicklung betrachte, fühlen sie sich kosmisch weit entfernt an von Artikeln und Gesprächen über Barrierefreiheit, semantisches Markup, CSS-Möglichkeiten, UX-Aspekte und UI-Feinschliff, um nur einige zu nennen. Es fühlt sich an wie zwei verschiedene Welten.

Wenn Unternehmen Stellenangebote für „Front-End-Entwickler“ ausschreiben, wonach fragen sie wirklich? Angenommen, sie wissen es tatsächlich (lolz), reicht der Titel Front-End-Entwickler allein nicht aus. Es ist wahrscheinlich hilfreicher zu wissen, welche Seite der Kluft sie am meisten benötigen.

Wer bekommt den Job? Wer ist der Richtige für den Job? Ist die Gehaltsstufe für diese Fähigkeiten dieselbe?

Meine Hoffnung ist, dass die Lösung darin besteht, aussagekräftigere Stellenausschreibungen zu verfassen. Wenn klar definierte und vereinbarte Berufsbezeichnungen für die Branche insgesamt zu viel verlangt sind (und ich fürchte, das ist der Fall), können wir immer noch unsere Worte nutzen. Corey Ginnivan hat es gut ausgedrückt:

Ich würde mir wünschen, dass Stellenbeschreibungen verletzlicher und offener sind – lassen Sie die Leute wissen, was Sie erreichen wollen, spezifizieren Sie, woran sie arbeiten werden, aber öffnen Sie es als Wachstumschance für beide Parteien.

Job posting for a Front-End Developer that describes the role.
Das schien bei uns bei CodePen ziemlich gut zu funktionieren. Unsere eigene Cassidy Williams sagte, sie habe diese Beschreibung sehr geschätzt, als Rachel Smith sie ihr zur Prüfung schickte.

„Front-End-Entwickler“ ist immer noch ein nützlicher Begriff. Wie Mina Markham uns kürzlich beschrieb, sind es die Leute, die hauptsächlich mit Browsern und Menschen, die diese Browser benutzen, arbeiten. Aber es ist eine generische Abkürzung, sagt Miriam Suzanne:

Frontend-Entwickler ist eine Kurzform für Situationen, in denen die Details keine Rolle spielen. So wie in einer Indie-Rock-Band – wer weiß, was das ist, aber ich sage es ständig. Kurzformen sind großartig, bis man eine Stellenbeschreibung postet. Wenn die Details wichtig sind, haben wir bereits eine detailliertere Sprache – wir müssen sie nur benutzen.

Um diese Kluft etwas genauer zu beleuchten, betrachten Sie diesen Artikel von Trey Huffine, „Ein Rückblick auf die Frontend-Entwicklung im Jahr 2018“. Er ist sehr gut gemacht! Er verweist auf große Momente dieses Jahres, zeigt interessante Daten und macht Vorhersagen darüber, was wir nächstes Jahr sehen könnten. Aber er basiert ausschließlich auf dem JavaScript-Ökosystem. HTML wird nur im Kontext von JavaScript-betriebenen statischen Site-Generatoren erwähnt und CSS nur im Kontext von CSS-in-JS. Es ist Frontend-Entwicklung, aber vielleicht eine Hälfte davon: die JavaScript-Hälfte. Wenn Sie diese Zusammenfassung lesen und sich nicht mit viel darin identifizieren können, dann wäre mein Rat:

Das ist OK. Sie können immer noch ein Frontend-Entwickler sein. 🙏

Sie könnten Layout-Möglichkeiten erkunden, ein CSS- oder Design-System architektonisch gestalten, tief in UX eintauchen, interessante Animationen erstellen, sich mit Barrierefreiheit beschäftigen oder eine beliebige Anzahl anderer fester Frontend-Entwicklungsjobs erledigen. Es gibt mehr als genug zu tun.

Erinnern Sie sich noch daran, wie Frank Chimero, der unglaublich gute Websites für sich und seine Kunden erstellt, letztes Jahr völlig verwirrt war, wohin die Frontend-Entwicklung gegangen ist? Zusammenfassend:

... die Toolchains anderer Leute sind von außen absolut undurchschaubar. Selbst der Einstieg ist heikel. Letzten Monat musste ich einen Paketmanager installieren, um einen Paketmanager zu installieren. Da klappte ich meinen Laptop zu und zog mich langsam zurück. Wir sind weit entfernt vom CSS Zen Garden, wo ich angefangen habe.

In der Tat ein langer Weg. Ich könnte argumentieren, dass Sie sich nicht darum kümmern müssen. Wenn Sie erfolgreich waren und weiterhin erfolgreich sind, indem Sie Websites auf jede Ihnen bekannte Weise für sich selbst und Ihre Kunden erstellen, Halleluja! Betrachten Sie all dieses neue Toolchain-Zeug einfach als eine optionale Sache, die andere Probleme löst als Ihre.

Und doch drängt diese Toolchain-Undurchsichtigkeit selbst die Menschen, die notwendigerweise darin eingebettet sind. Dave Rupert dokumentiert einen echten Fehler mit einer Lösung, die so tief vergraben ist, dass es ein Wunder ist, dass sie gefunden wurde. Dann beklagt er sich:

Wenn Toolchains wachsen und komplexer werden, ist es, wenn man nicht bestens damit vertraut ist, sehr unklar, welche Transformationen in unserem Code stattfinden. Die Verfolgung der Unterschiede zwischen Input und Output und der Prozesse, die der Code durchlaufen hat, kann überwältigend sein.

Wer braucht diese großen Toolchains? Im Allgemeinen sind es die großen Websites. Es ist etwas schwierig zu definieren, was groß bedeutet, aber ich wette, Sie haben ein gutes Gefühl dafür. Ironischerweise, während eine Menge Tools Komplexität hinzufügen, ist der Grund, warum sie verwendet werden, um Komplexität zu bekämpfen. Manchmal fühlt es sich an, als würde man Pumas in den Wald entlassen, um sein Schlangenproblem zu lösen. Jetzt hat man ein Puma-Problem.

Die sichtbarsten Diskussionen darüber werden von Leuten in Unternehmen dominiert, die an diesen großen und komplexen Websites arbeiten. Bastian Allgeier schrieb:

Großes Team braucht „x“, deshalb ist „x“ die beste Lösung für alle. Ich denke, das ist hochgradig toxisch für kleinere Teams mit unterschiedlichen Anforderungen und Definitionen von „wartbar“ oder „nachhaltig“. Ich komme mit vielen kleineren Agenturen und Freelancern aus der ganzen Welt in Kontakt und es ist interessant, wie ihre Arbeit oft völlig losgelöst vom VIP-Zirkus des Webs ist.

Was ist hier los? Was ist passiert? Woher kommt diese Kluft? Die Antwort ist für mich ziemlich klar:

JavaScript dun got big.

So groß

  • Es ist überall im Frontend von Websites präsent. Die großen JavaScript-Frontend-Frameworks erleben ein explosives Wachstum und dominieren die Stellenausschreibungen. Diese Frameworks werden von zahlreichen Teams eingesetzt, um zahlreiche Websites zu betreiben. Auch natives JavaScript entwickelt sich schnell weiter, was viele Menschen begeistert.
  • Es betreibt auch Backends. Ihre Website könnte von einem Node.js-Server betrieben werden oder diesen beinhalten. Ihr Build-Prozess wird wahrscheinlich von JavaScript angetrieben.
  • Drittanbieter-JavaScript versorgt so viele Frontend-Funktionen, vom Anzeigennetzwerk und der Analyse einer Website bis hin zu vollwertigen Funktionen wie Bewertungen, Kommentaren und verwandten Inhalten.
  • Konzepte wie Node-gestützte Cloud-Funktionen, Speicher und Authentifizierung, kombiniert mit kostengünstigem und einfach zu skalierendem Hosting, haben JavaScript-fokussierte Frontend-Entwickler enorm gestärkt. Sie können ihre Fähigkeiten ausschließlich nutzen, um ganze funktionale Produkte auszuliefern.

Ein Frontend-Entwickler mit starken JavaScript-Kenntnissen ist heutzutage enorm mächtig. Ich nenne ihn den allmächtigen Frontend-Entwickler und habe einen ganzen Vortrag darüber gehalten:

Durch all die Möglichkeiten, die sich um die Idee von Serverless in Kombination mit vorgefertigten UI-Frameworks ranken, kann ein Frontend-Entwickler so ziemlich alles bauen, ohne viel, wenn überhaupt, Hilfe von anderen Disziplinen zu benötigen. Ich finde das spannend und verlockend, aber auch nachdenkenswert. Es ist durchaus möglich, dass man auf diesem Weg so framework-gesteuert wird, dass die breiteren Problemlösungsfähigkeiten darunter leiden. Diese Einschätzung hörte ich von Estelle Weyl, die sogar so weit geht zu sagen, dass sie Entwickler eher als „Framework-Implementierer“ betrachtet und den Titel „Ingenieur“ tool-agnostischen Problemlösern vorbehält.

Diese Frontend-Empowerment ist sehr real. Besonders in den letzten Jahren sind Frontend-Entwickler besonders mächtig geworden. So mächtig, dass Michael Scharnagl sagt, er habe gesehen, wie Unternehmen ihre Einstellungen in diese Richtung verlagert haben:

Was ich sehe, ist, dass sich viele Entwickler heutzutage ausschließlich auf JavaScript konzentrieren und ich sehe Unternehmen, wo Backend-Entwickler durch JavaScript-Entwickler ersetzt werden.

Was manche nicht verstehen, ist, dass ein JavaScript-Entwickler nicht per se ein Frontend-Entwickler ist. Ein JavaScript-Entwickler mag es vielleicht nicht, CSS zu schreiben oder sich um Semantik zu kümmern. Das ist dasselbe, wie ich es vorziehe, nicht direkt mit Datenbanken zu arbeiten oder einen Server zu konfigurieren. Das ist in Ordnung. Was nicht in Ordnung ist, ist, wenn man etwas nicht nutzen möchte und gleichzeitig anderen erzählt, was sie tun, sei einfach oder nutzlos. Noch schlimmer ist es, wenn man versucht, Experten auf ihrem Gebiet zu erzählen, dass sie alles falsch machen und dass sie es auf Ihre Weise tun sollten.

Und Jay Freestone versucht zu erklären, warum:

In den letzten Jahren hat sich die Rolle des Frontend-Entwicklers erheblich verändert. Da Anwendungen zunehmend JavaScript-lastig geworden sind, ist es für Frontend-Ingenieure notwendig geworden, architektonische Prinzipien zu verstehen und anzuwenden, die traditionell in den Bereich der Backend-Entwickler fielen, wie z.B. API-Design und Datenmodellierung.

Es ist sogar bei meiner eigenen, kleinen Arbeit passiert. Wir suchten einen Backend-Go-Entwickler, um unsere Webservices bei CodePen weiterzuentwickeln. Als wir nicht viel Glück hatten, die perfekte Person zu finden, entschieden wir uns für eine andere Richtung. Wir sahen, dass sich unser Stack zu etwas entwickelte, das JavaScript-fokussierte Frontend-Entwickler extrem willkommen heißt, so dass wir problemlos mehr von ihnen sofort einsetzen konnten. Also haben wir das getan.

Es mag hier auch eine zyklische Natur geben. Wir sehen, wie Coding Schools explosionsartig anwachsen und in weniger als einem Jahr recht talentierte Entwickler hervorbringen. Diese Absolventen von Coding Schools füllen Arbeitskräftelücken, aber noch wichtiger, wie Brad Westfall mir sagt, beginnen sie, Industrie-Diskussionen zu führen, anstatt passive Follower zu sein. Und täuschen Sie sich nicht: Diese Schulen produzieren Entwickler auf der JavaScript-Seite der Kluft. Jeder einzelne Webentwicklungscurriculum einer Coding School, das ich je gesehen habe, behandelt HTML/CSS/UI/UX/A11Y-Themen als frühe Grundlagen, die Studenten schnell durchlaufen, oder sie werden als Nebenaspekte eingestreut, während JavaScript den späteren Lehrplan dominiert. Können Sie kommen und unseren Studenten alle Layoutkonzepte in drei Stunden beibringen?

Wenn JavaScript die Gespräche über das Frontend dominiert, führt das dazu, dass sich manche Entwickler unzureichend fühlen. In einem Kommentar zu Robin Rendles „Frontend-Entwicklung ist kein Problem, das gelöst werden muss“ schreibt Nils :

Vielleicht muss der Begriff Frontend-Entwickler überdacht werden. Als ich anfing zu arbeiten, war Frontend hauptsächlich HTML, CSS und etwas JavaScript. Ein guter Frontend-Entwickler musste in der Lage sein, ein Photoshop-Layout in eine pixelgenaue Website zu übersetzen. Frontend ist heute viel, viel mehr. Wenn man Frontend-Entwicklung lernen möchte, fangen die Leute anscheinend an, Git, npm, Angular, React, Vue und all das zu lernen, und das alles wird Frontend-Entwicklung genannt.

Ich bin Designer und ich denke, ich bin ziemlich gut in HTML und CSS, aber das reicht nicht mehr aus, um ein Frontend-Entwickler zu sein.

Robin selbst gab sich den Jobtitel Erwachsener Junge, der sich zu sehr um Barrierefreiheit, CSS und Komponentendesign kümmert, aber sich kein bisschen um GraphQL, Rails oder Redux schert, obwohl ich mich wirklich schlecht fühle, dass ich mich nicht um dieses andere Zeug kümmere.

Es frustriert Menschen auch auf andere Weisen. Erinnern Sie sich an Lara Schencks Geschichte eines Vorstellungsgesprächs? Sie erfüllte 90 % der gelisteten Qualifikationen, nur um dann im Interview mit JavaScript-Algorithmen konfrontiert zu werden. Deswegen bekam sie den Job letztendlich nicht. Nicht jeder muss jeden Job bekommen, für den er sich bewirbt, aber das Problem hier ist, dass Front-End-Entwickler nicht das kommuniziert, was es als effektiver Jobtitel tun müsste.

Manchmal fühlt es sich an wie ein Paralleluniversum.

Zwei „Frontend-Webentwickler“ können direkt nebeneinander stehen und haben kaum oder gar keine gemeinsamen Fähigkeiten. Das ist für mich bei einer so spezifischen und allgegenwärtigen Berufsbezeichnung geradezu bizarr. Ich bin sicher, das ist bei einem Jobtitel wie Designer bereits der Fall, aber Frontend-Webentwickler ist bereits eine Nische innerhalb einer Nische.

Jina Anne ist eine Frontend-Entwicklerin und Designerin, die ich bewundere. Doch in einer Podiumsdiskussion, an der ich vor einigen Jahren mit ihr teilnahm, gibt sie zu, dass sie sich selbst nicht mit diesem Titel bezeichnet:

Als ich bei Apple anfing, war mein Jobtitel Frontend-Entwickler. Würde ich mich jetzt so nennen? Nein, weil es sich so stark verändert hat. Ich habe HTML/CSS gelernt, ich habe nie JavaScript gelernt, aber ich wusste genug, um damit umzugehen. Jetzt – wir reden über Jobtitel – wenn ich „Frontend-Entwickler“ höre, gehe ich davon aus, dass Sie viel mehr wissen als ich.

Es scheint, als hätte dieser Mangel an JavaScript-Fokus Jina damals das Gefühl gegeben, weniger qualifiziert zu sein als jemand mit dem offiziellen Titel eines Frontend-Entwicklers. Ich denke, die Leute hätten Glück, die Fähigkeiten zu besitzen, die Jina in ihrem linken kleinen Finger hat, aber das bin ich eben. Als ich kürzlich mit Jina sprach, sagte sie, sie vermeide den Titel immer noch speziell, weil er zu falschen Annahmen über ihre Fähigkeiten führt.

Mandy Michael brachte dies in ihrem Artikel Gibt es einen Wert in Menschen, die kein JavaScript schreiben können?“ besser auf den Punkt als jeder andere:

Was ich nicht verstehe, ist, warum es in Ordnung ist, wenn man „nur JS schreiben“ kann, aber irgendwie nicht gut genug ist, wenn man „nur HTML und CSS schreibt“.

Wenn jede neue Website im Internet perfektes, semantisches, zugängliches HTML und außergewöhnlich ausgeführtes, zugängliches CSS hat, das auf jedem Gerät und Browser funktioniert, dann können Sie mir sagen, dass diese Sprachen für sich genommen nicht wertvoll sind. Bis dahin müssen wir aufhören, CSS und HTML abzuwerten.

Mandy nutzt ihren Beitrag zur Friedensstiftung. Sie sagt uns: Ja, es gibt eine Kluft, aber nein, keine Seite ist wertvoller als die andere.

Eine weitere Quelle der Frustration ist, wenn die große Kluft zu schlechter Handwerkskunst führt. Dies sehe ich als Ursache für die meisten Sticheleien und Hänseleien, die über die Lager hinweg auftreten. Brad Frost verweist auf den Begriff „Full-Stack-Entwickler“ als etwas irreführend:

Meiner Erfahrung nach übersetzt sich „Full-Stack-Entwickler“ immer in „Programmierer, die Frontend-Code schreiben können, weil sie müssen und es ‚einfach‘ ist.“ Es ist nie umgekehrt. Der Begriff „Full-Stack-Entwickler“ impliziert, dass ein Entwickler gleichermaßen in Frontend-Code und Backend-Code versiert ist, aber ich habe in meiner persönlichen Erfahrung noch niemanden erlebt, der dieser Beschreibung wirklich entspricht.

Heydon Pickering sagt etwas Ähnliches. Wenn Sie auf diesem mythisch hohen Niveau eingestellt werden, ist etwas wie HTML unwahrscheinlich eine Stärke.

... eines der auffälligsten Probleme bei der Ernennung von Full-Stack-Entwicklern zu Gatekeepern aller Code-Dinge ist die erbärmliche Qualität der HTML-Ausgabe. Die meisten kommen aus der Informatik und die Dokumentenstruktur wird einfach nicht zusammen mit der Kontrollstruktur gelehrt. Es ist nicht ihre Kompetenz, aber wir machen es trotzdem zu ihrer Aufgabe.

So wie es vielleicht nicht meine Aufgabe ist, unsere Deployment-Pipeline zu konfigurieren und unsere Datenbankskalierung zu handhaben (ich würde eine schreckliche Arbeit leisten, wenn diese Aufgabe an mich fiele), ist es vielleicht am besten, die Aufgabe von HTML und CSS denen zu überlassen, die es gut können. Vielleicht ist es einfacher zu sagen: Auch wenn es eine Kluft gibt, entbindet uns das nicht davon, gute Arbeit zu leisten.

So wie Architektur und Entwickler-Ergonomie unser aller Aufgabe sind, sollten wir Performance, Barrierefreiheit und Benutzererfahrung in unserem Arbeitsbereich betrachten. Wenn wir einen bestimmten Teil davon nicht gut machen können, stellen Sie sicher, dass jemand anderes diesen Teil kann. Niemandem ist es erlaubt, schlechte Arbeit zu leisten.

Es sei erwähnt, dass es viele Entwickler gibt, deren Fähigkeiten die Kluft überbrücken und dies mit Anmut tun. Ich denke an unsere eigene Sarah Drasner, die als unglaubliche Animatorin, SVG-Expertin und Kernteammitglied von Vue bekannt ist und auch bei Microsoft an Azure arbeitet. Full-Stack, in der Tat.

Ich erweitere viele dieser Themen in einem weiteren kürzlich gehaltenen Konferenzvortrag bei WordCamp US.

Gibt es eine Lösung für diese Probleme von mangelhafter Handwerkskunst und Entwertung von Fähigkeiten? Sind die Probleme systemisch und tief verwurzelt, oder sind sie oberflächlich und ohne schwerwiegende Konsequenzen? Ist die Kluft real oder eine vorübergehende Spaltung? Beruhigt sich die Reibung oder heizt sie sich auf? Wird sich die Fähigkeiten des Frontend-Entwicklers mit den Jahren erweitern oder verengen? Lasst uns weiter darüber reden!

Auch wenn JavaScript immer heißer wird, erzählt mir Rachel Andrew, dass es früher schwierig war, einen CSS-Workshop zu füllen, aber heutzutage fragen Konferenzorganisatoren danach, da sie sehr gefragt sind. Eines ist sicher, wie der alte Heraklit zu sagen pflegte: Die einzige Konstante ist die Veränderung.

✌️