Auf dem Abstraktionsbaum nach oben
Ich erinnere mich an die ersten Zeilen Code, die ich je geschrieben habe. In meinem ersten Jahr an der Highschool kam ich zum ersten Mal mit dem Programmieren in Berührung. Mein Lehrer sagte uns, es sei an der Zeit, Schluss mit Pseudocode und Algorithmen zu machen und C++-Code zu schreiben, der tatsächlich ausgeführt wird. Das war ein seltsames Erfolgserlebnis. Mein Programm las zwei Zahlen aus der Konsole ein und gab ihre Summe wieder in der Konsole aus.
Als ich auf diese Konsole starrte, dachte ich überhaupt nicht daran, dass 29 andere Schüler dieselben Codezeilen geschrieben hatten. Warum sollte das ein Problem sein? Schließlich lernten wir doch, oder?
15 Jahre später. Der Kontext ist zwar ein anderer, das Ergebnis jedoch dasselbe. Du und ich und Zehntausende Entwickler auf der ganzen Welt schreiben dieselben Codezeilen. Vielleicht addieren wir keine zwei Zahlen. Aber wir richten definitiv Divs aus, rufen Daten von REST-Endpunkten ab und fragen eine Datenbank nach Benutzern ab. Lernen wir immer noch?
Der Aufstieg der Automatisierung
Wenn wir 2019 über menschliches Lernen sprechen, haben wir einen starken Konkurrenten. Einen, der nicht müde wird, immer wieder denselben Code zu schreiben und auszuführen. Einen, der großen Einfluss darauf haben kann, wie die Zukunft unserer Arbeit aussehen wird.
Heutzutage wird viel über Automatisierung und darüber gesprochen, dass Maschinen Menschen ersetzen. Wie bereitet sich also unser Arbeitsmarkt darauf vor?
Automatisierung ist in der Softwareentwicklung bereits etabliert. Gängige Programmiersprachen und Werkzeuge verfügen über zahlreiche integrierte Automatisierungsfunktionen. Denken Sie an Speicherzuweisung und Garbage Collection. Denken Sie an Typprüfung und Programmkompilierung.
Auch die Softwareprozesse selbst profitieren von der Automatisierung. Wir führen funktionale und nichtfunktionale Tests für unsere Anwendungen und Dienste durch. Automatische Build- und Deployment-Pipelines stellen Server bereit und richten die Umgebungen für uns ein.
Wenn wir jedoch ans Schreiben von Code denken, betrachten wir es noch immer als menschliche Aufgabe. Im gesamten Technologie-Stack verlassen wir uns auf spezialisierte Ingenieurinnen und Ingenieure, die Backend-Systeme, Datenbanken, Webanwendungen, mobile Anwendungen und mehr entwerfen, konzipieren und entwickeln.
Vielleicht ist es nicht vorherbestimmt, dass Arbeitsplätze in der Softwareentwicklung automatisiert werden. Vielleicht ist Automatisierung hier das falsche Wort. Wie wäre es mit Abstraktion?
Automatisierung vs. Abstraktion
Denken Sie an Low-Level- und High-Level-Programmierung. Wie viel Flexibilität haben Sie bei der Speicherzuweisung oder beim Ansprechen von Registern des Prozessors? Und wie viel Leistung bietet Ihnen ein gut entwickeltes Framework?
Wenn Sie eine höhere Abstraktionsebene wählen, überlassen Sie anderen die Entscheidungen auf niedrigerer Ebene. So können Sie eine vollständige Softwarelösung deutlich schneller bereitstellen. Zumindest lautet so die Theorie.
Abstraktion lässt sich als Entscheidungsbaum betrachten. Cheng Lou hat einen großartigen Vortrag über die Kompromisse beim Auf- und Absteigen in diesem Abstraktionsbaum gehalten.
Letztlich geht es bei Abstraktion darum, wiederkehrende Aufgaben zu automatisieren und mit weniger Aufwand mehr ausdrücken zu können. Es geht darum, Code zu verwenden, den jemand anderes geschrieben hat, ohne dieselbe Arbeit doppelt zu erledigen.
Automatisierung ist also da, aber nicht, um uns zu ersetzen, sondern um uns höhere Abstraktionsebenen zu erschließen. Dadurch wird sich der Arbeitsmarkt für Softwareentwickler leicht verändern. Das wird den Bedarf an Softwareentwicklung jedoch keineswegs beenden. Es bedeutet, dass immer mehr von uns weniger Zeit mit der Programmierung von Problemen auf niedriger Ebene verbringen müssen, die andere bereits gelöst haben. Und hoffentlich werden wir mehr Zeit damit verbringen, Probleme anzugehen, für die es noch keine Lösung gibt.
Hinkt die Frontend-Entwicklung hinterher?
Werfen wir einen genaueren Blick auf Web und Mobile: Die Anwendungsentwicklung macht in diese Richtung große Fortschritte. In den letzten Jahren gab es beeindruckende Entwicklungen bei Tools, Frameworks und Diensten. Alle versuchen, bessere und leistungsfähigere Abstraktionen bereitzustellen.
Backend as a Service, GraphQL und Tools für Designsysteme sind mittlerweile weit verbreitet. Doch bei der Entwicklung von Benutzeroberflächen für Mobilgeräte und das Web sind wir noch nicht so weit. Wir arbeiten mit den grundlegenden Bausteinen des Webs: HTML, CSS und JavaScript. Natürlich gibt es TypeScript, React, CSS-in-JS und Dutzende weitere Tools, die die Entwicklererfahrung verbessern. Doch unsere Aufgaben haben sich nicht grundlegend verändert. Wir schreiben immer noch dieselben Komponenten und Interaktionen wie Tausende Entwickler auf der ganzen Welt. Wir lernen weiterhin dazu.
Die Lücke mit Automatisierung und Codegenerierung schließen
Im Technologie-Stack gibt es eine Lücke. Die Frontend-Entwicklung kann sich auf eine höhere Abstraktionsebene bewegen. Der Code, den wir derzeit schreiben, lässt sich automatisieren oder generieren. Wir müssen nur neue Wege finden, die gesamte Komplexität der Benutzeroberfläche abzubilden. Wir können mit Ereignissystemen, Zustandsautomaten und bidirektionalen Datenflüssen beginnen. Das wird nicht einfach, aber es wird Spaß machen!
Im vergangenen November bin ich mit einem klaren Ziel zu TeleportHQ gekommen. Ich möchte diese Lücke schließen und auf der nächsten Abstraktionsebene der Frontend-Entwicklung arbeiten. Ich glaube an die neue Generation von Tools, Mustern und Praktiken, die sich herausbildet, um Implementierungen auf niedriger Ebene für redundante UI-Aufgaben zu ersetzen.
Wird diese Welle der Automatisierung und Abstraktion es uns ermöglichen, uns auf die entscheidenden und anspruchsvollen Aufgaben der Frontend-Entwicklung zu konzentrieren? Und wird sie die lästigen, sich wiederholenden Aufgaben beseitigen? Ich bin gespannt darauf, es herauszufinden! Schließt euch unserer Mission an, die besten Codegeneratoren für Web- und Mobilanwendungen zu entwickeln – als Open-Source-Bibliothek.
Kommentare
Noch keine Kommentare. Teilen Sie als Erste Ihre Gedanken mit.