Selected talks
Here you will find a selection of talks that we can give at your event upon request. Get in touch!
Bootcamp Familie: Was Elternsein mit der Kommunikation zwischen Fach und IT zu tun hat
Kinder zu bekommen ist das eine, täglich mit ihnen zu leben das andere. So richtig darauf vorbereitet hat mich niemand. Dafür trainiert mich mein Zweijähriger im Bootcamp „Familie" täglich für die Herausforderungen in der Kommunikation zwischen Fach(abteilungen) und IT – sei es bei schwierigen Rahmenbedingungen wie begrenzten Kommunikationszeiten und -herausforderungen beim Spezifizieren oder beim Berücksichtigen der unterschiedlichen Hintergründe der Gesprächspartner.
In diesem Talk teile ich Learnings aus meinem ganz persönlichen Bootcamp „Familie" und gebe Anregungen für die erfolgreiche Abstimmung zwischen Fach- und IT-Seite.
The Architecture of Reliable AI: RAG
Having AI that doesn’t know your company is like having a brilliant strategist who wakes up from years in a coma and realizes they’ve never heard of your business. Can you really expect insider tips from them? How can we ensure that AI systems are accurate, transparent, and always up-to-date? All Large Language Models (LLMs) have a cut-off date after which their world knowledge stops. And they know nothing about your company’s internal workings. Even the leading models have hallucination rates that can’t be completely ignored. However, they offer enormous potential for productivity, efficiency, and creativity. This is where Retrieval-Augmented Generation (RAG) comes in: LLMs are enhanced through targeted information retrieval. In this presentation, we’ll explore the architecture of RAG-based systems. We’ll discuss the integration into existing IT infrastructures and the optimization of data quality and context management. We’ll learn how RAG helps to fill knowledge gaps and improve the accuracy and reliability of generative AI applications.
Evolutionäre Softwarequalität
Qualitätsziele helfen uns, Architekturentscheidungen fundierter zu treffen. Die genau richtige Qualität ist jedoch oft subjektiv und ändert sich über die Zeit hinweg. Dies macht das Arbeiten mit und an Qualitätszielen vor allem bei langlebigen Softwaresystemen spannend.
In diesem Vortrag stelle ich eine neue Sicht auf Softwarequalität vor, bei der wir Qualität im evolutionären Kontext betrachten. Als Basis verwende ich das ISO 25010 Qualitätsmodell sowie Wardley Mapping, um die passende Qualität nach Wichtigkeit und Evolutionsstufen zu finden.
Aufzeichnung des Vortrags
Dependency Updates automatisieren mit Renovate
In der Anwendungsentwicklung müssen wir heute nicht mehr alles selbst erfinden, sondern wir nutzen Bibliotheken von Drittanbietern. Mit den Vorteilen dieser Bibliotheken geht jedoch auch die Verantwortung einher, sie regelmäßig zu aktualisieren, um potenzielle Sicherheitsrisiken zu minimieren. Die zeitnahe Durchführung dieser Updates, ohne das Überspringen von Releases, reduziert dabei Risiko und Aufwand. In diesem Vortrag wird deswegen Renovate vorgestellt, ein Open-Source-Bot für das automatisierte Updaten von Abhängigkeiten.
Data Contracts: Teams zusammenbringen und Vertrauen schaffen
In einer Data-Mesh-Architektur werden Datenprodukte entwickelt und zwischen verschiedenen Teams ausgetauscht. Wir brauchen eine skalierbare Möglichkeit, uns auf die Qualität und Stabilität der Daten zu verlassen. Hier kommen Data Contracts ins Spiel. Der Datenanbieter definiert das Schema der bereitgestellten Daten und ihre Qualitätsattribute, aber auch Beispieldatensätze und die domänenspezifische Bedeutung der Attribute. Data Contracts legen außerdem die Nutzungsbedingungen für die Daten fest.
Stillstand im Fortschritt
1969 gelang es der Menschheit, mit Apollo 11 auf dem Mond zu landen. Ein gigantisches gesellschaftliches Vorhaben mit unzähligen möglichen Single Points of Failure. Vor Kurzem haben wir dann das James Webb Teleskop erfolgreich ins All geschossen – und aufgebaut – mit sage und schreibe 344 Single Points of Failure. Und doch: Bei jedem beginnenden Flugzeugboarding hören wir das vertraute Geräusch von Nadeldruckern. Seit wie vielen Jahrzehnten versuchen wir, synchronisierte Terminkalender (und Termineinladungen) zu lösen? Wie lange werden wir noch Suchen-und-Ersetzen verwenden?
Während wir unaufhörlich kleine, aber inkrementelle Fortschritte machen, sind die wirklich großen Herausforderungen, die uns als Unternehmen und Gesellschaften antreiben sollten, noch weitgehend unberührt. Unstrukturierte Daten türmen sich in unseren Systemen. Wir widmen uns weiter mit Inbrunst dem Kleinteiligen. Während wir gleichzeitig die großen Herausforderungen in den Hintergrund drängen. Unsere Zeit ist endlich. Haben wir aufgegeben?
Key Points
- Aktuelle Herausforderungen bei der Einführung von Technologien
- Wirkliche Herausforderungen erkennen und meistern statt dem Kleinteiligen widmen
- Gestaltung zukunftsfähiger IT-Strategien mit Fokus auf Künstliche Intelligenz
Kohäsion im Kontext von Modellierung und Design
“Lose Kopplung und hohe Kohäsion” sind wichtige Designprinzipien für die Erstellung wartbarer und verständlicher Software. Während es bereits viele Vorträge und Workshops zum Thema Kopplung auf verschiedenen Konferenzen gab, wurde das Thema Kohäsion noch nicht so oft behandelt. In diesem Vortrag geht es um Kohäsion.
Wir werden zunächst die grundlegenden Prinzipien der Kohäsion im Softwaredesign erkunden und ihre Bedeutung für die Schaffung klarer, wartbarer und skalierbarer Systeme erläutern. In diesem Kurs werden Sie lernen, was Kohäsion ist und welche Arten von Kohäsion es gibt. Wir werden über Arten von Kohäsion im Softwaredesign wie funktionale, sequenzielle, zeitliche oder zufällige Kohäsion sprechen. Wir werden uns aber auch mit dem Begriff Kohäsion in anderen Disziplinen wie Chemie, Geologie, Sozialverhalten oder Bodenmechanik beschäftigen.
Moderne Architekturarbeit: Vom Vorgabenmachen zum Enabling
Viele große Unternehmen arbeiten immer noch mit zentralisierten architekturbezogenen Teams. Deren Aufgabe besteht häufig darin, anderen Teams architektonische Spezifikationen vorzugeben und dafür zu sorgen, dass diese Spezifikationen bei der Umsetzung eingehalten werden. Diese Teams werden oft als “Elfenbeinturm-Architektur”-Teams bezeichnet, die darauf abzielen, hochqualifizierte Architekt:innen zu bündeln. Diese Rolle ist auf dem Markt sicherlich nicht in Hülle und Fülle vorhanden. Sie passen jedoch nicht in eine agile Umgebung, in der wir den Teams die Möglichkeit geben wollen, ihre eigenen Entscheidungen zu treffen. Bestimmte Leitplanken sind dennoch notwendig, um sicherzustellen, dass das Gesamtkonstrukt funktioniert. Darüber hinaus können gut gewählte Leitplanken auch den Abstimmungsbedarf zwischen den Teams drastisch reduzieren. Wir müssen diese Teams in die Lage versetzen, den größten Teil der architektonischen Arbeit selbst zu erledigen, und gleichzeitig dafür sorgen, dass die einzelnen Teile zusammenpassen. An dieser Stelle kommen Team Topologies ins Spiel, eine von Matthew Skelton und Manuel Pais eingeführte Methode. Dort gibt es den Teamtyp des “Enabling Teams”, welches – knapp zusammengefasst – andere Teams mit Wissen und Methodik unterstützt.
Dieser Vortrag gibt Ihnen einen Überblick über diesen Wandel sowie eine praktische Anleitung, wie Sie ein zentralisiertes Architekturteam in ein Enabling Team umwandeln können, dessen Aufgabe es ist, die Architekturarbeit in anderen Teams zu verbessern. Sie werden lernen:
- Welche Stakeholder Sie in diesen Prozess einbeziehen sollten
- Warum das künftige Enabling-Team ebenfalls befähigt werden muss und wie man das macht
- Wo häufige Fallstricke auf dieser Reise liegen
- Warum diese Reise auf agile Weise mit kontinuierlichem Lernen und Retrospektiven durchgeführt werden muss
Dieser Vortrag wird auch viele Beispiele aus der Praxis enthalten, die eine solche Transformation begleiten.
Software Architektur im Mob
Die Arbeit von Softwarearchitekten findet in klassisch aufgestellten Teams oft abseits der Entwicklungsarbeit statt - sowohl räumlich als auch zeitlich getrennt. Dass das auch anders geht, zeigt Joshua in seinem Vortrag. Er arbeiten seit mehr als 3 Jahren in einem Remote Mob, in dem das ganze Team bei Bedarf die Rolle des Architekten einnimmt. So wird die Arbeit an Domänen- und Lösungsarchitektur genauso vom ganzen Team gemeinsam durchgeführt, wie die Entwicklung und der Betrieb der Lösungen. In diesem Vortrag erfahrt ihr, wie ein Mob funktioniert und welche Veränderungen die synchrone Zusammenarbeit bei Architektur-Methoden mit sich bringt.
Introduction to Data Mesh
Data Mesh is a socio-technical approach to data management that enables teams to perform data analysis independently within their domain to make data-driven decisions. Data mesh promotes sharing data with other teams as data products and defined data contracts.
Data Mesh adopts the principles from Domain-driven Design, Team Topologies and Microservices to the data world. However, it has many organizational implications, such as ownership and federated governance.
In this talk, Simon and Jochen from INNOQ describe how a Data Mesh architecture can be implemented in practice, which organizational transformations will be necessary and which technologies are suitable in this context.
Agenda This talk is part of Softwareaarchitektur Hamburg Meetup
- 18:30 Open doors
- 19:00 Talks (ca. 60 min + Q&A)
- Afterwards: Networking
Wardley Maps für alle, die an Software arbeiten
Wardley Maps sind eine Technik zur Visualisierung und zum Verständnis der Weiterentwicklung von Systemen, Services und Entwicklungsteams. Sie sind ein nützliches Werkzeug für Softwareentwickelnde, um die wichtigsten Komponenten eines Systems zu identifizieren und zu verstehen, wie sie sich im Laufe der Zeit verändern.
In diesem Vortrag führe ich Euch in die grundlegenden Konzepte von Wardley Maps und den Prozess der Erstellung einer Map für ein Softwaresystem ein. Ich werde auch vorstellen, wie Wardley Maps verwendet werden können, um Möglichkeiten für Innovationen zu identifizieren und wie man sie für die Kommunikation des aktuellen Zustands und der zukünftigen Ausrichtung eines Systems nutzen kann.
Ich gebe Beispiele dafür, wie ich Wardley Maps in realen Softwareentwicklungsprojekten einsetze und wie ich daraus kleine und große strategische Entscheidungen ableite. Obwohl Wardley Maps kein Allheilmittel sind, kann es eine nützliche Technik im Werkzeugkasten von Softwareentwickler:innen sein, um Ideen für die Weiterentwicklung von Softwaresystemen mit anderen – insbesondere der Geschäftsseite – zu besprechen.
Die wenigen Entscheidungen, die 1000 Entscheidungen treffen: Architektur-Prinzipien, Makroarchitektur und The Paved Road
Schnelle Software Delivery hängt heute u.a. an der Etablierung von autonomen Teams, die unabhängig voneinander Funktionalität entwickeln und liefern können. Aber wie schaffen wir es, dass diese Teams nicht in unterschiedliche Richtungen laufen, sondern ein gemeinsames Architektur- und Technologieverständnis entwickeln, aber gleichzeitig einen eigenen Entscheidungsspielraum haben?Um diese Fragen zu beantworten, diskutieren wir Architektur-Prinzipien, Makroarchitektur und Service Templates (aka Golden Path, Paved Road, Sensible Defaults, Follow the Trail) und wie diese Ideen hier helfen können, aber auch wo deren Fallstricke liegen
Systems Thinking by combining Team Topologies with Context Maps
Key takeaways
- You will learn about the importance of aligning teams with architecture and domains
- You will learn two methodologies for visualizing and talking about sociotechnical architectures: Team Topologies and Context Maps
- You will learn how to combine Team Topologies and Context Maps together
Team Topologies and Context Maps are two interesting approaches to visualize sociotechnical architectures. However, using each method on its own, you will not be able to capture a truly holistic view of the system as a whole, but you can use both in combination and this is what this talk is about. This talk will introduce a Systems Thinking perspective on those two approaches and explain how both can be leveraged in combination to get a deep dive on many interactions in a system of teams and software. Those interactions include: - team relationships - team dependencies - propagation of domain models - governance related communication - provisioning of APIs services. However, we will also look at the components of the system with Team Topologies being team centric and Context Maps being bounded context centric. I will finally explain how you can use both methods to visualize alignments between domains, bounded contexts and teams. This talk assumes that you have a basic understanding of strategic Domain-Driven Design (esp. Bounded Contexts and Context Maps) open_in_new
Data Mesh: Was ist ein Datenprodukt?
Moderne Datenarchitekturen verwenden das Konzept eines Datenprodukts, um die Bereitstellung und Nutzung von Daten besser zu organisieren.
Ein Datenprodukt bildet eine logische Einheit um fachlich relevante Daten und umfasst alle Komponenten, um diese Daten zu speichern, aufzubereiten, zu aggregieren, zu erklären und für die Nutzer:innen so einfach wie möglich zugänglich zu machen.
Jochen Christ, Autor von datamesh-architecture.com, zeigt, wie ein Datenprodukt in der AWS-Cloud implementiert werden kann, welche Funktionen eine gute Datenplattform zur Verfügung stellen sollte, und wie Datenprodukt-Governance mit dem Data Mesh Manager unterstützt wird.
Faktenbasierte LLM-Chatbots für Deine Domäne
Große Sprachmodelle (LLM) sind eine neue Technologie, die die Welt in kürzester Zeit erobert hat. KI-Chatbots wie ChatGPT haben KI durch die Verwendung natürlicher Sprache steuerbar und damit für die breite Öffentlichkeit zugänglich und äußerst nützlich gemacht.
Die meisten Menschen haben wahrscheinlich schon mit diesem oder einem anderen Chatbot experimentiert und ähnliche Erfahrungen gemacht: Sie wissen auf fast jede Frage eine Antwort, schreiben detaillierte Texte und reagieren sogar auf Gegenfragen. Dabei gibt es ein großes Problem: Die Chatbots halluzinieren, d.h. sie erfinden Inhalte, die richtig klingen, aber nicht richtig sind. Außerdem ist es aufgrund der riesigen Menge an Trainingsdaten nicht mehr möglich, zu rekonstruieren, woher eine Information stammt.
Wir haben uns mit diesem Problem auseinandergesetzt und versucht, eine Lösung zu finden, bei der ein Chatbot seine Antworten innerhalb einer bestimmten Domäne aufbaut und Quellen für die Herkunft der verwendeten Informationen aus der Domäne angibt. Solche wissensbasierten Chatbots können in praktisch jedem Bereich eingesetzt werden, z. B. zum Chatten mit Dokumentationen, Inhalten einer Datenbank oder einer Website, unter Verwendung natürlicher Sprache, ohne das Risiko von Halluzinationen. Wir haben auch Ideen wie die Verwendung von Open-Source-LLMs (z. B. LLama2), Skalierbarkeit und Kostenmanagement untersucht.
What Why When Versioning Matters: Tips for API Design, Description, and Documentation
One of the superpowers of APIs is to design them as products with a focus on making them reusable. That helps with innovation and reuse, as teams can now consume the capabilities of other teams without having to coordinate with them, leading to faster flow. For this to work well, API versioning must be handled in a way that allows the API to evolve while at the same time not breaking existing consumers. What do you have to version? Why does it matter? When should you version? We present tips that help to improve your API design, description and documentation practices.
Statische Codeanalyse: Stolz und Vorurteil – und Zombies
Nervt dich die statische Codeanalyse in deinem Projekt? Hast du dich noch letzte Woche furchtbar darüber aufgeregt? Herzlichen Glückwunsch, dann benutzt ihr sie vermutlich falsch.
Statische Codeanalyse soll dazu dienen, die Codequalität zu bewerten und kontinuierlich zu verbessern. Klingt in der Theorie hervorragend, jedoch sieht die Realität oft anders aus: Entwickler:innen fürchten die Bewertung, das Management interpretiert Zahlen falsch, und trotz des Mehraufwands gibt es immer wieder Programmierfehler im Code.
In meinem Vortrag zeige ich euch die häufigsten Fehler bei der Verwendung statischer Codeanalyse, die mir regelmäßig in Projekten begegnen. Gemeinsam werden wir Lösungen und Tipps erarbeiten, um diese Fehler künftig zu vermeiden. Und wer weiß, vielleicht begegnen uns auch Zombies auf unserem Weg zur besseren Codequalität.
Die Magie hinter der Code-Hotspot-Analyse
Die Hotspot-Analyse ist eine weit verbreitete Methode zur Untersuchung bestehender Softwaresysteme, mit dem Ziel, Verbesserungsarbeiten am vorhandenen Code gezielt zu priorisieren. Sie ermöglicht die Darstellung der Verbesserungsdringlichkeit und Code-Komplexität für die gesamte Codebasis in einer anschaulichen Visualisierung, aus der sich schnell die wichtigsten Schwerpunkte ableiten lassen sollen.
In diesem Vortrag werfen wir einen Blick hinter die Kulissen dieser Analysemethode. Wir werden die technischen Aspekte der Analyse beleuchten, mögliche Fallstricke aufdecken und die weiteren Potenziale dieser faszinierenden Analysetechnik erkunden. Alle, die schon immer einmal wissen wollten, was hinter den bunten Visualisierungen der Analyse-Tools steckt, finden hier wertvolle Einblicke – auch für ihre ganz eigenen Analyseideen.
Ganzheitliche Architekturreviews: Domains, Architektur, Organisation
Viele Architektur-Reviews betrachten häufig strukturelle und technische Entscheidungen vor dem Hintergrund von Qualitätsanforderungen. Und das ist auch gut so! In den letzten Jahren häufen sich jedoch Qualitätsanforderungen, die nicht nur rein architektonisch gelöst werden können. Dazu zählen unter anderem sehr schnelle Release-Zyklen oder minimale Abstimmungen zwischen Teams (aka Team-Autonomie). Wir behaupten: Architektur-Reviews können auch untersuchen, inwieweit eine Software-Architektur autonome Teams mit klaren Grenzen für eigene fachliche Entscheidungen unterstützt.
An dieser Stelle setzt unser Workshop an: Wir stellen vor, wie man Architektur-Reviews mit einer ganzheitlichen Perspektive betreiben kann. Dabei stellen wir einerseits kurz klassische Review-Methoden vor, z.B. ATAM, und legen einen Schwerpunkt darauf, wie man diese so erweitern kann, dass auch Perspektiven wie Domänen und Teams mit berücksichtigt werden. Auch das Alignment zwischen vertikalen Modulen in der Architektur, Domänen und Teams wird dabei beleuchtet. Wir werden hierbei diverse methodische Elemente aus dem Softwarearchitektur-, Domain-Driven Design- und Team Topologies-Umfeld aufgreifen und unsere eigenen Erfahrungen bei der Durchführung solcher Reviews einbringen. Zudem wird der Workshop auch auf Stakeholder der Bewertung und politische Fallstricke solcher ganzheitlichen Reviews eingehen.
DDD und DevOps sind das perfekte Team – warum?
Diese Session zeigt auf, wie sich die Ideen von DevOps und DDD ergänzen und warum man beide Ansätze kombinieren sollte. Wir werden dabei auf die kulturellen Aspekte beider Ansätze eingehen und herausarbeiten, dass die Kombination aus DevOps und DDD zu sehr gut geschnittenen cross-funktionalen Teams mit Ende-zu-Ende-Verantwortung für einen klar abgegrenzten fachlichen Bereich führt.
Der Vortrag zeigt zudem auf, welche Wege sie beschreiten können, damit aus einem “you build it, you run it” ein “you design it, you build it and you run it” wird.
Zielpublikum: Architekt:innen, Projektleiter:innen, Entscheider Voraussetzungen: DevOps- und DDD-Grundlagen sind vorteilhaft Schwierigkeitsgrad: Fortgeschritten
Systems Thinking: Combining Team Topologies with Context Maps
Team Topologies and Context Maps are two interesting approaches to visualize sociotechnical architectures. However using each method on its own you will not be able to capture a truly holistic view of the system as a whole but you can use both in combination and this is what this talk is about. This talk will introduce a Systems Thinking perspective on those two approaches and explain how both can be leveraged in combination to get a deep dive on many interactions in a system of teams and software.
Those interactions include:
- team relationships
- team dependencies
- propagation of domain models
- governance related communication
- provisioning of APIs / services
However we will also look at the components of the system with Team Topologies being team centric and Context Maps being bounded context centric. I will finally explain how you can use both methods to visualize alignments between domains, bounded contexts and teams. This talk assumes that you have a basic understanding of strategic Domain Driven Design (esp. Bounded Contexts and Context Maps)
Livestream: https://youtu.be/xbH2rxXsaI0
Wardley Maps for Software Developers
Wardley Maps is a technique for visualizing and understanding the evolution of systems, services, and development teams. It is a valuable tool for software developers to identify the key components of a system and understand how they change over time.
In this talk, I will introduce you to the fundamental concepts of Wardley Maps and the process of creating a map for a software system. I will also discuss how Wardley Maps can be used to identify opportunities for innovation and how to use it for communicating the current state and future direction of your system.
I provide examples of how I use Wardley Maps in real-world software development projects, and how I derive strategic decisions from them. Although Wardley Maps is not a silver bullet, it may be a useful technique in your toolbox where you need a bird’s eye view of your system and discuss ideas for its evolution with others – especially businesspeople.
Spring Boot entzaubert
Häufig wird im Zusammenhang mit Spring Boot das Wort “Magie” erwähnt. Tatsächlich können der Einsatz von Annotationen und die sonstigen Mechanismen, die unter der Haube von Spring Boot werkeln, gerade auf Menschen ohne jahrelange Spring Erfahrung magisch wirken. Diese Session zeigt, aus welchen Bestandteilen Spring Boot besteht und wie diese im Detail funktionieren. Dabei wird auch klar, welche Arbeit uns das Framework abnimmt. Am Ende angekommen wirkt das ganze dann nicht mehr magisch, sondern eher wie mit Wasser kochen.
We‘d love to show you a YouTube video right here. To do that, we need your consent to load third party content from youtube.com
Einführung in Software Analytics
In Unternehmen werden Datenanalysen intensiv genutzt, um aus Geschäftsdaten wertvolle Einsichten zu gewinnen. Warum nutzen wir als SoftwareentwicklerInnen Datenanalysen dann nicht auch für unsere eigenen Daten?
In diesem Workshop stelle ich Vorgehen und Best Practices von Software Analytics vor. Wir sehen uns die dazugehörigen Open-Source-Werkzeuge an, mit denen sich Probleme in der Softwareentwicklung zielgerichtet analysieren und kommunizieren lassen.
Im Praxisteil mit Jupyter, pandas, jQAssistant, Neo4j & Co. erarbeiten wir gemeinsam wertvolle Einsichten aus Datenquellen wie Git-Repositories, Performancedaten, Qualitätsberichten oder auch direkt aus dem Java-Programmcode. Wir suchen nach besonders fehleranfälligem Code, erschließen No-Go-Areas in Altanwendungen und priorisieren Aufräumarbeiten entlang wichtiger Programmteile.
Architecture Communication Canvas
Development teams usually don’t like to write documentation. By way of contrast, a certain amount of documentation often proves useful in the long run. Why not give the established Canvas pattern a chance to shine in software architecture?
In this talk, you will learn a highly pragmatic approach to document and communicate the most important aspects of your architecture (and implementation). It is compatible with the established arc42 template, but significantly shorter. Prepare yourself for an example-ridden talk and plenty of practical tips that will make documentation fun and productive!
Backing article: Concise Documentation – Revisited
We Don’t Talk About Bruno — The Open Source HTTP Client Alternative to Postman and Insomnia
A reliable HTTP client is an indispensable tool in the everyday life of a web developer. These tools make it possible to efficiently test and manage API requests, significantly easing development and debugging processes. While Postman and Insomnia have been the preferred tools for these tasks in recent years, a new HTTP client is now gaining popularity: Bruno.
Bruno distinguishes itself from Postman and Insomnia by its deliberate avoidance of cloud services, allowing for a completely offline-based usage. Bruno enables the storage and versioning of request collections using Git and its own Bru Markup Language, ensuring seamless team collaboration and easy tracking of changes. Compared to the established tools, Bruno is a lightweight and user-friendly alternative.
In this talk, we will explore the functionality of Bruno in detail and experiment together to see how Bruno compares to Insomnia and Postman.
Riding the elevator: Domain-driven Design in the Penthouse
In his book “The Software Architect Elevator” Gregor Hohpe uses the analogy of an elevator in a high building for the daily work which software architects should be doing: They are supposed to talk to folks who build and maintain stuff in the engine room but also make sure that the managment which is residing on the penthouse floors understand and gain interest in what is happening in the engine room.
In my talk I will build upon Gregors ideas and show you how you can leverage ideas from Domain Driven Design in this daunting communication tasks. But rest assured: I will not only present the obvious strategic Domain Drivend Design elements like core / supporting / generic subdomains here. We will go deeper and explore links to other initiatives in an org like DevOps, Agile and / org Design Thinking as well which are of interest for the leadership of an organization.
We as a community should get better at this topic because Domain Driven Design needs a healthy, blame free and safe environment in order to flourish and this environment needs to be established and lived by the leadership folks.
PS: The talk idea and usage of Gregors elevator analogy have been approved by Gregor
Data Science on Software Data
Data Science gains new insights from business data. As software developers, why don’t we use Data Science to analyze our data from our software systems, too?
In this session, I will talk about approaches to mine software data based on the many ideas from the Data Science field. We’ll also look at the standard tools used in this area to analyze and communicate software development problems easily. With tools such as computational notebooks, data analysis frameworks, visualization, and machine learning libraries, we make hidden issues visible in a data-driven way.
Attendees will learn how to leverage scientific thinking, manage the analysis process, and apply literate statistical programming to analyze software data in an understandable way. The main part will be hands-on live coding with Open Source tools like Jupyter notebook, Python, pandas, jQAssistant, and Neo4j. I’ll show which new insights we can gain from data sources such as Git repositories, performance measurements, or directly from source code.
Die Rolle „Evolutionist“: Softwarearchitekturarbeit im Bestand
Ein großer Teil der Softwareentwicklung besteht aus Wartungsarbeit. In Ausbildung und Studium haben wir oft jedoch nur die Neuentwicklung kennengelernt. Überforderung droht, Frust baut sich auf und die Freude an der Softwareentwicklung geht verloren. Das muss nicht sein!
Wir stellen die Rolle “Evolutionist” vor, welche sich auf die qualitativ angemessene Weiterentwicklung bestehender Systeme fokussiert. Wir blicken auf das notwendige Skill- und Mindset sowie erste Praktiken, um mit großen und langlebenden Softwaresystemen zurecht zu kommen.
Moderne Architekturarbeit: Vom Vorgabenmachen zum Enabling
Viele große Unternehmen setzen noch immer auf zentralisierte, architekturbezogene Teams. Oftmals geben diese Teams anderen Teams architektonische Vorgaben und sorgen dafür, dass diese Vorgaben in der Praxis eingehalten werden. Solche Teams werden häufig als „Elfenbeinturm-Architektur”-Teams bezeichnet, die darauf ausgerichtet sind, hochqualifizierte Architekten und Architektinnen zu bündeln. Solche Rollen sind auf dem Markt zwar selten, passen aber nicht in eine agile Umgebung. In der agilen Welt möchten wir den Teams die Freiheit geben, eigene Entscheidungen zu treffen. Dennoch sind bestimmte Leitplanken erforderlich, um das Gesamtkonstrukt funktionsfähig zu halten. Richtig gewählte Leitplanken können zudem den Koordinationsaufwand zwischen den Teams erheblich verringern. Unser Ziel sollte es sein, die Teams zu befähigen, den Großteil der architektonischen Arbeit selbst zu übernehmen, während gleichzeitig sichergestellt wird, dass alle Komponenten zusammenpassen. Hier setzt das Konzept der Team Topologies von Matthew Skelton und Manuel Pais an. Insbesondere der Teamtyp des „Enabling Teams”, welcher, kurz gesagt, andere Teams mit Wissen und Methodik unterstützt.
In diesem Vortrag erhältst Du einen Überblick über diesen Wandel sowie praktische Tipps, wie Du ein zentrales Architekturteam in ein Enabling Team umwandeln kannst. Das Hauptziel dieses Teams ist es, die Architekturarbeit in anderen Teams zu verbessern. Du wirst lernen:
- Welche Stakeholder Du in diesen Prozess einbeziehen solltest
- Warum und wie das zukünftige Enabling-Team ebenfalls befähigt werden muss
- Wo typische Fallstricke dieser Transformation lauern
- Warum dieser Wandel auf agile Weise, geprägt von kontinuierlichem Lernen und Retrospektiven, stattfinden sollte
Zudem werden im Vortrag zahlreiche Praxisbeispiele vorgestellt, die diesen Transformationsprozess begleiten.
Psychology screws it all up! – Wie unser Gehirn Softwareprojekte zum Scheitern bringen kann, ohne dass wir es merken
Manche Entscheidungen beim Entwurf und der Evolution von Softwarearchitekturen lassen sich nicht immer rational begründen. Zahlen, Daten und Fakten sprechen klar für die eine Lösung, jedoch wird sich zu oft “aus dem Bauch heraus” für die andere Lösung entschieden. Was treibt uns hier an? Welche unsichtbaren Kräfte wirken hier auf uns ein, ohne dass wir es merken?
In diesem Talk betrachten wir ein spannendes Feld, welches in der Softwarearchitekturarbeit bisher wenig präsent ist: Behavioral Economics. Wir sehen uns an, woher es kommt, dass wir uns in manchen Situationen von unserem eigenen Gehirn austricksen lassen. Wir lernen aber auch, wie wir uns in der täglichen Arbeit als Softwarearchitekt:innen etwas besser davor schützen. Dazu stelle ich Techniken und Workshop-Formate vor, welche einige Denkfallen vermeiden.
Organisationsdesign mit Team Topologies und dem unFIX Model
Das Buch Team Topologies von Matthew Skelton und Mauel Pais hat sich in den letzten drei Jahren als Referenz für den Entwurf und vor allem auch die Evolution von Delivery Organisationen etabliert. Im Kern werden in Team Topologies vier fundamentale Team-Arten und drei grundlegende Team-Interaktionsformen definiert und in einen evolutionären Ansatz gegossen.
Seit ca. einem Jahr gibt es zudem noch das unFIX Modell von Jurgen Appelo, welches an einigen Stellen stark von Team Topologies beeinflusst ist aber zusätzliche Facetten beleuchtet.
In diesem Vortrag werden beide Ansätze vorgestellt und miteinander verglichen. Des Weiteren gehen wir darauf ein, wie beide Ideen in der praktischen Arbeit zum Einsatz kommen können.
Soziotechnische Systeme - Vom Bergbau ins digitale Zeitalter
Wir sprechen in unserem Vortrag darüber, was soziotechnische Systeme sind, grenzen den Begriff ein und nähern uns den Herausforderungen, denen wir gegenüberstehen, wenn sich Technologie und soziale Systeme verflechten.
DevOps-Praktiken lösungsorientiert anwenden
Die Prinzipien hinter der DevOps-Bewegung sind schon recht alt. Dennoch haben die meisten Unternehmen nach wie vor Probleme damit, DevOps-Praktiken lösungsorientiert anzuwenden. Dadurch bleiben viele der Vorzüge auf der Strecke und die Qualität der zu entwickelnden Produkte sinkt.
Im halbtägigen Webinar mit Anja Kammer und Sven Johann lernen Sie anhand praktischer Beispiele, wie Sie Wissens- und Kompetenzsilos auflösen. Mit Value Stream Mapping und weiteren Techniken können Sie dann Ihre Prozesse analysieren und Flaschenhälse ihrer Software-Delivery identifizieren. Abschließend lernen Sie mit Team Topologies, Community of Practice und dem Spotify-Modell verschiedene, gut funktionierende Praxisbeispiele kennen.
HTTP Feeds: asynchrone Schnittstellen ohne Middleware
In verteilten Systemen eignen sich asynchron entkoppelte Schnittstellen, um Daten zu replizieren und um Domain Events auszutauschen. Bei asynchronen Schnittstellen denkt man dabei häufig sofort an Message Broker wie Apache Kafka, RabbitMQ und ähnliche Technologien.
Dies führ allerdings zu Komplexität und technologischen und organisatorischen Abhängigkeiten.
Dabei können asynchrone Schnittstellen auch ohne zusätzliche Middleware-Systeme einfach über HTTP-APIs realisiert werden.
Wir schauen uns ATOM, Server-Sent Events und Long-Polling-Ansätze wie REST-Feeds näher an und diskutieren die Anforderungen an solche APIs.
INNOQ Technology Lunch: Java – von 11 zu 17 in 45 Minuten
Mit Java 17 gibt es seit dem 14.9. ein neues Long-Term-Support Release, das auf Java 11 folgt. Obwohl die Möglichkeit bestand, alle sechs Monate auf das jeweils aktuellste Zwischenrelease zu migrieren, haben viele auf genau dieses neue LTS-Release gewartet. Bei einem Wechsel kommen jetzt natürlich alle neuen Features der letzten 3 Jahre zusammen. Darum wollen wir uns in diesen 45 Minuten die Zeit nehmen, um uns die, meiner Meinung nach, wichtigsten Features gemeinsam anzuschauen.
INNOQ Technology Lunch: Verborgene Schätze in Git – Von Zebras und Zweigeteiltem
Git ist heute das wohl am weitesten verbreitete Versionskontrollsystem. Die Meisten verwenden aber nur wenige Features wie Commit, Push, Branch und Merge. Für Problemlösungen werden irgendwelche Umwege beschritten, da gar nicht bekannt ist, dass es dafür Hausmittel gibt.
In diesem Vortrag möchte ich von einigen dieser verborgenen Schätze berichten und zeigen, wann es Sinn macht, diese zu verwenden. Wir werden uns unter anderem auf die Suche nach Commits machen, die unsere Anwendung kaputt gemacht haben, Encoding-Problemen entgegentreten, verschiedene farbige Darstellungen unserer Historie ausprobieren, Repositorys aus anderen Versionskontrollsystemen (SVN) importieren und dabei Daten und Inhalte filtern und unsere Konfigurationen aufräumen.
Einiges davon könnt ihr sicherlich in euren Arbeitstag mitnehmen.
Remote Mob Programming – Zuhause, aber nicht alleine
Das ganze Team sitzt in einem Online-Meeting und entwickelt gemeinsam. Einer tippt den Code, die anderen diskutieren. Klingt ungewöhnlich? Das ist Remote Mob Programming, eine spannende Arbeitsweise für verteilte Teams.
Seit über 3 Jahren arbeitet Joshua Töpfer Vollzeit in einem Remote Mob und möchte nicht mehr anders arbeiten. Was es damit auf sich hat, was die Vor- und Nachteile dieser Methodik sind und wie ihr herausfinden könnt, ob diese Methodik etwas für euer Team ist, erfahrt ihr in diesem Vortrag.
Dein Plattform-Team verdient diese Bezeichnung (vermutlich) nicht
Aber verdient solch ein Team eigentlich diese Bezeichnung und was ist der Unterschied zwischen Operations- und Plattform-Teams?
In diesem Vortrag spreche ich außerdem darüber, was interne Development Plattformen eigentlich ausmachen, warum ein Operations-Team keine solche Plattform anbieten kann und was das ganze eigentlich mit DevOps und Einhörnern zu tun hat.
GitOps – Häufige Missverständnisse und übliche Fallstricke
“GitOps ist doch nichts anderes als Infrastructure-as-Code.” Dieses Missverständnis von GitOps hält sich hartnäckig und ist vermutlich der Grund, weshalb das Verständnis über die Vorteile von GitOps noch nicht bei allen Entwickler:innen angekommen ist. Git wird dabei als Schnittstelle für einen Operator verwendet, der Deployment- und Betriebsaufgaben innerhalb der Zielumgebung ausführt. In dieser Session räume ich mit Vorurteilen auf und zeige, welche Fallstricke bei der Anwendung dieser neuen Deployment- und Betriebsstrategie lauern. Außerdem gebe ich Tipps bei der schrittweisen Transformation – weg von traditionellen CI/CD Pipelines hin zu Cloud-Native Deployment und Betrieb mit GitOps.
Module richtig schneiden mithilfe von Domain-Driven Design
Bounded Contexts gehören zum strategischen Domain-Driven Design und sind derzeit in aller Munde. Viele Teams versprechen sich durch die Modularisierung mit Bounded Contexts einen guten fachlichen Schnitt für ihre Software. Es stellt sich jedoch häufig die Frage, wie wir denn überhaupt zu einem guten Bounded-Context-Schnitt kommen.
Genau um diese Frage dreht sich der Vortrag. Ich werde zeigen, wie man mithilfe kollaborativer Modellierungsmethoden (z.B. Event Storming) eine Abgrenzung seiner Problemdomäne erreichen kann und wie man von dort unter Berücksichtigung verschiedener Perspektiven (Regeln, Sprache, Schnittstellen, etc.) zu einem ausgewogenen Bounded-Context-Schnitt kommt.
Everything is not OK: Representing Errors in API Designs
One of the important aspects of platforms and platform engineering is to provide solutions for problems that occur in many APIs of a platform. This way API designers don’t have to spend effort on solving the same problem over and over again, and API consumers can benefit from a more coherent design across the APIs of a platform. How to deal with problems that can occur is one of those questions that every API design needs to address. In this presentation we look at typical issues, some patterns and anti-patterns how to address them, and we also look at some standardized building blocks for representing those patterns. This allows designers and developers to spend less time figuring out what to do when everything is not OK.
Knifflige Probleme in Softwaresystemen lösen
Langsame Entwicklung? Unter Last ächzende Server? Unglückliche User? Es gibt viel anzupacken in der Softwareentwicklung! Aber wo anfangen?
In diesem Vortrag gebe ich eine Einführung in den systematischen Umgang und der Lösung von vertrackten Situationen für Softwarearchitekt:innen. Wir sehen uns fundamentale Denkfehler an, die Problemlösende bereits bei der Sammlung und der Formulierung von „Problemen“ oft begehen. Damit gewappnet, suchen wir systematisch nach den echten Knacknüssen. Wir nutzen die „Landkarte der Probleme“, um zusätzlich Ursachen und Auswirkungen in Beziehung zu setzen. Der neu gewonnen Überblick erlaubt es dann, die uns möglichen Maßnahmen zu finden, die ein Softwaresystem immer mehr ein kleines Stückchen besser machen.
„Domain-Driven Design? Das ist doch nur Bloat!“
… vom Strategieelfenbeinturm in den Codemaschinenraum
Besonders die Werkzeuge des strategischen DDD (z. B. Finden von Bounded Contexts) haben sich in vielen Projekten bewährt. Doch die Umsetzung der gefundenen fachlichen Strukturen im Code kann herausfordernd sein.
Übermäßiger Einsatz von DDD-Konzepten hat teilweise zu Vorurteilen gegenüber DDD geführt („Das ist doch nur Bloat!“), denn nicht jeder Kontext profitiert von zusätzlicher Komplexität im Code.
In diesem Vortrag werden wir nach einer kurzen Einführung in taktisches DDD anhand von Beispielen aus der Praxis Tricks, Fallstricke und Erfahrungen diskutieren, um neue Codebases besser zu strukturieren und Bestandssysteme zu verbessern.
Compliance in hybriden Betriebsumgebungen
Historisch gewachsene Softwaresysteme befinden sich häufig in einem hybriden Betriebs-Setup, das die Vorteile verschiedener Betriebsplattformen nutzt. Legacy-Systeme werden häufig aufgrund bestimmter Compliance-Anforderungen für Datenschutz und Sicherheitsprüfungen On-premises betrieben oder schlicht, weil sie technisch nicht in eine dynamische Betriebsumgebung passen. Weniger kritische und neu entwickelte Systeme finden ihren natürlichen Weg in die Public oder Private Cloud. Mit der Verteilung der Systemkomponenten auf unterschiedliche Betriebsplattformen und dem Wachstum der IT-Organisation wachsen jedoch auch die Herausforderungen, Compliance effektiv sicherzustellen. Zu den wirksamsten Maßnahmen zählen unserer Erfahrung nach die Schaffung unterstützender Teamstrukturen und die Anpassung der Software-Delivery-Prozesse.
Programmierbare CI/CD-Pipelines lokal entwickeln - mit dagger.io
Das Entwickeln von komplexen CI/CD-Pipelines gestaltet sich oft mühsam, da wir bei Änderungen immer wieder den Lauf der Pipelines abwarten müssen. Besonders für Teams mit einem Fokus auf Infrastruktur-, DevOps- und Plattform-Themen sind Pipelines häufig ein zentraler Aspekt ihrer Produkte und schnelles, iteratives Arbeiten ist dort essenziell. Aber wäre es nicht generell großartig komplette Pipelines lokal laufen lassen zu können? Genau da setzt dagger.io an. Durch clevere Kombination von Containern als Laufzeitumgebung für Build-Steps und der (Dependency-)Graph-Execution-Engine BuildKit (Ja, die aus Docker) entsteht ein sehr flexibles Buildsystem, welches sich über SDKs nativ in gewohnten Programmiersprachen verwenden und erweitern lässt. Es ist keine neue Syntax zu lernen und wer schon mit Containern gearbeitet hat, kann die grundlegenden Konzepte schnell erfassen.
Im Talk schauen wir an einem Beispiel auf die verwendeten Konzepte / Komponenten und lernen wie die Brücke zwischen Buildsystem, CI/CD-Server und Plattform geschlagen werden kann. Und das alles ohne YAML.
Data Mesh
Data Mesh ist ein neuer sozio-technischer Ansatz für eine dezentrale Datenarchitektur mit dem Ziel, auch in großen Unternehmen Mehrwert aus Daten zu schöpfen. Im Vortrag geht es um die vier grundlegenden Prinzipien von Data Mesh. Es wird auch explizit darauf eingegangen, was Data Mesh nicht ist. Anschließend lernen wir eine Methodik kennen, um das Herzstück von Data Mesh: ‘Daten Produkte’ zu designen.
Flutter - Build apps for any screen
Flutter ist ein Cross-Plattform UI-Framework, das in den letzten Jahren immer mehr an Popularität gewinnt. Flutter verspricht aus einer Codebase Apps für IOS, Android, Web, Desktop, MacOS, Linux & Embedded erzeugen zu können, die mit einer ähnlichen Performance wie native Apps laufen. Dem werde ich in dem Vortrag auf den Grund gehen und Empfehlungen geben für welche Anwendungsfälle Flutter eine sinnvolle Wahl ist.
Designing AI-powered Products with DDD and Machine Learning Canvas
Developing innovative software products starts with an understanding that AI/ML should solve a real problem. However, the whole process, from identifying the use case to the introduction of ML models in the company, is not trivial. Larysa will talk about EventStorming and the ML Design Canvas, which help domain experts and developers get a shared understanding of a business domain and identify use cases for AI/ML technologies. We formulate each use case as an ML problem using the ML Design Canvas.
Unterstützende Teamstrukturen für die Cloud-native-Transformation
Wir kennen das alle, die neue Unternehmensstrategie liest sich auf den ersten Blick aufregend: mehr Kundenfokus, bessere Produkte bei gleichzeitiger Kostensenkung. Die neue IT-Strategie schlägt dazu eine Cloud-native-Transformation vor, um diese Ziele zu erreichen. Hierzu gehören die neuesten Cloud-Technologien, Self-Service Infrastruktur und Two-Pizza Teams, die kontinuierlich neue Features ausliefern. Natürlich all das, während der Chaos Monkey munter wütet. Aber wie sieht die Welt aus, fünf Jahre später? Wir haben keines der Unternehmensziele erreicht, nur die Infrastrukturkosten sind explodiert.
Um tragfähig in die Cloud zu gehen, bringt oft ein alleiniger Fokus auf neueste Cloud-Technologien nicht den erhofften Erfolg, sondern es braucht auch unterstützende Teamstrukturen und Interaktionsmodi für Entwicklungsteams. Aus unserer Consulting-Praxis bringen wir realistische Fallstricke mit und zeigen, wie wir sie überwunden haben oder besser überwunden hätten. Wir sprechen dabei über Ideen aus Team Topologies, Produktmanagement und interne Entwicklungsplattformen.
Java & Spring Boot im Container
Um Anwendungen zu deployen haben sich Container mittlerweile flächendeckend etabliert. Doch bevor wir einen Container deployen können müssen wir diesen erst einmal bauen. Hierzu gibt es innerhalb des Java-Universums mittlerweile eine große Anzahl an Möglichkeiten. Neben dem bauen gibt es zudem den ein oder anderen Fallstrick um einen Java-Prozess sauber innerhalb des Containers laufen zu lassen.
In dieser Session schauen wir uns deshalb mehrere Wege an eine kleine Spring Boot Anwendung in einen Container zu packen und diese anschließend sauber in diesem auszuführen. Die vorgestellten Tools und Tipps können dabei fast alle auch auf eine nicht Spring-Anwendung angewandt werden.
Das Repository mit Beispielcode ist unter https://github.com/mvitz/javaspektrum-spring-container zu finden.
We‘d love to show you a YouTube video right here. To do that, we need your consent to load third party content from youtube.com
Es kommt drauf an!
In diesem Vortrag durchleuchten wir das „Es kommt drauf an!“ etwas genauer. Dazu nutzen wir das Denk- und Kommunikationswerkzeug „Wardley Maps“. Wardley Maps sind evolvierende Strategielandkarten, welche ein kontextspezifisches Situationsbewusstsein für die eigenen Softwaresysteme schaffen. Sie bieten uns einen Ort zum Diskutieren: Welches Entwicklungspraktiken wollen wir einsetzen? Welches Vorgehensmodell ist das Richtige? Auf welche Technologie sollen wir umstellen? Was bauen wir selbst und was holen wir uns woanders?
Mit Wardley Maps erstellen wir für diese Art von Fragen Landkarten, um unsere eigene Situation besser verstehen zu können. Somit lernen wir unser eigenes „Es kommt drauf an!“ besser kennen, um in Zukunft weniger oft den letzten Hypes zu verfallen.
Just Enough MLOps - wie man mit MLOPs nicht übertreibt
Der Umfang der MLOps-Prozesse und -Technologien hängt von dem AI „Maturity Level“ der jeweiligen Organisation ab. Das Umsetzen von kanonischem MLOps kann zu einer unnötigen Komplexität in der Architektur und Organization führen. Das “AI Readiness”-Framework definiert den Reifegrad einer Organisation bei der Nutzung von ML/AI und ordnet es in eine der drei Stufen ein: Tactical, Strategic und Transformational. In dem Vortrag gehe ich auf die drei “AI-Readiness”-Stufen ein und zeige, wie man eine MLOps Roadmap ableitet.
ChatGPT - „komplexe“ Angriffe leichtgemacht
Durch KI-Systeme wie ChatGPT werden auch als komplizierter eingestufte Angriffe heutzutage immer leichter. Diese neue Generation von KI-unterstützten Angreifern und Angreiferinnen sind effektiver als vorausgehende Generationen und können Organisationen ernsthaft bedrohen.
Der Vortrag zeigt die Methoden auf, die von der neuen Generation von KI-unterstützten Angreifern und Angreiferinnen eingesetzt werden können, beschreibt die Herausforderungen der Erkennung und Abwehr und teilt Best Practices für den Schutz von Systemen und Daten.
Wardley Maps: Das fehlende Puzzlestück zwischen Business und Technik
Ein Einstieg in die visuelle Welt des strategischen Denkens für Softwareentwickelnde
Wardley Maps ist eine Methode, um dein Situationsbewusstsein für Softwaresysteme zu verbessern und deine nächsten Schritte bei Umbauarbeiten zu motivieren: Warum sollten wir besser nicht mehr unser liebgewonnenes, selbstgeschriebenes Logging-Framework weiterentwickeln? Warum müssen wir uns nun plötzlich doch um Dokumentation kümmern? Wie schaffen wir es, unseren Marktmitbegleitern einen Schritt voraus zu sein? Mit Wardley Maps werden komplexe Zusammenhänge zwischen Business und Technik visualisiert und nachvollziehbare Lösungen für die Zukunft aufgezeigt.
Der Vortrag bietet dir anhand zahlreicher Beispiele und Erfahrungen aus dem Entwicklungsalltag einen praxisnahen Einstieg in die visuelle Welt des strategischen Denkens mittels Wardley Maps. Abgerundet wird der Vortrag mit zahlreichen Tipps und Tricks für die nächsten, eigenständigen Schritte.
Aufzeichnung des Talks auf Vimeo: https://vimeo.com/875184620
Introduction to Threat Modeling
Threat Modeling helps identify threats to the software and system landscape, processes, and the organization at an early stage, allowing for the timely development of appropriate countermeasures. Therefore, Threat Modeling should be a standard part of the Software Development Lifecycle.
Remote Mob Programming: Teamgefühl trotz Homeoffice
“Stellt euch vor, ihr seid Teil eines kleinen Teams von vier Softwareentwickler:innen, die von zu Hause aus arbeiten. Ihr trefft euch jeden Tag um 9 Uhr in eurem Zoom-Teamraum. Nach dem obligatorischen Kaffee und etwas Smalltalk wählt ihr die wichtigste User Story aus, diskutiert diese gemeinsam und beginnt dann mit der Umsetzung. Eine Person teilt den Bildschirm und fungiert als Typist, während die anderen über die Umsetzung diskutieren und dem Typist Anweisungen geben. Nach 10 Minuten übergibt der Typist seine aktuelle Arbeit an den nächsten Typist. Dies wird so lange wiederholt, bis die User Story fertig ist, woraufhin ihr die nächst-wichtige User Story auswählt. Um 17 Uhr haltet ihr inne, reflektiert kurz gemeinsam über den Tag und macht dann Feierabend. Klingt verrückt? Ich habe das über drei Jahre lang gemacht. Und ich möchte nicht mehr anders arbeiten. In diesem Vortrag möchte ich euch unsere Geschichte erzählen. Ich möchte euch erzählen, wie wir zusammengearbeitet haben und was die Konsequenzen für uns waren. Kurz gesagt, ich möchte euch erzählen, wie wir trotz Homeoffice zusammengewachsen sind. Aber lasst mich an dieser Stelle ein Wort der Warnung aussprechen: Wenn ihr diese Art der Zusammenarbeit einmal ausprobiert habt, werdet ihr vielleicht nie wieder zurückkehren können!”
Bio
Dr. Simon Harrer ist ein neugieriger Tech Lead bei INNOQ, der es liebt, zusammenzuarbeiten und sein Wissen zu teilen. In seinem letzten Projekt entdeckte er seine bevorzugte Arbeitsweise, nämlich Remote Mob Programming, für die er natürlich eine Website und ein kurzes Buch als Co-Autor verfasste und dabei Remote Mob Programming einsetzte. Neben seinen typischen Beratungsprojekten coacht er heute Remote-Teams, damit sie nicht nur besser zusammenarbeiten, sondern auch zusammenwachsen.
Java by Comparison - Die Geschichte(n) des Buches
Auf Basis von über 6 Jahren Java Lehre an der Uni Bamberg und dem Korrigieren von unzähligen Java-Aufgaben haben wir - Jörg Lenhard, Linus Dietz und Simon Harrer - ein Buch geschrieben, welches die typischen Fehler in einer innovativen Vorher/Nachher-Darstellung aufzeigt und erklärt: Java by Comparison. Durch diese Vergleiche können Einsteigerinnen und Einsteiger schneller eine Intuition für “Clean Code” entwickeln, Profis hilft es, ihre Denkweisen Einsteigern besser zu erklären und vielleicht das eine oder andere aufzufrischen. Wir stellen erst die Geschichte des Buches vor und gehen dann konkret auf ein paar der Vergleiche aus dem Buch ein. Danach wollen wir gemeinsam kreativ sein und mit euch ein von uns entwickeltes Spiel namens Comparison Jeopardy spielen.
Wir freuen uns auf euch!
Gut gemeint! Warum dauert Software-Entwicklung immer länger?
Alle wollen gute Software schnell entwickeln. Alle möchten in ihren Rollen dazu beitragen und bringen aus ihren Sichtweisen gut gemeinte Maßnahmen mit ein:
- Agile Coaches führen SCRUM ein. Also auch JIRA.
- Entwickler:innen entwickeln flexible Lösungen.
- Architekt:innen definieren Referenz-Architekturen.
- Operations führt Kubernetes ein.
- Security Experts erstellen Checklisten.
- HR stellt Ninjas ein.
- Team-Leads wollen den Teams helfen und stellen Jour-Fixes ein.
- CIO fordert Vendor-Independence.
- Irgendjemand führt plötzlich MS Teams ein.
In der Theorie sind diese gut gemeinte Maßnahmen sehr hilfreich. In der Praxis zeigt sich jedoch oft ein anderes Bild: Alle sind irgendwie unzufrieden. Software-Projekte dauern immer länger.
Ihr begleitet in diesem kurzweiligen Vortrag ein initial engagiertes Team, das immer mehr gut gemeinte Maßnahmen aufgedrückt bekommt. Lernt, wie ihr solche Maßnahmen erkennen könnt und wie ihr erfolgreich dagegensteuert.
Wir müssen Datenanalysen selbst in die Hand nehmen
Analytische Daten werden häufig von einem zentralen Daten-Team eingesammelt und verwaltet. Aber wir (als Entwickler:innen) bekommen kaum Feedback. Und das, was wir sehen, ist auch häufig noch falsch. Dabei werden Datenauswertungen immer wichtiger, um unsere Kund:innen zu verstehen und den Nutzen von User Stories zu bewerten. Mit Machine Learning werden zudem ganz neue Funktionen für unsere Systeme ermöglicht.
Mit Data Mesh wird ein soziotechnischer Ansatz vorgestellt, der basierend auf Konzepten wie Domain-driven Design, Product Thinking und Team-Topologies die Verantwortung für Daten an die Entwicklungsteams zurückgibt.
Jochen Christ, Co-Autor von datamesh-architecture.com, zeigt, welche Vorteile sich daraus ergeben, aber auch vor welchen Herausforderungen Entwicklungsteams stehen werden.
Data Mesh aus Entwickler:innen-Perspektive
Daten endlich sinnvoll nutzen! Data Mesh befähigt Entwicklungsteams, innerhalb ihrer Domäne Datenanalysen selbstständig durchzuführen, um ihre Services selbstständig verbessern zu können. Über definierte Schnittstellen werden qualitativ hochwertige analytische Daten als Produkte auch anderen Teams zur Verfügung gestellt.
Zielpublikum: Architekt:innen, Entwickler:innen, Entscheider Voraussetzungen: Keine Schwierigkeitsgrad: Fortgeschritten
CI/CD-Pipelines with dagger.io
… and escape YAML-hell along the way
Build and CI/CD systems are powerful tools which complement each other well.
Systems like Gradle or maven take us a long way from code to running software artifacts. But if we get into a highly collaborative setting the need for a central CI/CD system will emerge soon. Scalable and reproduceable build environments for a team are just too helpful to go without them.
Sadly testing and developing complex pipelines often turns out to be tedious, because we have to wait for the central system to pick up and process our jobs. Wouldn’t it be fabulous if we could develop and run our pipeline steps locally without modifying them? Exactly this is where dagger.io is coming into play.
Through the smart combination of using containers to isolate build steps and cuelang for expressive, declarative and type safe configuration of our pipeline dagger.io creates a flexible build system which - thanks to containers - can be extended in different programming languages.
In the talk we will look into the concepts and components of dagger.io by example and learn about its inherent advantages in comparison to other build and CI/CD systems. We will learn why we definitely want to use cuelang instead of YAML in the future and define our first own build steps.
„Some fixes“ – Commit Messages und Code richtig schreiben
Jeder kennt sie. Niemand mag sie. Einige fürchten sie. Die Rede ist von Software-Dämonen. Verhältnismäßig große Commits mit aussageloser Commit-Nachricht – z.B. „some little changes“ bei mehr als 35 betroffenen Dateien – oder verwirrende Methodennamen wie „void actReqInter4ProcUp(string aHaMesCo)“ sind nur zwei Exemplare von derartigen Dämonen.
Die folgenden zwei Fragen müssen wir uns unter anderem stellen, um solche Dämonen nicht zu beschwören:
- Was genau soll in Commit-Messages stehen?
- Wie benennt man diese Funktion/dieses Member?
Beide Fragen zielen auf das Gleiche ab: das Benennen von Dingen, die wir geschaffen haben. Dieser Vortrag gibt mit vielen zum Teil lustigen aber auch schrecklichen Beispielen aus dem Projekt-Alltag auf beide Fragen Antworten. Und praktische Tipps stellen dar, wie ihr in Zukunft selbst Dämonen austreiben könnt.
Dieser Vortrag richtet sich an unerfahrene sowie auch an erfahrene Entwicklerinnen und Entwickler, die sich genau diese Fragen immer wieder stellen und bisher keine zufriedenstellende Antwort gefunden haben.
Aufzeichnung des Livestreams
We‘d love to show you a YouTube video right here. To do that, we need your consent to load third party content from youtube.com
Von einer, die auszog, die (Software-)Welt zu verbessern
Als Kim frisch von der Uni in ihr erstes Projekt kommt, merkt sie schnell, dass selbst heute Werkzeuge und Prozesse zur Qualitätssicherung selten vorhanden sind: unsauberer Code, keine Regeln und kaum Tool-Unterstützung. Kim führt Coding-Guidelines, Qualitätstools und Reviews ein, oft gegen den Willen der Teammitglieder. Sie merkt nicht, wieviel Kraft sie diese Konflikte kosten - und dass sie sich dabei zwar sehr einbringt, aber den Erfolg gefährdet.
Kim wechselt den Arbeitgeber und findet eine ähnliche Situation vor: keine Regeln, keine Automatisierung und keine gute Softwarequalität. Doch dieses Mal macht sie alles anders und erarbeitet gemeinsam mit ihrem Team verschiedene Maßnahmen.
Dieser Vortrag zeigt mit zwei Beispielen, dass Softwarequalität eine wichtige Rolle spielen muss und nicht Werkzeuge entscheidend sind, sondern die Einstellung der Teammitglieder zu verbessern, zum Beispiel über “Collective Ownership of Code” oder die “Pfadfinderregel”.
Schluss mit Cargo Culting!
Hast du letztens in nem Blog ein Framework entdeckt und es gleich am nächsten Tag ins eigene Projekt „zum damit Spielen” eingebaut? Musstest du deine Anwendung schon öfter „skalierbarer”, „performanter” oder „zuverlässiger” machen und zogst dir einen Tech-Stack von den “Big Five” rein, um damit das nächste Amazon, Netflix, WhatEver zu werden?
Wahrscheinlich klang das zu dem Zeitpunkt logisch und nach einer superguten Idee. Aber ein paar Monate später weiß man selbst oft gar nicht mehr, was der eigentliche Grund für den Einsatz war. Man macht es, ohne genau zu wissen, warum: Cargo Cult par excellence!
In diesem Vortrag zeige ich, wie sich Entscheidungen für Technologien, Vorgehen und Praktiken strukturiert auswählen und nachvollziehbar motivieren lassen. Wir sehen uns an, was uns bei der Auswahl (oft unerkannt) antreibt. Dazu fischen wird zuerst die geforderte Qualität für Features aus User Stories und bauen uns ein Netz aus den qualitativen Ansprüchen für den Überblick. Mit einer ordentlichen Portion Architekturtaktiken in den Segeln schippern wir in den sicheren Hafen der fundierten Entscheidungen.
Bring data teams together with data contracts
Key takeaways
- You will learn, how to use data contracts as a collaboration tool to discuss data requirements.
- You will also learn, how data contracts be used for automation, later in the development process.
- You will understand, that a data contract is more than just a schema.
- You will be able to write your first data contract as a YAML document.
In the world of software engineering, we know how important explicit, clearly documented, and stable interfaces are, and what effects unannounced breaking changes can have. We use Swagger, OpenAPI or AsyncAPI for this purpose, and on top of that tools for code generation or contract-based testing. In the world of data, there has never been anything comparable, and unannounced breaking changes, such as schema changes, are unfortunately common there.
Data contracts are something like OpenAPI, but for data. Data contracts bring the producer of data and their consumers together. Data Contracts allow the specification of the structure of the data, and its quality requirements. Data contracts contain sample data, and a semantic description. Data contracts specify terms of use for the data. Consumers can rely on data contracts.
In this talk, I want to introduce the Data Contract Specification (datacontract.com) in more detail. I want to show how interfaces are described in the world of data, and how this interface documentation differs from the world of software engineering. We will design an interface together in Data Contract Studio (studio.datacontract.com), and then use the Data Contract CLI (github.com/datacontract/cli) to simulate detecting a breaking change.
Enhancing LLMs to build fact-based Chatbots for your Domain
Large Language Models (LLM) are a new technology that has taken over the world in no time. AI chatbots like ChatGPT have made AI controllable by using natural language and thus accessible and extremely useful to the general public.
Most people have probably already experimented with this or another chatbot and had similar experiences: They know the answer to almost every question, write detailed texts and even respond to counter-questions. There is one very big problem: The chatbots hallucinate, i.e. they invent content that sounds correct but is not correct. In addition, due to the vast amount of training data, it is no longer possible to reconstruct where a piece of information came from.
We have dealt with this problem and tried to find a solution by which a chatbot builds its answers within a given domain and gives sources for the origin of the information used from the domain.
Such knowledge-based chatbots can be used in practically any domain, for example, to chat with documentation, contents of a database or website, using natural language, without the risk of hallucination. We also looked at ideas such as the use of open source LLMs (e.g. LLama2), scalability and cost management.
Blick hinter die Kulissen – Developer-Portale mit backstage.io leicht gemacht
Unsere Systeme werden immer komplexer und wir verwenden Ansätze wie Microservices oder Functions, um unsere Systeme immer kleinteiliger aufzuteilen. Dadurch verlieren wir jedoch schnell den Überblick über das gesamte System. Wir stellen uns Fragen wie: Welche Services und Libraries gibt es? Wer ist für sie verantwortlich? Wo finde ich den Code und die API-Dokumentationen? Welche Services werden von anderen genutzt und wo befinden sie sich im Lebenszyklus? Ist der Service aktiv und wann wurde er zuletzt aktualisiert? Die Antworten auf diese und weitere Fragen sind im gesamten System verstreut - einige sind in Wikis, andere in der Betriebsplattform oder in der Build-Umgebung. Im schlimmsten Fall besitzt nur ein kleiner Kreis das notwendige Wissen. Um diese Informationsflut unter Kontrolle zu bekommen, benötigen wir eine Einstiegshilfe, die die Informationen zentralisiert und auffindbar macht. In diesem Vortrag werden wir Backstage vorstellen, ein Framework für die Entwicklung und den Betrieb eines solchen zentralen Entwicklungsportals. Wir werden einen Blick hinter die Kulissen werfen, um zu sehen, wie es funktioniert und wie man es auf die eigenen Bedürfnisse anpassen kann.
Architekturoptionen
„Hättet ihr das nicht früher sagen können, dann hätten wir das System anders gebaut!“. Wie seltsam und frustrierend das Leben in der IT manchmal ist, merkt man, wenn spätestens zum dritten Mal Dinge, die “garantiert nie passieren” werden, dann doch passieren. Schade, wenn dann die Aufwände unnötig hoch sind, um unsere Systeme an diese Veränderung anzupassen.
Architekturoptionen können in solchen Situationen Gold wert sein. Dabei investieren wir zu einem früheren Zeitpunkt für einen günstigen Preis (also vergleichsweise wenig Aufwand) in das Bauen einer Architekturoption (z. B. das Einziehen eines Interfaces), die es uns ermöglicht, später zu einem wesentlich günstigeren Preis eine Option zu ziehen (z. B. das Herauslösen eines Moduls als eigener Microservice).
In diesem Talk erkunden wir den schmalen Grat zwischen Overengineering und fahrlässiger Hartcodierung. Ich werde euch die Theorie der Realoptionen vorstellen und zeigen, wie sie euch als Softwarearchitektinnen oder Softwarearchitekten helfen kann, über Projektrisiken nachzudenken und diese gegebenenfalls abzumildern. Anschließend werden wir uns verschiedene Beispiele für Architekturoptionen ansehen und ihr werdet sehen, dass einige dieser Optionen eine Investition sind, die nahezu jedes Softwaresystem eingehen sollte.
Digitale Produktentwicklung: Mindset, Menschen und Methoden
Was haben Entwicklung und Architektur mit dem Business und den Nutzer:innen zu tun?
Die Antwort ist einfach: sehr viel. Das gesamte Team sollte verstehen, für wen das Produkt gedacht ist, an dem es arbeitet, und welchem höheren Ziel die einzelnen Aufgaben dienen. Niemand sollte Aufgaben einfach nur abarbeiten, die in Tickets beschrieben sind.
Die digitale Produktentwicklung ist nicht nur Bestandteil eines Teams, das sich „die Produktmenschen“ oder „die UXler“ nennt. Sie ist ein elementarer Bestandteil der digitalen Transformation und bildet die Basis für erfolgreiche – oder eben nicht erfolgreiche – digitale Produkte.
Die Digitalisierung schreitet kontinuierlich voran. Daher müssen Prozesse, Strukturen und Wertschöpfungsketten flexibel und regelmäßig angepasst werden. Das bedeutet, dass unsere Software und die zugrundeliegende Architektur ebenso reagieren müssen.
Wie schaffen wir es jedoch, als Team mit dieser Geschwindigkeit Schritt zu halten und unsere Software, Services und Produkte dennoch qualitativ hochwertig zu liefern? Wie müssen wir zusammenarbeiten, um flexibel auf den Markt und die Menschen dahinter reagieren zu können?
In diesem Talk fokussieren wir uns auf digitale Produktentwicklung – jedoch mit dem Bewusstsein, dass ein harmonisches Zusammenspiel von Mindset, Menschen und Methode gegeben sein muss.