Dates in 2019

January 17, 2019

Decomposing a problem into several microservices is difficult. Too many have failed and ended up with a distributed monolith. Let us take a step back and understand when and why we need to create a microservice, and where we should put the boundaries. Challenging some established practices, we will take a fresh look at different integration strategies, and come up with a simplified approach that hopefully gives us better results.

More details

January 18, 2019

Mel Conway's famous law states that organizations designing systems are constrained to produce systems that mimic the communication structures of the organizations. Digitalization, however, changes organizations fundamentally, for example through the introduction of agile methods, more autonomy, and a transition from management to leadership. We will discuss how this affects the way we should model software in Domain-Driven Design.

More details

February 15, 2019

Eigentlich wollte Rasmus Lerdorf vor 24 Jahren nur die Besucher seiner Webseite zählen. Wie kam es dazu, dass heute circa 80 Prozent aller Webseiten PHP verwenden? Wie wird PHP weiterentwickelt? Wie kann man zu PHP beitragen? Was können Entwicklerinnen und Entwickler von PHP 7.4 und PHP 8 erwarten? Diese und andere Fragen beantwortet der Vortrag von Sebastian Bergmann, der seit fast 20 Jahren zur Professionalisierung der Softwareentwicklung mit PHP beiträgt.

More details

February 21, 2019

Die richtige Software entwickeln. Das Richtige testen. Zum richtigen Zeitpunkt. Mit dem passenden Werkzeug sowie den richtigen Kniffen, wie man es effektiv und effizient einsetzt. In diesem Vortrag gehen wir unter anderem den folgenden Fragen nach: Was will ich testen? In welchem Rahmen muss ich es testen? Wie formuliere ich den Test?

More details

March 14, 2019

Getter methods retrieve state, while setter methods change state. We all know that. HTTP GET requests retrieve state, while HTTP POST requests change state. We all know that. Then why have we built so many applications with a single object model, blatantly ignoring this separation? Turns out that creating a separate model for reading and writing makes a lot of sense. But how can we introduce this concept into legacy applications? This presentation shows how to do it, and what is in it for you.

More details

March 20, 2019

Entgegen landläufiger Meinung ist kein Code untestbar. Sicherlich macht es mehr Spass, Unit Tests für sauberen, nach SOLID-Prinzipien erstellten Code zu schreiben. Aber was ist mit Legacy Code, der mit zahlreichen Abhängigkeiten aufwartet und sich nicht um die Trennung der Verantwortlichkeiten schert? Sebastian Bergmann zeigt, dass es möglich ist, Tests selbst für den miserabelsten Code zu schreiben. Anhand von Beispielen aus der Praxis zeigt er das Warum, Was, Wie und Wann des Testens von Software.

More details

March 21, 2019

Developers need tools to be productive. In this session, Sebastian Bergmann presents an overview of the tools every PHP developer needs to know. For instance, we will have a look at dephpend, php-cs-fixer, phpstan, phan, and PHPUnit. Tools are not an end unto themselves, though. Therefore we will also discuss how these tools fit into your development process.

More details

May 11, 2019

For 160 million years, dinosaurs ruled the world. Then, pretty quickly, and with very few exceptions, they became extinct. Surely, there is something to learn here that will help us to improve the architecture of our software systems. We will approximate the topic by trying to answer two pivotal questions: what would Charles Darwin say about microservices? And: is COBOL still relevant?

More details

Before the start of development comes the gathering of requirements. This daunting task with the seemingly endless discussions. Followed by the creation of epics, user stories or tickets which will change over and over again - even when development has already begun. We can do better than this: With Event Storming, an unlimited modeling space and all the key stakeholder in the same room. Let’s get started with efficient Domain-Driven Design!

More details

June 03, 2019

Performance is a key success factor for web shops. Over the years, we have gotten pretty good at delivering mostly static content, usually through a combination of heavy caching and the use reverse proxies. Delivering a highly personalized shopping experience, however, is a different beast. This talk goes in depth on how personalization challenges established best practices to speed up web shops, and shows how applying CQRS ideas can help us solve the problem.

More details

What makes up clean code? How does code turn out well? And how do you write really good code? In this workshop you will not only learn the answers to these questions. You will have the opportunity to immediately apply what you learn in a practical exercise. First, we will show how Domain-Driven Design and Test-Driven Development can be used to solve problems. Needless to say that we will cover topics such as Clean Code and SOLID along the way. Coached by the trainers, you will then work in pairs on additional features for the software we developed during the live coding. We will round up the day with a review where you will get feedback on the code you created. You will need to bring your own laptop to really benefit from this workshop. A recent version of PHP 7 and PHPUnit as well as your IDE of choice are all that is needed. No frameworks or third-party code are required.

More details

June 04, 2019

In an API-driven world, being and staying reachable is a crucial success factor. And while, of course, misbehaving client applications and users could be dealt with by simply adding more servers and thus making your (cloud) provider happy, restricting the API access to reasonable rates may be a more cost efficient way. Learn how to limit access rates to your API without changing a single line of backend code!

