Mit einigen Kollegen der Saxonia Systems AG (seit 03/2020 ZEISS Digital Innovation) war ich dieses Jahr auf der W-JAX. Hier möchte ich euch nun meine Eindrücke weitergeben. Da es in meinen Augen nicht sinnvoll ist, für jede einzelne besuchte Veranstaltung eine “Rezension” zu schreiben, habe ich beschlossen mich auf die Highlights zu konzentrieren.
Trends
Das letzte Mal war ich vor 3 Jahren auf der W-JAX. Seitdem hat sich einiges verändert, auch in Bezug auf solch eine Konferenz. Um es erst einmal kurz stichpunktartig zusammenzufassen, habe ich folgendes beobachtet:
- deutliche Abnahme von Java EE Themen
- deutliche Zunahme von Web Themen (AngularJS, React)
- extreme Zunahme von Themen rund um Microservices
- Einbeziehen von Themen wie Design und Usability in vielen Vorträgen
Design und Usability
Es ist zwar der letzte Punkt auf der obigen Liste, aber er hat mich überrascht und gleichzeitig gefreut. Allgemein hatte ich den Eindruck das Themen wie diese mehr und mehr auch in das Blickfeld von Entwicklern rücken. Das finde ich persönlich gut, denn dann kommen wir potenziell davon weg, das Design und Usability nur als Nebenkriegschauplatz betrachtet werden. Bis auf wenige Ausnahmen gab es dafür aber noch keine dedizierte Sessions.
Eine dieser positiven Ausnahmen möchte ich dabei hervorheben. Robert Glaser und Roman Stranghöner der innoQ haben in ihrem Vortrag “Die Unbenutzbarkeit von Enterprise-Webanwendungen – Naturgesetz oder Vorsatz?” genau dieses Thema adressiert. Auch wenn ich schon vor dem Vortrag Kontakt mit Design und Usability hatte, konnte ich aus den Erfahrungsberichten und Empfehlungen einiges für mich mitnehmen.
Insbesondere die trügerische bzw. simple Frage und die zugehörige Antwort haben mich nachdenklich gestimmt:
“Was ist für den Benutzer ‘die Anwendung’?” – “Für den Benutzer ist die Oberfläche die Anwendung!”
Kein Benutzer wird dir je sagen: “Oh, das ist aber eine tolle Microservices Architektur, die du da jetzt hast” oder “Klasse, dass du jetzt MongoDB als Datenbank benutzt”. Wenn du dem Nutzer allerdings ersparst, dass er sich zur meistgenutzten Funktion durch drei Navigationsebenen hangeln muss, wird er das sehr wohl bemerken und dankbar sein!
Erschreckend fand ich im Nachhinein den Kontrast, wohin bei der Softwareentwicklung meist der Aufwand und die Energie der Entwickler fließt. Sollten wir nicht mehr danach streben, dass unsere Anwendungen gut benutzbar sind?
Web
Im Rahmen der Web-Technologien zeichneten sich klare Tendenzen ab. AngularJS war das am meisten verbreitete Web-Konferenzthema, dicht gefolgt von React. Auch Vorträge zum neuen JavaScript Standard ES6 gab es einige. Da ich persönlich in einem AngularJS Projekt tätig bin, kam mir die Fülle an Themen sehr gelegen. Besonders gut gefallen hat mir hier der Vortrag von Manfred Steyer zur Migration von Angular 1.x zu Angular 2.0. Er war für mich mit Abstand der beste Präsentator der Konferenz, dank seiner ruhigen, flüssigen und fundierten Darstellung der Sachverhalte und Optionen. Selten habe ich auf Konferenzen oder anderswo einen so souveränen Präsentationsstil gesehen.
Um auch über den Tellerrand hinaus zu schauen habe ich mir einige Vorträge zum Thema React angeschaut. Hier habe ich den Eindruck, dass es sich um ein Hype-Thema handelt. Hype bedeutet für mich erst einmal nur, dass es höher gehandelt wird, als es tatsächlich Wert hat, nicht aber, dass ich es für wertlos halte! Ich bin persönlich noch nicht überzeugt davon, dass React einen tatsächlichen deutlichen Mehrwert hat. Ich hatte große Fragezeichen über meinen Kopf, als ich sah, dass Präsentation und Logik wieder explizit in den React-Komponenten vermischt werden. Ich glaube hier werde ich tatsächlich erst einmal an einem Beispiel mit React entwickeln müssen, um für mich beurteilen zu können, ob ich die Richtung als Fortschritt sehe.
Neugierig gemacht hat mich im Gegenzug die Flux Architekturidee – die auch unabhängig von React Einsatz finden kann. Ich habe Flux so verstanden, dass es letztendlich eine Web-Umsetzung des klassischen Gedanken bei der Desktop-Client-Entwicklung ist (siehe .NET Events im Rahmen der UI-Entwicklung).
Ich war sehr dankbar für die Vorträge rund um ES6. Das ist seit Mitte dieses Jahres der neue JavaScript Standard. Ohne die Konferenz hätte es vermutlich viel länger gedauert, bis ich mitbekommen hätte, was es dort für angenehme Neuerungen gibt. Klassen, Modul-Scoping und fat-arrow-functions sind hierbei die drei wichtigsten Themen, die ich neben Dutzenden anderen kennengelernt habe.
Microservices
Zum Thema Microservices habe ich bis jetzt ein gespaltenes Verhältnis. Zu allererst bin ich der Meinung, dass Microservices der Schlüssel zum Erfolg sind, wenn man die Anforderung hat eine reaktive Geschäftsanwendung zu betreiben. Mit reaktiv ist hier gemeint, dass es den reaktiven Werten gerecht wird: antwortbereit, widerstandsfähig, elastisch und nachrichtenorientiert. Was das Ziel dieser Werte genau ist, kann man übrigens auch detailliert im Reaktiven Manifest nachlesen: http://www.reactivemanifesto.org/de
Der entscheidende Punkt im obigen Abschnitt ist: “wenn man die Anforderung hat”. Hinzu kommt in meinen Augen auch der Aufwand so eine Architektur aufzubauen, zu betreiben und zu warten. Ich denke auf lange Sicht werden sich reaktive Anwendungen durchsetzen. Bis dahin ist es aber noch ein langer Weg. Das mache ich hauptsächlich an dem Kenntnisstand der Community fest. Ein Indiz für den aktuellen Stand gab mir eine simple Umfrage eines Präsentators am Anfang einer Session: “Wer von euch hat schon mal mit Docker rumgespielt” – Fast alle melden sich; “Wer von euch benutzt Docker in der Entwicklungsumgebung” – Etwa 50% melden sich; “Wer von euch benutzt Docker in Produktion” – 2 von etwa 150 Teilnehmer im Saal haben ihre Hände oben.
Themen wie reaktive Anwendungen umzusetzen erfordert einiges an Wissen, sei es über Architekturkonzepte, Microservices an sich, die Orchestrierung oder auch die Verwaltung oder das Monitoring von Microservice-basierten Systemen. Es reicht eben für den Produktiveinsatz nicht nur Docker zu kennen, sondern man sollte auch seinen Zoo von Microservices verwalten und überwachen können – beispielsweise Stichwort google kubernetes.
Genau an dieser Stelle kommt dann die Kosten/Nutzen-Frage, denn das nötige Wissen aufzubauen kostet Zeit und damit Geld. Ich denke aktuell sind nur wenige bereit für die genannten Vorteile im Umfeld nichtfunktionaler Anforderungen so viel Zeit und Geld in die Hand zu nehmen um auch den Wissensaufbau zu finanzieren. Die Situation wird sich aber vermutlich schleichend verbessern, je mehr Wissen über die zu Grunde liegenden Technologien in der Community vorhanden ist. Wenn es für Entwickler zum “Allgemeinwissen” gehört Docker-Container zu erstellen, diese zu Orchestrieren und sie die Programmiertechniken und Konzepte wie beispielsweise Circuit-Breaker sicher beherrschen, dann ist auch der Schritt zu einer reaktiven Anwendung kleiner.
Fazit
Ich persönlich empfand die Konferenz als Gelungen, denn der Hauptwert solch einer Veranstaltung ist für mich immer, dass ich auf Dinge aufmerksam werde, von denen ich vorher noch nie gehört habe und auf die ich sonst auch nicht gestoßen wäre, da ich nicht wusste, dass sie existieren. Genau dieses Ziel hat die W-JAX auch dieses Jahr für mich wieder erreicht.