International PHP Conference 2018 | Munich

Logo Internationale PHP Konferenz 2018

Wie schreibt man ein Blogbeitrag zum Besuch einer Konferenz? Denn sind wir mal ehrlich, am Ende bestehen diese doch aus dem (grob gesehen) immer gleichen Ablauf ›presented in pseudocode‹:

goto ConferenceCity  
goto Hotel  
checkIn()

while Conference:  
    checkProgram()
    visitLecture()
    eatAndDrink(input.coffee())

if workshopDay === true:  
    enterCourse()

goto HomeTown  
goto Work  
tellEveryoneAboutConference()  

Und wer will schon zum X-ten mal eine reine Auflistung von ›interessanten‹ Vorträgen hören?
Ich hoffe, dass ich es schaffe hier nicht komplett trocken zu schreiben und meine persönlichen Highlights gut herausgearbeitet bekomme (inklusive der allseits beliebten, schlecht geschossenen Smartphone-Bilder).
Und keine Angst, ich sitze beim Schreiben nicht mit Skinny-Jeans und meiner Schreibmaschine in einem Kaffeehaus und sinniere über Obst-Produkte ;).

Eindrücke aus München Part 01


tl;dr

Wir alle sollten nur noch PWAs bauen, welche Event-Sourcing mittels CQRS implementieren und eine gesicherte Anmeldung via WebAuthn ermöglichen. Und wehe es wurde nicht mittels DDD mit eurem Kunden kommuniziert und ihr baut nicht eure Applikation in agilen autonomen Teams.


Na? Alles klar? Und wenn Ja, direkt schon am suchen der Kommentar-Funktion, um gegen zu feuern? Wie so oft wurde auch bei dieser Konferenz nicht an Buzzwords gespart. Das Gute daran ist, dass man quasi aus dem Programm direkt die aktuellen Trends und Entwicklungen ableiten kann.
Und es ist natürlich dem aufmerksamen Leser klar, dass jede technische und architekturelle Entscheidung abhängig von den eigenen Anforderungen und Bedürfnissen ist.

Eine Bahnfahrt, die ist lustig …

… oder doch nicht? Die ›geplante‹ Anfahrt mit der Bahn geriet mit Blick auf die Nachrichtenlagen des Tages deutlich spannender als geplant. Ein ausgebrannter ICE sowie die Geiselnahme am Kölner Bahnhof sorgten für ein Bahnchaos und ein Fängt-ja-gut-an-Gefühl. Unserer Firmen-Fee Yasemin und einem heißen Telefon sei dank, konnten wir aber umbuchen und kamen mit nur 2 Stunden Zugverspätung davon bzw. ans Ziel. Hier also auch noch einmal Dankeschön an Yasemin.
Nach einer ansonsten doch guten Anreise nun aber mal zu meinen 3,5+1 Highlights der Konferenz:

WebAuthn: Passwords are legacy!

Im Vortrag von Arne Blankerts wurde die, wie ich finde, spannende (asynchrone public-key) Anmelde-Technologie Web Authentication API - kurz WebAuthn - für Webseiten vorgestellt. Es wird via spezieller Applikationen bzw. Token-Geräte (z. B. einem USB-Stick) eine passwortlose Anmeldung ermöglicht. Diese sind damit auch einfach genug, um von eher technikunaffinen Menschen genutzt zu werden bzw. diese beseitigen Probleme, die das Passwort-Management typischerweise mit sich bringt. Das Nutzen von je nur einem Passwort pro Service oder die Gefahr des Phishings sind nur zwei Punkte, die man hier erwähnen kann.

Die Anmeldetechnologie ist inzwischen in den wichtigsten Browsern integriert und die ersten Services wie DropBox unterstützen WebAuthn nun auch. Eine weitere Verbreitung von WebAuthn und dessen Etablierung als Standard scheinen damit wahrscheinlich. Ich jedenfalls werde mich noch weiter mit der Technologie beschäftigen und deren Entwicklung weiter im Auge behalten (… mein USB-Stick sollte sich schon auf den Postweg zu mir befinden).

The GDPR and You

Man möchte meinen, als Entwickler hat man nicht unbedingt Lust, sich in einen Vortrag über die allseits beliebte DSGVO zu setzen. Ich habe es trotzdem getan. Zum einen hatte mich schon lange interessiert, was die DSGVO für mich als Entwickler bedeutet. Zum anderen weiß ich, dass Stefan Priebsch ein guter Redner ist, und ich entsprechend nicht wirklich was zu verlieren hatte.
Und meine Erwartungen wurden sogar noch übertroffen. Es wurde uns berichtet, was wir als Entwickler beachten müssen. Aber dies bedeutet auch, was wir bei einer Umsetzung fordern können/müssen von unserem Arbeitgeber/Kunden, denn wir sind sozusagen von Gesetzes wegen dazu verpflichtet.
Die Gewichtung ist entsprechend eine ganz andere. Eine Zusammenfassung zu den Pflichten (vgl. Folie 38 von Stefans Vortrag):

We are required, by law,

  • to be proactive
  • to focus on security
  • to use cryptography
  • to monitor our application
  • to review our audit logs

Anhand von Beispielen zeigte Priebsch, wie man mit einigen dieser Probleme umgehen kann. So z. B. durch Trennung der Events (in einem Event-Storage) von den personalisierten Daten, um jederzeit eine Anonymisierung dieser vornehmen zu können (Stichwort Recht auf Löschung).

Eindrücke aus München Part 02

Event-driven development and architecture