More details

So you must be the worst developer in the house, because you are the only one who does not understand that piece of elaborate, complex, carefully obfuscated code? Well, after some asking around, it turns out that nobody has a clue what that code does, or why it even exists. There might be opinions, but unfortunately there is more than one, so does the loudest developer’s voice "win"? We will analyze where code that nobody understands comes from, understand why we cannot accept it, and discuss why you are not the worst developer admitting that you do not understand a piece of code, but may in fact be one of the smartest.

More details

In 2018 the W3C released the candidate recommendation for the new Web Authentication Standard "WebAuthn". Already supported by all major browser vendors, it strives to make passwords as well as phishing a thing of the past. Given that haveibeenpwned.com’s database contains over 500 million stolen credentials, the switch away from passwords should happen sooner rather than later. Are you prepared to support the new means of authentication? Get ready for the future and learn what WebAuthn is about, how it works, and how to leverage its potential for your site today using PHP and JavaScript.

More details

Developers need tools to be productive. In this session, Sebastian Bergmann presents an overview of the tools every PHP developer needs to know. For instance, we will have a look at dephpend, php-cs-fixer, phpstan, phan, and PHPUnit. Tools are not an end unto themselves, though. Therefore we will also discuss how these tools fit into your development process.

More details

June 05, 2019

You are still on PHP 5? If not, this talk is not for you. What exactly keeps you from deploying PHP 7 to production? If you already know, this talk will provide you with proven tactics to get your application ready for PHP 7 and migrate successfully. If you are not sure, what the shopstopper really is, you will learn how to analyze the status quo, develop a plan on how to migrate and sell the whole project to your boss or customer.

More details

While PHPUnit is not difficult to set up and writing tests with it is easy, you will get better results and save development time if you know the tips and tricks to leverage PHPUnit more effectively. This session, presented by the creator of PHPUnit, teaches best practices you can use to ensure that your unit testing effort is efficiently implemented.

More details

June 06, 2019

In an event-driven world, asynchronous processing at scale is essential to guarantee a rapid execution of jobs. And seemingly impossible to do without a big tech stack – including bleeding edge frameworks, lots of tools, and a complex infrastructure to run it all. In this session we’ll showcase how simple, plain, and easy an asynchronous processing stack can be set up and implemented, using well-known, almost boring technology.

More details

June 07, 2019

Domain-Driven Design, CQRS, and Event Sourcing. Big words that obviously require an equally big tech stack to be applied – with bleeding edge frameworks, lots of tools, and a complex infrastructure to run it all. Or not? In this workshop, we will create a solid, event-sourced web application from scratch. We will not rely on any frameworks or libraries to really get to the bottom of things. Make sure to bring your laptop!

More details

June 27, 2019

Die richtige Software entwickeln. Das Richtige testen. Zum richtigen Zeitpunkt. Mit dem passenden Werkzeug sowie den richtigen Kniffen, wie man es effektiv und effizient einsetzt. In diesem Vortrag gehen wir unter anderem den folgenden Fragen nach: Was will ich testen? In welchem Rahmen muss ich es testen? Wie formuliere ich den Test?

More details

July 03, 2019

Es ist geschafft: alle Entwickler haben sich zu Clean Code und Craftsmanship committed, das Manifest unterschrieben und tragen bunte Armbändchen. Die Qualität der Software steigt (was auch immer das jetzt genau bedeuten mag), in den Pull Requests finden keine Grundsatzdiskussionen mehr statt und dank Pair Programming gibt es weniger Wissensinseln. Aber: trotz grüner Tests und fröhlicher Entwickler sind die Anwender noch immer nicht nicht zufrieden. Und warum sind unsere Entwicklungskosten noch immer so hoch und die Velocity zu niedrig? In diesem Vortrag, der auf Praxiserfahrung aus über 25 Jahren Beratung und Team-Coaching in der Software-Entwicklung basiert, erfahren Sie, wie Sie nicht nur Software richtig schreiben, sondern auch die richtige Software schreiben.

More details

July 05, 2019

Konzepte wie Domain-Driven Design, eventgetriebene Architekturen, Command/Query Responsibility Segregation (CQRS) und Event Sourcing haben in letzter Zeit viele Diskussionen ausgelöst. Es scheint fast, dass man kein neues Projekt anfangen darf, ohneyx zumindest ein paar von diesen Buzzwords mit einzubauen. Oder gleich das ganze Paket? Schließlich hängen die ganzen Konzepte ja sehr eng zusammen. Nach einer kompakten Einführung in den praktischen Nutzen und die Anwendungsgebiete von DDD, Events und CQRS sehen wir uns jenseits von Buzzwords und technischem Overkill an, wo und wie man die genannten Konzepte in aktuellen Projekten und für Legacy-Anwendungen richtig dosiert und gewinnbringend einsetzen kann. Wir lernen die wichtigsten Prinzipien des Domain-Driven Design als eine logische Fortsetzung von OOP und agilen Methoden kennen und diskutieren praxiserprobte Lösungsansätze für die synchrone und asynchrone Verarbeitung von Events und die Anwendung von CQRS-Prinzipien, mit denen Erweiterungen und Änderungen an vorhandenen Anwendungen viel einfacher umsetzbar sind, als sie das bisher waren. Wir zeigen Codebeispiele in PHP, die aber auch für Entwickler mit Kenntnissen in anderen Programmiersprachen gut zugänglich sind. Da die zur Verfügung stehende Zeit beschränkt ist, ist in diesem Workshop keine Programmierung am eigenen Rechner vorgesehen.

