Craftsmanship is not enough
Would you fly in a plane designed by a craftsman or would you prefer your aircraft to be designed by engineers? Engineering is the application of iterative, empirical, practical science to real-world problems. Craftsmanship is a wonderful thing, and as a reaction to the terrible abuses of the term Engineering in software development Software Craftsmanship has helped in our learning of what really works.
The term "Software Engineering" has gained a bad reputation. It implies "Big up-front design" and "Mathematically provable models" in place of working code. However, that is down to our interpretation, not a problem with "Engineering" as a discipline.
In recent years we have discovered what really works in software development. Not everyone practices approaches like Continuous Delivery, but it is widely seen as representing the current state-of-the-art in software development. This is because at its root CD is about the application of an iterative, practical, empirical, maybe even science based approach to solving problems in software development. Is this a form of software engineering?
Software isn't bridge-building, it is not car or aircraft development either, but then neither is Chemical Engineering, neither is Electrical Engineering. Engineering is different in different disciplines. Maybe it is time for us to begin thinking about retrieving the term "Software Engineering" maybe it is time to define what our "Engineering" discipline should entail.
Hier stellen die Trainer, deren Workshops im Anschluss folgen, den Inhalt ihrer Workshops vor. Diese kurze Einführung soll den Teilnehmern dabei helfen, sich für einen Workshop zu entscheiden.
Inzwischen wissen wir, Microservices sind kein free lunch. Der Service-Schnitt macht sich nicht von selbst, und wenn man einen gefunden hat, müssten die Services doch wieder integriert werden. Das wirft Fragen zur Authentisierung, Autorisierung, den Integrationsprotokollen und ganzheitlichen Monitoring-, Log- und Tracing-Konzepten auf, die beantwortet und implementiert werden müssen. All diese Funktionen, die wir rund um unsere Microservices „nebenbei“ implementieren, haben ein wenig überhand genommen. Genau das verspricht ein Service Mesh zu ändern. Es hebt Monitoring, Resilienz, Routing und Sicherheit in die Infrastruktur. In diesem Workshop erfahren Sie, wie ein Service Mesh das macht und was der Preis dafür ist. Wir werden konkrete Technologien (z. B. Istio) und verschiedene Anwendungsfälle für Service Meshes diskutieren.
Zahlreiche Softwareprojekte scheitern nicht nur wegen der gewählten Technologien, sondern vor allem an einem Mangel an interdisziplinärer Kommunikation. Entwickler und Fachleute sprechen verschiedene Sprachen und verstehen einander nicht. In den vergangenen Jahren hat sich Domain-driven Design (DDD) zunehmend als Vorgehensweise etabliert, das Problem zu lösen. Doch wie funktioniert DDD, und welchen Bezug hat es zu Event-Sourcing und CQRS? Die drei Konzepte werden häufig in einen Topf geworfen, sind tatsächlich aber unabhängig voneinander – unter gewissen Umständen können sie einander aber ergänzen. In dem Workshop entwirren Sie gemeinsam mit Golo Roden das Geflecht. Außerdem zeigt er Ihnen, wie man auf der Basis von DDD, Event-Sourcing und CQRS eine Anwendung für die Cloud mit JavaScript entwickeln kann.
Die Teilnehmer bringen Geschichten aus Ihrer Domain mit; wir helfen ihnen, neue Erkenntnisse zu gewinnen, indem wir ihre Domain Stories modellieren. Warum? Um eine Domäne zu erforschen, müssen Sie verschiedene Perspektiven einnehmen. Domain Storytelling hilft Ihnen, Ihre Domain aus einem anderen Blickwinkel zu betrachten: Wie arbeiten Menschen zusammen? Welche Arbeitsobjekte verwenden sie? Wie unterstützt Software die Prozesse?
Der praktische Teil stellt Domain Storytelling mit einer bekannten Beispieldomäne vor. Dann ist jeder eingeladen, seinen Beitrag zu leisten: Entweder er/sie teilt eine Geschichte aus seiner/ihrer Domain, oder er/sie modelliert die Geschichte von jemandem. (Keine Sorge, wir helfen dabei.)
Nach dem praktischen Teil haben die Teilnehmer Domain Storytelling in der Praxis erlebt. Sie werden ein Verständnis davon haben, wann und wie man es einsetzt.
Dieser Hands-on-Workshop ist für jeden geeignet – es sind keine Vorkenntnisse mit DDD oder Domain Storytelling erforderlich. Wenn Sie bereits mit Domain Storytelling vertraut sind, ist dies Ihre Chance, zu üben und Coaching zu erhalten!
Hier stellen die Trainer, deren Workshops im Anschluss folgen, den Inhalt ihrer Workshops vor. Diese kurze Einführung soll den Teilnehmern dabei helfen, sich für einen Workshop zu entscheiden.
Browser bieten heute mehr Features als je zuvor. Sie ermöglichen uns, moderne, schicke Anwendungen zu bauen, die für alle benutzbar sind und durch gute Architektur wartbar sind. Und das, ohne von irgendwelchen Frameworks abhängig zu sein.
In diesem interaktiven Workshop zeigen wir, wie sich ein Webfrontend in wiederverwendbare Komponenten zerlegen lässt. Danach setzen wir ein paar dieser Komponenten beispielhaft um und nutzen dafür moderne Tools, Entwicklungsmethodiken und Architekturmuster. Ansprechen werden wir auch die besonderen Herausforderungen, die bei verteilten Systemen mit Microservices oder Self-Contained-Systems zu Tage treten.
Storystorming ist eine Kombination aus Methoden, um Geschäftsprozesse, Arbeitsabläufe und Customer Journeys zu analysieren, in gemeinsamen Workshops zu gestalten und in organisatorische bzw. technische Deliverables zu verfeinern. Storystorming wurzelt tief im Domain-Driven Design, verknüpft Ideen aus dem Impact Mapping, Event Storming, Domain Storytelling, User Story Mapping und Process Modeling und schlägt eine Brücke in Form gemeinsamer, farblich wiedererkennbarer Grundbausteine. Dadurch werden die in klassischer Form recht unterschiedlichen Werkzeuge einfacher zugänglich. Die erzielten Ergebnisse können haptisch verknüpft und somit gedanklich leicht assoziiert werden.
In diesem Hands-on Workshop verschaffen wir uns mithilfe von Storystorming und Ideen aus dem Impact Mapping einen strategischen Überblick über eine viele Aspekte aufweisende Geschäftsidee. Wir erzählen einander konkrete Kundengeschichten, zeichnen diese visuell auf und verfeinern sie. Auf diesem Weg erarbeiten wir uns eine erste „Backbone“ der User Story Map für eine Produkt – bzw. Serviceidee, welche wir im Rahmen der verbleibenden Zeit mit Details anreichern und in Richtung eines Minimum Viable Product weiterentwickeln.
Haben Ihre Requirements-Engineers, Product-Owner oder Produktmanager Sie im Stich gelassen, was klare Anforderungen angeht? Leiden Sie unter vagen, unklaren oder fehlenden Anforderungen, ohne konsistente Prioritäten? Willkommen im Club der “Im Stich Gelassenen”.
Für Software- und Systemarchitektur stellen „gute" Anforderungen und Randbedingungen die Basis vieler Entscheidungen dar. Alle Beteiligten geben vor, das Prinzip “garbage-in, garbage-out” zu kennen, aber von der Anforderungsseite scheinen sich in der Praxis doch eher wenige dran zu halten.
Da braucht es konstruktive Abhilfe: Selbst sind die pragmatischen ArchitektInnen.
Nein, wir wollen auf keinen Fall die Rolle von PO, Business-Analysten und Requirements-Engineers übernehmen - sondern lediglich die architekturrelevanten Anforderungen so weit klären, dass wir auf dieser Basis robuste Architekturentscheidungen treffen können.
In der Session behandeln wir die Grundsätze von “Anforderungsklärung” für Softwarearchitektur. Wir starten bei grundlegendem Scoping und der Kontextabgrenzung, kümmern uns um Ermittlung (architekturrelevanter) funktionaler Anforderungen und tauchen dann in die kritischen Qualitätsziele und -anforderungen ab. Darüber hinaus beleuchten wir den Nutzen von „Behavior Driven Development“ für die Anforderungsklärung.
Sie bekommen methodische Tipps, gepaart mit Beispiel aus dem echten Leben.
Wir brauchen dafür eine (Web)App" - Diese und ähnliche Sätze fallen sehr häufig, wenn es um die Entwicklung digitaler Produkte und Services geht. Es passiert sehr schnell, dass wir in konkrete und schon bestehende Lösungsszenarien denken und unsere Architekturen somit automatisch auf diesen Szenarien aufbauen.
Durch die Allzweck-Waffe Smartphone sind wir es mittlerweile gewohnt, fast alles auf einen Display zu bringen, was in unseren Köpfen in Form einer Idee schwebt - Ohne vielleicht einen Schritt zurück zu gehen um uns über den Nutzer in seinem konkreten Kontext Gedanken zu machen. Ist eine angepriesene smarte Lösung zum Beispiel wirklich immer smart?!
Oft kann ein GUI sogar den Nutzer eher stören, als dass es ein konkretes Problem löst. Wie sinnvoll ist es also seine Produktideen direkt als Bedienelement zu denken? Gibt es in der heutigen Zeit nicht Alternativen, mit denen wir den Menschen, der hinter der Benutzung steht, sinnvoller unterstützen können, als mit grafischen User Interaces?
In meinem Talk möchte ich über die Probleme von grafischen UserInterfaces sprechen, um gleichzeitig zu alternativen Denkansätze zu inspirieren. Die Auswirkungen auf die tägliche Architekturarbeit möchte ich auch gerne in der Runde diskutieren.
Hier stellen die Trainer, deren Workshops im Anschluss folgen, den Inhalt ihrer Workshops vor. Diese kurze Einführung soll den Teilnehmern dabei helfen, sich für einen Workshop zu entscheiden.
Heute entwickeln niemand mehr Software auf der grünen Wiese, sondern man repariert, erweitert, verändert und baut vorhandene Software aus. Weil der Code immer komplexer wird, fangen wir an, Erweiterungen zu programmieren, von denen wir wissen, dass sie aus Architektursicht schlecht sind. Aber das ist die einzige Lösung, die, wenn wir Glück haben, noch funktioniert. In diesem Workshop erfahren Sie, wie Sie Ihre alte Codebasis Schritt für Schritt auf den Pfad der Tugend zurückbringen können, sodass Wartung wieder Spaß macht.
Hier stellen die Trainer, deren Workshops im Anschluss folgen, den Inhalt ihrer Workshops vor. Diese kurze Einführung soll den Teilnehmern dabei helfen, sich für einen Workshop zu entscheiden.
Nicht-manuelle Tests stellen die Qualität einer Softwarelösung auf effiziente Weise sicher und sind Standard in der Software-Entwicklung. Auch weil die Automatisierung in der Regel früher Rückmeldung gibt zu Fehlern und anderen Unschönheiten. Der Ansatz ist auf verschiedenen funktionalen Ebenen gängig — Unit-Tests, Modul-Tests, Integrationstests... Wäre es nicht toll, auch Aspekte Eurer Softwarearchitektur automatisch testen zu können?
Was heißt es überhaupt, Eure Architektur zu testen? In diesem Workshop diskutieren wir zunächst kurz verschiedene Ansatzpunkte und Möglichkeiten dazu. Und wir räumen mit Mythen und Missverständnissen auf. So ist eine Überprüfung, ob eine Implementierung bestimmte Vorgaben
einhält, zwar für einzelne Aspekte problemlos möglich. Wenn die Vorgaben nichts taugen ist das Ergebnis gleichzeitig uninteressant (und die Tests sind Verschwendung).
Konsequenterweise konzentrieren wir uns anschließend auf effektive Ansätze aus dem Chaos Engeneering und Fitness Functions. Denn diese können bei richtiger Anwendung die Wirksamkeit Eurer Architekturansätze langfristig absichern. Und sie erlauben eine zielgerichtete Weiterentwicklung Eurer Softwarelösung.
Anders als typische Literatur über Evolutionäre Architekturen hören wir nicht da auf, wo es konkret wird. Sondern zeigen Real World-Beispiele und Implementierunsoptionen im Freiflug.
Interaktive Elemente und die Anwendung der Konzepte auf Eure Softwarlösungen runden den Workshop ab.
Der Workshop dreht sich um sämtliche Aspekte des strategischen Domain-driven Designs. Sie werden einerseits alle wichtigen Bestandteile wie beispielsweise Subdomains, Bounded Contexts und Context Maps kennenlernen. Allerdings wird der Workshop zudem noch darauf eingehen wie man diese Bestandteile in moderne soziotechnsiche Architekturen, die neben technischer und fachlicher Aspekte auch noch organisatorische Dynamiken berücksichtigen, überführen kann. Der Workshop besteht aus 40% Theorie und 60% praktischer Anwendung auf Basis einer nicht-trivialen Fallstudie.
Es werden folgende Themen behandelt:
- Überblick strategisches Design
- Unterscheidung zwischen Problem- und Lösungsraum
- Mapping von Fach- und Softwarearchitektur
- Subdomains und deren Kategorisierung
- Bounded Contexts und der Schnitt von selbigen
- Hilfe beim Schnitt von Bounded Contexts und Subdomains durch kollaborative Modellierungsmethoden (Event Storming und Domain Storytelling)
- Context Maps
Weitere Informationen folgen in Kürze!
Hier stellen die Trainer, deren Workshops im Anschluss folgen, den Inhalt ihrer Workshops vor. Diese kurze Einführung soll den Teilnehmern dabei helfen, sich für einen Workshop zu entscheiden.
Did you know that there are large corporates out there with hundreds of customised versions of the same ERP system built by different teams serving the same purpose? Or, have you observed shadow IT, where business departments take matters into their own hands when not getting attention in the IT department?
Complex legacy architecture all too often reduce the competitive edge and business agility in large organisations, as well as becoming both more costly to maintain and expand upon. Resolving service problems takes a long time and new initiatives to fix and improve takes too long to realise, if at all.
Value stream mapping and business process diagrams may provide some insight, but they will not necessarily give you the proper context as duplications and bias in your ecosystem often is well hidden. You lack the necessary situational awareness.
When walking out of this session you will have the tools needed to gain a holistic view of your company, including the ability to map out IT's current situation
Microservices lösen viele Herausforderungen vorhandener monolithischer Systeme. Aber heutzutage entstehen kaum Systeme auf der grünen Wiese. So ist die Migration zu Microservices das typische Vorgehen beim Einführen einer Microservices-Architektur. Dieser Workshop diskutiert Migrationsansätze, die sich an Fachlichkeit oder Technik orientieren. Dabei geht es um die Abwägung zwischen dem Aufwand und dem Nutzen einer Migration. Wir beleuchten, wie eine Migration möglichst schnell Nutzen
erzeugt, ob eine vollständige Migration überhaupt sinnvoll ist oder ob man auf eine hybride Architektur mit Monolithen und Microservices zusteuert.
Hier stellen die Trainer*innen, deren Workshops im Anschluss folgen, den Inhalt ihrer Workshops vor. Diese kurze Einführung soll den Teilnehmer*innen dabei helfen, sich für einen Workshop zu entscheiden.
Seit einigen Jahren geistert die Idee der "sauberen Architektur" durch die IT Welt. Zugegeben, der Ansatz die Ideen der Clean Code Bewegung auf die Ebene der Architektur zu heben, klingt verlockend. Aber lassen sich die von dort bekannten Prinzipien wirklich auf die Architekturebene abstrahieren? In diesem Workshop wollen wir diese Frage beantworten und diskutieren, wie sich von uns entworfene Architekturen durch die Ansätze evtl. geändert hätten oder auch schon haben. Dabei werden ausgewählte Aspekte der Clean Architecture betrachtet und auf ihre "Alltagstauglichkeit" hin untersucht.
Reactive software development is becoming essential to implementing responsive, resilient, elastic, and message-driven solutions, yet by aligning scale and throughput with business-driven model fluency of your core initiatives, you can achieve critical differentiating competitive advantage. Rarely achieved in past years, fully utilized hardware can now reach the performance, throughput, and scale possible with Reactive software development’s responsive, resilient, elastic, and message-driven solutions. As crucial, fiscally-minded technical stakeholders see the urgent need to partner with business leaders in order to create software that delivers critical, differentiating innovations that are in demand to gain and maintain leadership in today’s fast-paced commercial markets.
Learn how to use Java and other JVM languages to develop collaborating and integrated Reactive DDD.
Deep Learning ist ein Teilgebiet des Machine Learnings welches mit künstlichen neuronalen Netze arbeitet. Bedingt durch leistungsfähigere Hardware, neue Netzwerkarchitekturen und große, hochqualitative Datensets konnten in den letzten Jahren, insbesondere bei der Verarbeitung von Bildern, Videos, Text- und Sprachdaten enorme Fortschritte erzielt werden.
Dieser Workshop liefert einen Überblick über das Thema Deep Learning und bietet die Möglichkeit erste Hands-On Erfahrung mit Tensorflow zu sammeln. Dabei liegt der Fokus auf ausgewählten Einsatzbereichen aus dem Bereich Computer Vision.
Inhalt:
- Überblick über Machine Learning & Deep Learning
- Überblick über Möglichkeiten und Voraussetzungen für die Nutzung von Deep Learning
- Überblick über die Deep Learning Services von Google Cloud Plattform, AWS und Azure
- Einführung in das Python Framework Tensorflow und die Keras API
- Übungen mit Tensorflow