Front-End Development Ist Development

Avatar of Geoff Graham
Geoff Graham am

DigitalOcean bietet Cloud-Produkte für jede Phase Ihrer Reise. Starten Sie mit 200 $ kostenlosem Guthaben!

Es gibt eine gewisse Stimmung, dass Front-End-Entwicklung keine echte Entwicklung ist. Das ist eine prahlerische, trollige Haltung. Dennoch ist es schön, sich manchmal auf die Brust zu trommeln. Versuchen wir zu verdeutlichen, warum Front-End-Entwicklung genauso schwierig und des Titels würdig ist wie jeder andere Teilbereich.

Dies ist eine Fortsetzung meines Beitrags von letzter Woche über die Schwierigkeit, die erwarteten Fähigkeiten eines Front-End-Entwicklers genau zu definieren und wie unterschiedlich wir alle sein können. Dieser Beitrag fand bei einem guten Teil der Leser Anklang, und die darauf folgenden Kommentare waren voller interessanter Geschichten und Erfahrungen darüber, was Front-End-Entwicklung sowohl im technischen als auch im persönlichen Sinne bedeutet.

Die Praxis der Front-End-Entwicklung ähnelt dem Bassspielen: Es ist leicht zu lernen, aber schwer zu meistern. Es steckt viel mehr dahinter als nur HTML und CSS (die für sich genommen schon schwierig genug sind).

Chris stellte auf Twitter eine Frage in Form einer Lückentextaufgabe:

Und während die Mehrheit der Antworten sicherlich unterhaltsam und zum Brüllen komisch war, gab es auch einige Weisheiten darin. Werfen wir einen Blick auf die gemeinsamen Themen, die die Front-End-Entwicklung zu... Entwicklung machen!

Wir müssen uns mit Browserkompatibilität auseinandersetzen.

Dies war mit Abstand die am häufigsten genannte Beschwerde in der Gruppe. Während Internet Explorer immer noch das Ziel der meisten Witze ist, hat jeder Browser seine eigenen Eigenheiten, die oft spezielle Entwicklungstechniken erfordern, um sie zu überwinden.

Es wird von uns erwartet, dass wir wissen, wie man Websites erstellt, die browserübergreifend funktionieren. Wir sollten wissen, welche Browser was unterstützen und wie man browserspezifische Probleme debuggt und überwindet. Wir sollten wissen, wie man verschiedene Browser emuliert oder anderweitig testet.

Wir sollten Werkzeuge kennen, die uns bei browserübergreifenden Problemen helfen, entweder automatisch oder die es uns ermöglichen, Code zu schreiben, um Situationen mit Unterstützung und Nichtunterstützung von Funktionen zu bewältigen. Wir sollten wissen, wie man Fallbacks macht. Wir sollten über progressive Verbesserung und graceful degradation Bescheid wissen.

Browserkompatibilität ist eine äußerst komplexe Entwicklungsaufgabe.

Oh je, all diese Geräte!

Neben der Bewältigung von Browser-Inkonsistenzen sind Front-End-Entwickler auch dafür verantwortlich, für so viele Bildschirmgrößen, Bildschirmausrichtungen, Pixeldichten und Eingabetypen wie möglich zu entwickeln.

Die Last der riesigen Landschaft unterschiedlicher Bildschirme, Browser und Fähigkeiten liegt am schwersten auf den Front-End-Entwicklern.

Frameworks, Bibliotheken, Preprocessing, Abhängigkeiten, Plugins...

Früher reichte es aus, ein Stylesheet und vielleicht eine JavaScript-Datei in HTML zu verlinken, um mit der Gestaltung und dem Bau einer Website zu beginnen. Tatsächlich ist das immer noch die Basis.

Die heutige Entwicklung fühlt sich ganz anders an. Die Toolchain ist viel dicker. Wir treffen Entscheidungen über Build-Prozesse, welche Bibliotheken wir verwenden, in welchen Sprachen wir schreiben, wie stark wir in zukünftige Syntaxen investieren wollen, wie sehr wir uns auf Frameworks verlassen wollen, welche Drittanbieter-Tools sinnvoll und sicher zu verwenden sind.

Es ist nicht nur ermüdend, über die Entscheidungen nachzudenken, sondern es wird auch immer schwieriger zu wissen, welche die besten Entscheidungen sind und ob diese Entscheidungen langfristig klug sind.

Es gibt genauso viele, wenn nicht sogar mehr, Entscheidungen auf der Front-End-Ebene der Entwicklung als überall sonst. Ganz zu schweigen davon, dass sich die Landschaft extrem schnell bewegt.

Wir sind die Brücke zwischen visuellen Designern, Back-End-Entwicklern und anderen Disziplinen.

Viele der heutigen Frameworks und CMS's überschneiden sich mit vielen verschiedenen Disziplinen. Front-End-Entwickler stehen mitten drin. Wir sind letztendlich für das Design verantwortlich – wie die Seite aussieht. Wir helfen Content-Erstellern, sicherzustellen, dass sie das haben, was sie brauchen, und uns geben, was wir brauchen. Wir arbeiten in Vorlagen, extrahieren die Daten, die wir brauchen, in den Formaten, die wir brauchen. Wir verarbeiten Benutzereingaben und stellen sicher, dass sie für Back-End-Anliegen weitergeleitet werden.