More details

July 10, 2019

PHP war schon immer so verbreitet wie gleichzeitig umstritten. Doch in den letzten Jahren hat sich etwas verändert: Suchten sich Entwickler früher einen Job wegen PHP aus, so kommen sie heute trotz PHP. Marcel Normann, Entwicklungsleiter der WhereGroup, präsentiert als Einleitung einen kurzen Rückblick auf über 20 Jahre PHP-Geschichte und wagt den Versuch, in Statistiken Hinweise zur Zukunftsfähigkeit von PHP zu finden. Anschließend geht es weiter mit Sebastian Bergmann, einem PHP-Entwickler der ersten Stunde in Deutschland: Er berichtet, wie weit die Entwicklung von PHP 8.0 vorangeschritten ist und welche Features wir zu erwarten haben. Im Anschluss an die Vorträge wollen wir uns gemeinsam mit Euch auf die Suche nach einer Antwort auf die Frage machen, ob ein Entwickler heute noch PHP lernen sollte.

More details

August 08, 2019

Für eine effiziente Entwicklung von Software ist es unerlässlich, dass der abzubildende Prozess von allen Beteiligten verstanden wurde. Keine sonderliche Herausforderung, sollte man meinen. Oder doch? In der Praxis zeigt sich nämlich, dass viele Details eher unklar sind: Warum ist dieser Schritt hier überhaupt notwendig? Müsste der nicht vielleicht sogar früher erfolgen? Und was passiert überhaupt, wenn an dieser Stelle etwas schief geht? Event Storming für Process Modeling ist eine effektive Methode, um das Wissen über den abzubildenden Prozess und die daraus resultierenden Anforderungen sowohl für die Fachabteilung als auch für die Entwickler greifbar zu machen und in verständlicher Form aufzubereiten.

More details

September 13, 2019

Bestehende Systeme sind wertvoller Code, bei dem wir uns vor Änderungen fürchten. Das Fehlen von automatisierten Tests ist die häufigste Ursache dafür. Wie also umgehen mit Code, der nicht ausreichend getestet ist? Wir wollen Änderungen, die an vorhandenen Systemen vorgenommen werden müssen, schließlich nicht im Blindflug durchführen. In dieser Schulung lernt Ihr, wie Ihr Änderungen und Refactorings auch in bisher ungetestetem Code mit PHPUnit absichern könnt.

More details

September 24, 2019

Fachanwender sind keine Software-Designer. Und Entwickler sind keine Fachexperten. Aber wo kommen dann eigentlich die Features her, die in der Entwicklung umgesetzt werden sollen? Und warum dauert das immer alles so lange und ist dann auch noch so teuer? Wir setzen in diesem Workshop vor der eigentlichen Programmierung an und versuchen, den Prozess von der Idee zu einem schließlich in Code umsetzbaren (?) Feature zu verstehen und zu verbessern. Zwischen Conway's Law und Akzeptanztests untersuchen wir unter anderem die Unterschiede zwischen iterativer und inkrementeller Entwicklung. Wir sehen uns verschiedene Arbeits- und Visualisierungstechniken an, die uns helfen, Features zukünftig effizienter zu spezifizieren und zu planen. Der Workshop vermittelt anhand von praxisnahen Fallbeispielen einen Einblick in verschiedene Werkzeuge und Methodenbausteine und ermuntert dazu, sich aus diesem Baukasten ein eigenes, der jeweiligen Situation angemessenes Vorgehensmodell zusammenzustellen.

More details

September 25, 2019

Was macht sauberen Code aus? Wie wird Code richtig gut? Und wie schreibt man richtig guten Code? In diesem Workshop lernt Ihr das nicht nur, sondern Ihr könnt es auch direkt in die Praxis umsetzen! Zunächst demonstriert Sebastian Bergmann den Einsatz von Domain-Driven Design und Test-Driven Development, natürlich nicht ohne auch über Themen wie Clean Code oder die SOLID-Prinzipien zu sprechen. Danach arbeitet Ihr in Paaren und setzt das Gelernte in die Praxis um. Wir schließen den Tag ab mit einer Review-Runde, in der Ihr Feedback zu Eurem Code bekommt. Um von diesem Workshop wirklich profitieren zu können, bringst Du bitte Dein eigenes Laptop mit Deiner gewohnten Entwicklungsumgebung mit. Neben IDE (oder Texteditor) brauchst Du eine aktuelle Version von PHP und PHPUnit. Frameworks oder Third-Party-Code wird nicht benötigt.

More details