SymfonyLive Cologne 2016 – Ein Tag voller Talks!

19. Mai 2016

Von Michael Thomer – Am 29. April 2016 fand in den Veranstaltungsräumen von KOMED im Kölner Media Park die SymfonyLive 2016 statt. Es war ein spannender und interessanter Tag für Symfony- und PHP-begeisterte Entwickler. Dieser Bericht gibt eine kurze Übersicht über die Eindrücke und die verschiedenen Themen der Konferenz.

WieWP_20160429_18_33_22_Pro wir gleich zu Beginn erfahren haben, war diese Symfony Live die frühste, die je stattgefunden haben soll. Der Grund dafür war schnell gefunden: auf dem Programmplan standen zehn Talks zu verschiedenen Themen, die in einem Track abgehalten wurden. Pünktlich um 8:30 Uhr startete der Tag voller Talks mit der Keynote im nahezu vollständig gefüllten Vortragsraum.

Unter der Überschrift „Superhelden im Porzellanladen“ – die so einiges vermuten ließe – ging es um die Entwickler (= Superhelden) in Unternehmen (= Porzellanladen) und deren Vorstellungen und Erwartungen an einen Job und was einen guten Job ausmacht. Neben den „Standard-Fragen“ in einem Bewerbungsgespräch sind auch Themen wie Rentabilität, Geschäftsmodell, Unternehmensphase, Wettbewerbssituation und Personalstruktur des Unternehmens interessant, um mehr Informationen über das beworbene Unternehmen herauszufinden und sich nicht „im falschen Film wiederzufinden“, wie der Referent Christian Schäfer meint.

Weiter ging es mit dem Vortrag zum Thema „Symfony Forms: Dos und Don’ts“ von Bernhard Schussek. Nach einer kurzen Übersicht zu den Neuerungen der Komponente seit Symfony 2.7 wurden Best Practices und viele kleine Praxisbeispiele aufgezeigt. Besonders interessant waren aus meiner Sicht die Validation Groups für eine partielle Validierung einer über mehrere Forms und Requests übergreifende Entität. Außerdem wurde unbedingt empfohlen Value Objects und Data Transformers zu verwenden. BTW: Symfony bietet mit dem „Form Debugger“ ein tolles Tool zur Analyse von Formularen.

Wie Data-Driven-Development mit echt aussehenden Testdaten erfolgreich aussehen kann, wurde im nächsten Vortrag mit dem Titel „Maßgeschneiderte Testdaten mit Faker und Alice“ von Philipp Rieber verdeutlicht. Mit den gezeigten Tools lassen sich verschiedenste Kombinationen von Testdaten generieren, um so möglichst die Realsituation von Datenbeständen korrekt abbilden zu können. Die Tools lassen sich einfach und schnell in jedes Symfony-Projekt einbinden und sind flexibel erweiterbar.

Nicht nur der Einsatz neuer Tools kann ein Projekt oder ein Entwicklerleben bereichern, sondern auch eine neue Programmiersprache. Bei „Go lernen für einen Symfony Websocket Proxy“ von Benjamin Eberlei wurde zunächst die von Google entwickelte Programmiersprache „Go“ kurz vorgestellt und ein Vergleich zu PHP gezogen. PHP hat die Vorteile der Shared-nothing-Architecture und des integrierten Memory Managements, doch bei asynchroner I/O-Verarbeitung, Threads und hoher Datenverarbeitung kommt die Sprache schnell an die Grenze. Danach wurde mit einer exemplarischen Implementierung eines Websockets mit Go verdeutlicht, wie die angesprochenen Nachteile durch die Verwendung passender Technologien oder Programmiersprachen ausgehebelt werden können.

Im nächsten Talk von Kore Nordmann drehte sich alles um das Thema „Wie wir Code analysieren“. Es stand die zentrale Frage im Raum, wie eine gute und vor allem Tool-gestützte Code-Analyse aussehen kann. Als Tool kam der „Quality Analyzer“ zum Einsatz, der mit Hilfe von Metriken schlecht getesteten, wichtigen und fehlerhaften Code aufspüren soll. Neben den Standard-Metriken wie „Line Coverage“ oder „Path Coverage“ ist vor allem die „CRAP“-Metrik (CRAP = Change Risk Anti-Patterns) interessant, die Aufschluss über schwer zu verstehenden, testenden oder wartbaren Code gibt. Ein Standard-Tool für Codeanalyse von PHP-Projekten ist PHP Depend.