Nicht nur sitzen wir am Schnittpunkt vieler Disziplinen, es wird auch erwartet, dass wir genügend Back-End-Sprachen kennen, um nützlich zu sein. Sie wären ein ziemlich schlechter WordPress-Entwickler, wenn Sie kein PHP könnten. Sie wären auf einem Rails-Projekt nicht sehr nützlich, wenn Sie keine Ruby- oder Rails-Konventionen kennen würden. Je mehr Sie wissen, desto agiler und eigenständiger können Sie für Ihr Team sein.

Jeder und sein Zahnarzt denkt, er kann das machen.

Die Eintrittsbarriere für die Front-End-Entwicklung ist ziemlich niedrig. Jeder hat von HTML gehört. Sie "wissen genug, um gefährlich zu sein", wie man so sagt. Da diese Barriere niedrig ist und es so einfach ist, sich damit zu beschäftigen, ist es verständlich, dass Leute annehmen, es gäbe nicht viel zu wissen und dass Front-End-Entwicklung nicht besonders schwierig sei.

Dinge benennen. Und wir müssen viele Dinge benennen.

Ich stelle mir vor, Sie haben das Sprichwort gehört, dass das Benennen von Dingen eines der schwierigsten Probleme in der Informatik ist. Wir Front-End-Entwickler benennen ständig Dinge. Klassennamen und IDs, Datenattribute, Dateinamen, die Kommunikation von Mustern mit Ihrem Team. Es ist endlos. Es fühlt sich an, als gäbe es an einem durchschnittlichen Tag Dutzende von Namensentscheidungen.

Ganz zu schweigen davon, dass die Aufgabe der Texterstellung oft auf uns fällt, was nicht ganz *Benennung* ist, aber in einer ähnlichen Schwierigkeitsdimension liegt.

"Der richtige Weg" und "der falsche Weg" sind nicht so klar definiert wie bei der Back-End-Entwicklung.

In der Back-End-Entwicklung, wenn das, was Sie erwarten, passiert, haben Sie Erfolg. Sicherlich gibt es verschiedene Wege, um dorthin zu gelangen, einige besser als andere. Aber in der Front-End-Entwicklung scheinen die Wege zur Erledigung einer Aufgabe endlos zu sein. Selbst wenn Sie scheinbar Erfolg hatten, kann es sich so anfühlen, als wäre es nur eine Frage der Zeit, bis ein Fehler in Ihrer Vorgehensweise gefunden wird.

CSS ist sehr schwer zu testen.

Back-End-Sprachen (und sogar JavaScript) können Unit-Tests und Integrationstests verwenden, um sicherzustellen, dass der Code wie erwartet funktioniert. CSS hat eine solche Luxus nicht. Es gibt sicherlich Leute, die es versuchen, und es gibt einige Informationen und Werkzeuge. Aber nichts davon ist besonders gut und es gibt nur sehr wenige Erfolgsgeschichten.

Fehler können subtil, verwirrend und unerwartet sein. Schlimmer noch, eine scheinbar kleine Änderung kann unerwartete negative Auswirkungen haben, die man erst bemerkt, wenn es zu spät ist.

Es gibt Linting-Tools, die ein wenig helfen. Es gibt einige Tools zur Durchsetzung von Styleguides, aber sie helfen nicht wirklich bei der Durchsetzung wichtigerer Dinge wie der Einhaltung von Namenskonventionen.

Front-End-Entwickler müssen ein sehr starkes Verständnis der gesamten Website in ihrem Kopf haben, um am effektivsten und effizientesten zu sein.

JavaScript ist genauso komplex wie jede andere Programmiersprache. Es ist seltsam und schwer.

JavaScript ist Front-End-Entwicklung. JavaScript ist Programmierung. Programmierung ist Teil der Softwareentwicklung. Softwareentwicklung ist schwer.

Performance liegt zu 80% bei uns.

Die Faustregel besagt, dass 20 % des Wartens auf das Laden einer Website auf Back-End-Belange zurückzuführen sind. Sobald das HTML-Dokument angekommen ist, ist der Rest der Ladezeit die Verantwortung der Front-End-Entwickler. Welche Ressourcen geladen werden, wie viele Ressourcen geladen werden, wie optimiert sie sind, in welcher Weise sie geladen werden und wie sich das anfühlt usw.

Hier findet Barrierefreiheit statt.

Das Erstellen von optisch beeindruckenden Websites ist eine Sache, und deren Barrierefreiheit eine andere. Designer legen großen Wert darauf, wie Benutzer mit einer Website interagieren, und das ist nicht immer eine visuelle Interaktion. Das Design und die Entwicklung für Behinderte ist eine eigene Disziplin, aber am engsten mit der Front-End-Entwicklung verbunden. Barrierefreiheit hat eigene Spezifikationen, die leider nicht typischerweise zusammen mit dem traditionellen Front-End-Entwicklungstraining gelehrt werden.

Es ist schwer, Leute dafür einzustellen.

Front-End-Entwickler sind typischerweise die am schwersten zu besetzenden Stellen.

Und, natürlich...

Zusammenfassend

Was denkst du also? Ist Front-End-Entwicklung "echte" Entwicklung? Ich würde sagen ja und glaube, dass das hier vorgelegte Feedback – insbesondere von anderen – ein solider Beweis dafür ist. Gibt es noch mehr Dinge, die es schwierig machen? SEO? Ist das eine Konversation, die es wert ist, geführt zu werden?