Im Vortrag »Event-driven development and architecture« habe ich nichts komplett Neues gehört.
Domain-Driven Design ist schon länger ein gern gewähltes Thema auf Konferenzen – zurecht. Und irgendwo in meinem Bücherregal steht auch das Referenzwerk »Domain-Driven Design: Tackling Complexity in the Heart of Software« von Eric J. Evans und wartet darauf, von mir mal zu Ende gelesen zu werden … hüstlGolo Roden schaffte es aber dieses, sowie die auch nicht gerade unkomplexen Themen Event-Sourcing und Command–query separation kompakt und verständlich zu erklären. Hierbei nutzte er nichts weiter als seinen Editor, um Beispiele on the fly zu generieren und zu erläutern. Ein schönes (aus dem Vortrag geklautes) Schaubild über die Verbindung könnt ihr hier entnehmen:

                                     Event Store
            (Commands)              /
            Write API -> Write Database
          /                     |
    Client                      | (Events)
          \                     ⌄
            Read API -> Read Database
            (Query)                 \
                                     Materialized Views

Honorable mentions

Wie schon oben geschrieben, wäre es wahnwitzig alle Vorträge zu bewerten, da einem je nach eigenem Wissensstand und Interesse, der eine Vortrag näher erscheint.
Ich will hier aber zumindest noch Sebastian Feldman erwähnen, der in seinem Vortrag »Hello, My Name is ›if‹« zeigte, wie man die Komplexität von Code in den Griff bekommen kann. Stichworte sind hier: Cyclomatic Complexity und Unit Tests (wer hätte es erwartet).
Auch finde ich es immer wieder spannend zu hören, wie andere (erfolgreiche) Unternehmen arbeiten. Tina Dreimann gab einen Einblick in die Aufstellung der Kartenmacherei und den Prozess zu autonomen Teams. Das Lieblingszitat aus dem Vortrag kam vom CTO und geht meiner Erinnerung nach so:

If you want to motivate someone, sometimes you have to step out of the way


War da nicht ein Workshop im Ablauf?

»How to Stop Sucking and Create Good Architectures Instead« war der wenig konkrete Titel des Workshops unserer Wahl (hier könnten die Konferenz-Veranstalter gerne ein bisschen deklarativer werden). Da ich aber schon länger interessiert bin, mich in dem Themenkomplex weiterzubilden, haben ich und mein Kollege mit dem selben Vornamen (Timo Webler) es einfach mal darauf angelegt. Ein Vortrag unseres Workshop-Leiters Frank Sons in den Vortagen zum Thema »Effective Code Reviews« machte uns jedenfalls schon einmal Hoffnungen.

Am Ende war es ein gutes Stück un-technischer, wie ich es mir erhofft hatte, was nicht heißt, dass es nicht gut war. Wir haben über den Tag verteilt versucht, zwei Architektur-Katas in kleinen Teams zu lösen, diese anschließend vorgestellt und besprochen. Katas sind kleine abgeschlossene Übungen und eher bei Programmieraufgaben bekannt.

Es ist doch bezeichnend, wie komplex es ist, aus einem Haufen hingeworfener Anforderungen eine Architektur zu entwickeln. Hierbei darf die Kommunikation mit dem Kunden (in unserem Fall dem Workshop-Leiter) nicht unbeachtet bleiben. Thema waren z. B. die Art der Visualisierung der Architektur und wie/was man fragen sollte. Der Laptop blieb durchgängig geschlossen und Whiteboards waren das Mittel der Wahl.

Ich persönlich hätte mich ein bisschen mehr über den zweiten Teil gefreut, der bei Frank Sons normalerweise am zweiten Tag seines Workshops stattfindet, in München aber mit Blick auf die Zeitbegrenzung auf einen Tag ausfiel.

Eindrücke aus München Part 03

Die drei ??? …

… und die immerwährende Frage, ob sich ein Konferenzbesuch gelohnt hat (Folge 202).

Die kurze Antwort ist ein lautes JA!
Natürlich hat man je nach Ort und Konferenz auch mit ein paar kleinen Unwegsamkeiten zu kämpfen. Zu nennen wären hier ...

  • die zu langen Pausen zwischen den Vorträgen (was wohl in der Sponsoren-Expo begründet lag)
  • die Art der Bestuhlung (hintereinander ist nicht die intelligenteste Art wenn man möchte dass die Teilnehmer etwas sehen sollen)
  • die etwas dünnen Wände, bei denen man die Redner in den Nachbar-Sälen fast so gut verstanden hat, wie den eigenen.

Aber das ist alles Jammern auf sehr hohem Niveau. Die Vorträge waren allesamt sehr gut. Der sogenannte Blick über den Tellerrand, der bei der doch meist recht gleich ablaufenden Tagesarbeit leider oft zu kurz kommt, brachte neue Ideen und Eindrücke. Ich kam mit bestimmt 3–5 Themen im Kopf zurück, die ich auch in meinem Arbeitsumfeld weiter verfolgen möchte oder die mir helfen, mich selber weiter zu entwickeln (Stichwort: Mob-Reviews die ich vorher noch nicht kannte).
Ich kann nur jedem empfehlen, sich mal auf eine Konferenz zu begeben. Jedoch sollte auch jedem klar sein, dass diese immer nur ein Einstieg in Themengebiete sein kann und man die Weisheiten nicht auf einem Silbertablett serviert bekommt.

So … das waren meine zwei Cents zur IPC18 in München. Es wurde doch am Ende ein gutes bisschen mehr Text als ich gedacht habe. Solltet ihr wirklich bis hier durchgehalten haben, habt ihr euch ein digitales Cookie verdient (bereitgestellt automatisiert durch den Blog ;) ). Wenn ihr gerne eure Eindrücke von Konferenzen teilen möchtet, steht euch unten die Kommentarfunktion zur Verfügung. Ich würde mich freuen.

von Timo Michael

Timo Michael ist Entwickler bei der dkd mit einem starken Hang zum Backend. // Timo Michael is a developer at the dkd with a strong focus on the back-end.