Gute Code-Analysen tragen nicht nur bei der Verbesserung der Qualitätssicherung bei, sondern helfen auch beim Verständnis und der Migration von Legacy-Anwendungen. Bei „Modernisieren mit Symfony“ von Alexander Turek wurde gezeigt, wie Altanwendungen in ein modernes Framework überführt werden können, ohne eine Parallelentwicklung von Alt- und Neuanwendung zu forcieren. Dabei werden neue Komponenten direkt und relevante Komponenten der Altanwendung Stück für Stück in der Neuanwendung umgesetzt.

Für frische Ansätze in der Frontend-Entwicklung sorgte der Talk „Pattern Library meets Symfony“ von Christoph Reinartz. Er und sein Team haben bei Trivago den Styleguide und das komplette Web-Design überarbeitet. Dabei wurde eine Pattern Library erstellt, die verschiedene Web-Komponenten für Entwickler in Packages bereitstellt. Somit konnte die Frontend-Entwicklung nahezu vollständig von der Backend-Entwicklung entkoppelt und das Web-Design mit allen Komponenten standardisiert werden. Bei der Erstellung der Library wurde im Atomic Design-Verfahren gearbeitet, d. h. es wurden Web-Komponenten von „klein“ nach „groß“ designt und zusammengesetzt. Leider kamen bei dem Vortrag die technischen Details (Welche Tools wurden eingesetzt? Wie wurde die Pattern Library technisch umgesetzt?) etwas zu kurz.

Technischer ging es dafür im nächsten Vortrag zu. Christian Flothmann zeigte in seinem Vortrag „FOSRest 2.0“ die Neuerungen in der Symfony-Komponente. Der Hauptfokus lag vor allem in der Umsetzung des Standards RFC-2518. Außerdem wurde Dependency Injection für Controller über Controller Traits ermöglicht. Zuvor mussten Entwickler den FOSRestController erweitern.

Ganz anders als erwartet ging es in dem nächsten Talk mit dem Thema „Open Heart Surgery (In Production)“ zu. Es ging grundsätzlich um das Thema Refactoring und dass bei umfangreichen, komplexen und besonders geschäftskritischen Anwendungen, die unter Umständen, selbst das Kerngeschäft ausmachen. Der Referent Jan van Thoor arbeitet bei Trivago und zeigte wie solche Anwendungen nachhaltig verbessert werden können und untermauerte seinen Vortrag mit vielen (äußerst) schlechten Code-Beispielen auf eine selbst-ironische Weise. Seine Devise bei solchen Unterfangen ist folgende: Zunächst sollte klar definiert sein welche Ziele angestrebt werden (z. B. die Anwendung sollte entkoppelte Elemente enthalten, testbar und leicht erweiterbar sein und eine klare Struktur aufweisen). Dann sollte das eigentliche Refactoring in kleinen Schritten erfolgen und kontinuierlich hinterfragt werden. Außerdem hat er festgestellt, dass eine Software-Architektur, die effektiv gestaltet ist und sich nicht dogmatisch an ein Pattern oder eine bestimmte Struktur klammert, besser funktioniert und ein System nach dem Refactoring aufgrund der Broken-Windows-Theory von selbst „gesund“ bleibt.

Marco Pivetta ging es im letzten Vortrag über das Thema „Doctrine ORM Good Practices and Tricks“ etwas anders an: Er motivierte alle Teilnehmer im Raum dazu mit ihm zusammen fünf Squads zu machen, um dem allmählichen Gähnen entgegenzuwirken. Großartig! Dann begann er seinen Vortrag mit vielen Tipps und Anregungen zur Verwendung von Doctrine. WP_20160513_13_10_41_Pro - KopieUnter anderem sollte seiner Meinung nach immer eine UUID verwendet werden und das Prinzip „Domain First“ gelten.

Abschließend wurden noch die Gewinner der Verlosungen bekannt gegeben. Mein Kollege Frederik Hausberg hatte tatsächlich das Glück das begehrte PHP-Maskottchen „ElePHPant“ und eine Symfony-Zertifizierung zu gewinnen. Hier der Beweis:

Am Ende des Tages blieben viele positive Eindrücke und Anregungen von einer belebten und fast familiären Community und das Warten auf die nächste Symfony Live!