Biographie
Ich bin ein Software-Architekt und Software-Entwickler mit einem Fokus auf die .Net Plattform und Azure.
Ich baue gerne Produkte mit einem kurzen und häufigen Feedback-Zyklus - einige würden das agil oder Continuous Delivery nennen.
Neben der Arbeit am Zeiterfassungs-Produkt
Biography
I'm a software architect and software developer with a focus on the .Net platform and Azure.
I like to build products with a short and frequent feedback loop to its users and customers - some would call this agile or continuous delivery.
Besides working on the time tracking product
Training und Beratung 220 CHF/h Aufwand
-
Architektur
Dein Team braucht Unterstützung beim Design der Zielarchitektur und bei der Bestimmung des Wegs zur Zielarchitektur?
Zusammen mit deinem Team erarbeiten wir passend zu geforderten Qualitätsattributen die Architektur und die Evolutionsschritte vom Ist-Zustand bis zur Zielarchitektur.
-
Engineering Practices
Du möchtest in deinem Team das Wissen zu Themen wie Test Driven Development (TDD/BDD/ATDD), Continuous Delivery (CI/CD), Pair Programming steigern?
Ich biete massgeschneiderte Workshops und Trainings an, um dein Team in diesen Punkten weiterzubringen.
Meine aktuellen Vortäge und Workshops
Präsentationen
-
Architekturaspekte – evolutionäre Architekturentwicklung
Wenn wir mit der Architektur einer neuen Software starten, dann müssen wir an vieles denken. Unter anderem an 23 Architekturaspekte, wie Persistenz, Kommunikation, Übersetzungen, Archivierung, Skalierung, Security, Exception Handling usw.
Durch eine evolutionäre Herangehensweise können wir diese Aspekte schrittweise angehen und ermöglichen es uns, zuerst viel über das zu lösende Problem und mögliche Lösungen zu lernen, bevor wir entscheiden müssen. Statt eines Big-Design-Up-Front auf Basis vieler Annahmen, schaffen wir uns Optionen unter welchen wir möglichst spät die optimale auswählen können.
Nach dieser Präsentation kennt ihr die Architekturaspekte, welche mir wichtig sind beim Arbeiten an der Architektur und wie diese in vielen kleinen Schritten umgesetzt werden können.
-
OOP, FP oder ein Mix?
Moderne Programmiersprachen unterstützen sowohl objektorientierte als auch funktionale Programmierung in grossen Teilen.
Doch was sind die Unterschiede der beiden Ansätze und wo eignet sich der eine besser als der andere? Oder lassen sich die beiden Programmierparadigmen sogar kombinieren?
In dieser Session schauen wir uns die Unterschiede und Gemeinsamkeiten am Beispiel von C# und F# Code an.
-
Mit Einfachheit zur agilen Architektur
Die Architektur von modernen Softwaresystemen muss sich ständig anpassen an geänderte Benutzerbedürfnisse, Technologieänderungen und neue technische Möglichkeiten. Einfachheit – Simplicity – ist bei weitem der wichtigste Faktor, um die Evolution der Softwarearchitektur zu unterstützen.
In diesem Vortrag zeige ich euch ein Modell, um über Architektureinfachheit zu reflektieren und mehrere Techniken, um die Softwarearchitektur so simpel wie möglich zu gestalten.
-
Warum dein Entwicklerleben mit F# einfacher wäre
Wer mit .NET entwickelt, macht das wahrscheinlich mit C#. Doch gerade F# hat großes Potenzial, die tägliche Arbeit zu erleichtern. Denn alles, was C# kann, geht auch mit F#, und das oft leichtgewichtiger und weniger fehleranfällig.
Möchtest du sehen, wo die Unterschiede liegen und warum F# eine gute Programmiersprache für ganz normale Softwareentwicklung ist, dann komm in diese Session!
Und keine Angst, der Vortrag ist frei von Functional-Programming-Fachchinesisch – versprochen!
-
Das Caretaker-Modell – wenn Scrum zu langsam ist
Das Manifest der agilen Softwareentwicklung sagt uns, wir sollen bessere Wege erschließen, um Software zu entwickeln.
Wir haben Scrum hinter uns gelassen, weil wir unter anderem schneller dazu gelernt haben als der Sprint lang war und der Sprint uns mehr blockiert als unterstützt hat. Scrum fühlte sich für uns zu langsam und zu unflexibel an.
Stattdessen haben wir eine Arbeitsweise gefunden, welche uns besser unterstützt, durch Trennung der Zyklen für Planung, Verbesserung, Retrospektiven, Auslieferung und Feedback. Und die Möglichkeit, dass sich jedes Teammitglied von Anfang bis Ende einbringen kann, hat die Motivation im Team stark erhöht. Dies ist das Caretaker-Modell.
In dieser Präsentation erkläre ich euch, wie das Caretaker-Modell funktioniert, warum das Caretaker-Modell viel besser zu uns passt und zu dir und deinem Team möglicherweise auch.
-
Du willst fehlschlagen? Dann mach ein Projekt!
Die Ära der Projekte in der Softwareentwicklung ist vorbei. Mit Projekten ist es nicht mehr möglich, die heutige IT-Welt in den Griff zu bekommen. Komplexe Zusammenhänge zwischen Stakeholdern und Umsystemen sowie rasant ändernde Technologien sind nicht mehr beherrschbar.
Das Resultat: zu teuer, zu spät, am Problem vorbei entwickelt.
Statt in Projekten zu denken, müssen wir uns auf den Produkt-Lebenszyklus ausrichten: Geburt, Weiterentwicklung, Ablösung.
Ein Denkanstoss für neue Wege in der Softwarenentwicklung.
Workshops
-
Agile Architektur / Evolvable Architecture
Heutige Software-Systeme sind ständigem Wandel unterlegen weil sich die Business-Anforderungen oder die technischen Möglichkeiten ändern.
Softwarearchitektur beschreibt die grobe Zerlegung eines Systems und die Kommunikation dieser Einzelteile.
Damit die Architektur das agile Vorgehen unterstützt, muss sie in kleinen Schritten mit schnellen Feedback-Zyklen parallel zu den Funktionalitäten erstellt werden.
In diesem Workshop lernst du, wie agile Architekturarbeit aussieht: Modularisierung einer Domäne, Architekturentscheide aufteilen und in Etappen lösen, Einfachheit als Schlüssel für Veränderbarkeit, die Rolle des Architekten in einem agilen Team und die 23 zu betrachtenden Architekturaspekte.
-
Als Team Entscheide treffen
Wir treffen jeden Tag unzählige Entscheide: Kleine (mach ich da nun einen Zeilenumbruch?), mittlere (welche Lösungsvariante setzen wir um?) bis grosse (bauen wir dieses Produkt?). Doch wie machen wir das überhaupt? Eher zufällig oder strikt nach Prozess? Alleine oder im Team? Und was wenn wir uns nicht einig werden? In dieser Session tauschen wir uns darüber aus, was wir wie und wann entscheiden und finden bessere Wege für bessere Entscheide.
Wir werden unter anderen folgende Themen betrachten:
- Vorbereiten von Entscheidungen
- Auswahl der Entscheidungsmethode basierend auf der Art der Entscheidung und Kriterien für Beurteilung der Art der Entscheidung
- Kommunizieren und Dokumentieren von Entscheidungen
- Entscheidungen rückblickend validieren
-
Problem Solving für Softwareentwickler
Jeder Softwareentwickler löst täglich viele kleine und grosse Probleme, zum Beispiel Architektur-, Design- oder Technologieprobleme. Während die kleinen Probleme schnell behoben sind, ist bei grösseren Problemen oft die Gefahr, einfach die erstbeste Idee umzusetzen.
In diesem Workshop zeige ich auf, wie schwierige Probleme mit einer geordneten Problemlösung einfacher lösbar sind und langfristig zu besseren Ergebnissen führen. Am Beispiel eines realen Projekts (anonymisiert) üben wir das Problemlösen.
Wir befassen uns mit den folgenden Themen:
- Eigenschaften von schwierigen Probleme
- Schwierigkeiten mit der Lösungsfindung
- Problemverständnis fördern
- Alternativen erarbeiten und bewerten
- Entscheidungsfindung
- Umsetzung in evolutionären Schritten
- Retrospektive und Lessons Learned
Publikationen
- Entwicklung leicht gemacht mit F# Wer mit .NET entwickelt, macht das wahrscheinlich mit C#. Doch gerade F# hat großes Potenzial, die tägliche Arbeit zu erleichtern. Denn alles, was C# kann, geht auch mit F#, und das oft leichtgewichtiger und weniger fehleranfällig. 2021 windows.developer 7.2021
- 101 ideas for agile teams A collection of ideas on how to improve teamwork in an agile (software development) team.
- Clean, simple, flexible, evolvable, agile architecture cheat sheet A collection of ideas practices and so on about software architecture.
- Clean Code Cheat Sheet Contains guidelines for clean code, test driven development and acceptance test driven development.
- Agile Teams gibt es nicht auf Knopfdruck: Der Weg ist das Ziel Teams starten in die agile Softwareentwicklung, weil sie gehört haben, dass es für sie dann weniger Feuerwehrübungen gäbe. Gleichzeitig erhofft sich das Business eine schnellere Time-to-Market. 2017 Juni t3n
- Das geht morgen auch noch! Architekturentscheide sinnvoll vertagen für mehr Agilität Softwarearchitektur ist die Summe von vielen schwierigen Entscheidungen. Je später wir entscheiden, desto mehr wissen wir über die gestellte Aufgabe. So entscheiden wir einfacher und besser und der Architekturentscheid von heute steht der Agilität von morgen nicht im Weg. 2016 September sybit Agile
- Wie Hund und Katze: Legacy Code und Agil Legacy Code verdient viel Geld. Legacy Code steckt in vielen Systemen, die zwar in die Jahre gekommen, aber immer noch erfolgreich sind. Da können noch so viele Softwareentwickler fluchen und sich die Haare raufen, Legacy Code ist die Realität. Aber nicht das Ende… 2014 Sybit Agil Nr. 14
- Agilität und Architektur: Aus dem Alltag eines agilen Softwarearchitekten Wenn Ihr Chef sie fragt, ob Sie die Rolle des agilen Softwarearchitekten übernehmen möchten, dann sagen Sie sofort zu. Denn die Aufgaben, die auf Sie warten, sind herausfordernd und spannend zugleich. Aber aufgepasst: Ein agiler Softwarearchitekt braucht neben dem Wissen über Trends und Technologien auch große Ohren, um den verschiedenen Stakeholdern gut zuhören zu können. Und gute Augen, um beim hektischen Alltag den Überblick nicht zu verlieren. 2013 Mai OBJEKTSpektrum
- Was macht ein agiler Softwarearchitekt so den ganzen Tag Die Zeiten sind vorbei, als der Softwarearchitekt in seinem dunklen Raum sass und aus den Anforderungen eine Architektur zauberte. Kein Anforderungsingenieur erarbeitet die Liste der gewünschten Funktionalität im Voraus. Und die Architektur wird nicht mehr als Dokument an die Entwickler zur Umsetzung weitergegeben. In der heutigen Welt dauert der sequentielle Ablauf dieser Phasen schlicht zu lange und ist zu träge, um am Markt bestehen zu können. Das Bedürfnis nach schnelleren Entwicklungszyklen und mehr Flexibilität bei Veränderungen der Anforderungen hat in den letzten Jahren den agilen Entwicklungsmethoden zu deren Siegeszug verholfen. Doch braucht es bei all den selbst organisierten und cross-funktionalen Teams überhaupt noch einen Architekten? Und wenn ja, was sind seine Aufgaben? 2013 Februar Sybit agile
Videos meiner Vorträge
Podcast Auftritte
Zukünftige Vorträge
25.-29.09.2023 Mainz/virtuell: Bi-temporales Event Sourcing
Vortrag Basta 2023Bi-temporale Events haben nicht nur ein einzelnes Datum (z. B. das Datum, wann das Event aufgetreten ist), sondern zwei Daten (z. B. das Datum des Auftretens und wann es sich auswirkt). So mache ich beispielsweise heute eine Überweisung, welche Ende Monat ausgeführt wird.
Im Gegensatz zu normalen Events, müssen bei der Projektion von bi-temporalen Events und bei deren Read Models einige zusätzliche Dinge berücksichtigt werden: Ordnung der Events nach zwei Dimensionen, Bedeutung eines früheren effektiven Datums (Überschreibend, Einfügend) usw.
In dieser Präsentation zeige ich euch nach einer kurzen Einführung in «normales» Event-Sourcing die Konzepte und Implementationen, welche wir in unserer Zeiterfassungssoftware einsetzen, um die Möglichkeiten von bi-temporalen Daten zu nutzen. Ich zeige euch die Projektoren für einfache Werte und für Timelines, um einfach auf historische Daten zugreifen zu können; sowie für mengenbasierte Werte und Werte mit einem Lebenszyklus.
25.-29.09.2023 Mainz/virtuell: Mythen über F#
Vortrag Basta 2023F# ist einer der drei .NET-Sprachen und meine Lieblingsprogrammiersprache. F# legt mehr Gewicht auf Konzepte aus der funktionalen Programmierung als C# und VB.NET. Leider merke ich immer wieder, dass einige Mythen über F# weit verbreitet sind – wie zum Beispiel:
- F# = Funktionale Programmierung und C# = Objekt Orientierte Programmierung
- F# taugt nur für mathematische Berechnungen
- F# ist viel schwieriger zu erlernen als C# oder VB.NET
- in Kürze kann C# eh alles, was F# zu bieten hat
- in F# hat es viel mehr Operatoren als in C#
- C# hat das bessere Tooling
- F# ist langsam
- Imperative und objektorientierte Programmierung ist einfacher als funktionale
Höchste Zeit sich diese Mythen genau anzuschauen und herauszufinden, ob sie wahr oder falsch sind.
10.11.2023 virtuell: Collective Product Ownership
Vortrag TeamBoostDay 2023Collective Product Ownership bedeutet, dass alle Mitglieder des Produktsteams bei der Gestaltung des Produkts Einfluss nehmen können.
Dies führt neben einer gestärkten Identifizierung mit dem Produkt zu mehr Motivation, diverseren Produktentscheidungen, mehr Effizienz und weniger Risiko als zum Beispiel das Delegieren dieser Aufgabe an einen einzelnen Product Owner.
Im Workshop betrachten wir, welche Herausforderungen beim Wechsel zu Collective Product Ownership bestehen, wie wir diese meistern und welche Effekte daraus resultieren. Einer dieser Effekte ist, dass sich das Team als Ganzes in der Domäne, in der es sich bewegt, entwickelt in dem es die zu lösenden Probleme aus erster Hand kennt und so effizienter zu effektiven Lösungen beitragen kann.
Vergangene Vorträge und Workshops
Es sind nur Vorträge und Workshops von Konferenzen und Meetups aufgelistet, keine Firmen internen.
Wenn Scrum zu langsam ist – Das Caretaker-Model
Vortrag IT-Tage 365 2023Das Manifest der agilen Softwareentwicklung sagt, wir sollen bessere Wege erschließen, um Software zu entwickeln. Wir haben Scrum hinter uns gelassen, weil wir schneller lernten als der Sprint lang war und der Sprint uns mehr blockierte als unterstützte. Besser passt uns die Trennung der Zyklen für Planung, Retrospektive, Auslieferung und Feedback. Und dass sich jedes Teammitglied von Anfang bis Ende einbringen kann, hat die Motivation im Team stark erhöht.
Dies ist das Caretaker-Model.
Bi-temporal Event Sourcing
Vortrag .Net Usergroup Zentralschweiz 2023Bi-temporale Events haben nicht nur ein einzelnes Datum (z.B. das Datum, wann das Event aufgetreten ist), sondern zwei Daten (z.B. das Datum des Auftretens und wann es sich auswirkt). So mache ich beispielsweise heute eine Überweisung, welche Ende Monat ausgeführt wird.
Im Gegensatz zu normalen Events, müssen bei der Projektion von bi-temporalen Events und bei deren Read-Models einige zusätzliche Dinge berücksichtigt werden: Ordnung der Events nach zwei Dimensionen, Bedeutung eines früheren effektiven Datums (Überschreibend, Einfügend) usw. In dieser Präsentation zeigt Urs euch nach einer kurzen Einführung in «normales» Event-Sourcing, die Konzepte und Implementationen, welche wir in unserer Zeiterfassungssoftware einsetzen, um die Möglichkeiten von bi-temporalen Daten zu nutzen. Urs zeigt euch die Projektoren für einfache Werte und für Timelines, um einfach auf historische Daten zugreifen zu können; sowie für Mengen-basierte Werte und Werte mit einem Lebenszyklus.
Object-Oriented vs. Functional Programming With C# and F#
Vortrag JetBrains Webinar 2023Modern programming languages support both object-oriented and functional programming to a large extent. What are the differences between the two approaches and where is one more appropriate than the other? Can these two programming paradigms be combined?
In this session, we look at the differences and similarities between functional and object-oriented programming using examples in C# and F#.
Architecture aspects - evolutionary architecture development
Vortrag VoxxedDays Zurich 2023, .Net Day Switzerland 2023If we start with the architecture of new software, we must think about many things. I use a list of 23 architectural aspects, like persistence, communication, translations, archiving, scaling, Security, Exception handling etc., to guide my design.
By taking an evolutionary approach, we can tackle these aspects incrementally and allow us to learn a lot about the problem to be solved and possible solutions before deciding. Instead of a big-design-up-front based on many assumptions, we create options among which we can choose the optimal one as late as possible.
After this presentation, you will know the architectural aspects that are important when working on architecture and how to implement them in many small steps.
Software-Architektur: Evolutionäre Architekturentwicklung
Vortrag IT-Tage 2022, LAS - Lean Agile & Scrum 2023Wenn wir mit der Architektur einer neuen Software starten, dann müssen wir an vieles denken. Unter anderem an 23 Architekturaspekte, wie Persistenz, Übersetzungen, Archivierung, Skalierung, Security, Exception Handling usw.
Durch eine evolutionäre Herangehensweise können wir diese Aspekte schrittweise angehen und ermöglichen es uns, zuerst viel über das zu lösende Problem und mögliche Lösungen zu lernen, bevor wir entscheiden müssen. Statt eines Big-Design-Up-Front auf Basis vieler Annahmen, schaffen wir uns Optionen unter welchen wir möglichst spät die optimale auswählen können.
Nach dieser Präsentation kennt ihr die Architekturaspekte, welche mir wichtig sind beim Arbeiten an der Architektur und wie diese in vielen kleinen Schritten umgesetzt werden können.
2 Meinungen, 1 Diskussion zu Datenmodellierung und Persistenz mit Simon Martinelli
Vortrag/Diskussion .Net Usergroup ZentralschweizDiskussion von Simon Martinelli und Urs Enzler:
- Modellierung von Daten anhand des Businessprozesses oder des Verhaltens
- Daten sind wichtiger als langlebiger Code
- Migration von Daten um diese den sich ändernden Prozessen und Verhalten anzupassen
- Datenbankzugriff: aus Daten generieren oder Code-first?
(Ver)schätzen. Warum Schätzungen nicht funktionieren.
Vortrag Basta 2022, IT-Tage 2022, Basta!Spring 2023Schätzen funktioniert nicht - auch nicht, wenn wir mehr Aufwand in die Schätzung stecken.
In dieser Präsentation zeige ich euch, warum das so ist und was wir stattdessen tun sollten.
Nach dem Vortrag wisst ihr mehr über komplexe Systeme, wo der Aufwand in der Softwareentwicklung wirklich steckt, welche Ursachen Verzögerungen haben, warum Kommunikation eines der Hauptprobleme ist und warum bei Software eine Diseconomy of Scale gilt.
Achieving an evolutionary architecture through simplicity
Vortrag VOXXED Days Zurich 2022The architecture of modern software systems has to adapt to changing user needs and technological innovation continuously. Simplicity is the essential factor to support the evolution of software architecture.
In this presentation, I'll show you a model that helps reflect on the simplicity of the architecture and practices that support keeping the architecture as simple as possible - like continuous refactoring, decision-decomposition, and concrete-specific instead of abstract-generic designs.
OOP, FP oder ein Mix?
Vortrag .NET Usergroup Zentralschweiz 2022, Basta!Spring 2022, Basta 2022Moderne Programmiersprachen unterstützen sowohl objektorientierte als auch funktionale Programmierung in grossen Teilen.
Doch was sind die Unterschiede der beiden Ansätze und wo eignet sich der eine besser als der andere? Oder lassen sich die beiden Programmierparadigmen sogar kombinieren?
In dieser Session schauen wir uns die Unterschiede und Gemeinsamkeiten am Beispiel von C# und F# Code an.
Das Caretaker-Modell – wenn Scrum zu langsam ist
Vortrag agile Bodensee 2021Das Manifest der agilen Softwareentwicklung sagt uns, wir sollen bessere Wege erschließen, um Software zu entwickeln.
Wir haben Scrum hinter uns gelassen, weil wir unter anderem schneller dazu gelernt haben als der Sprint lang war und der Sprint uns mehr blockiert als unterstützt hat. Scrum fühlte sich für uns zu langsam und zu unflexibel an.
Stattdessen haben wir eine Arbeitsweise gefunden, welche uns besser unterstützt, durch Trennung der Zyklen für Planung, Verbesserung, Retrospektiven, Auslieferung und Feedback. Und die Möglichkeit, dass sich jedes Teammitglied von Anfang bis Ende einbringen kann, hat die Motivation im Team stark erhöht. Dies ist das Caretaker-Modell.
In dieser Präsentation erkläre ich euch, wie das Caretaker-Modell funktioniert, warum das Caretaker-Modell viel besser zu uns passt und zu dir und deinem Team möglicherweise auch.
Als Team Entscheide treffen
Workshop .NET Usergroup Zentralschweiz 2021, Team Boost Day 2021Wir treffen jeden Tag unzählige Entscheide: Kleine (mach ich da nun einen Zeilenumbruch?), mittlere (welche Lösungsvariante setzen wir um?) bis grosse (bauen wir dieses Produkt?). Doch wie machen wir das überhaupt? Eher zufällig oder strikt nach Prozess? Alleine oder im Team? Und was wenn wir uns nicht einig werden? In dieser Session tauschen wir uns darüber aus, was wir wie und wann entscheiden und finden bessere Wege für bessere Entscheide.
Wir werden unter anderen folgende Themen betrachten:
- Vorbereiten von Entscheidungen
- Auswahl der Entscheidungsmethode basierend auf der Art der Entscheidung und Kriterien für Beurteilung der Art der Entscheidung
- Kommunizieren und Dokumentieren von Entscheidungen
- Entscheidungen rückblickend validieren
Du willst fehlschlagen? Dann mach ein Projekt!
Vortrag swissICT Symposium 2019, Lean Agile & Scrum Conference 2021, IT-Tage 2021Die Ära der Projekte in der Softwareentwicklung ist vorbei. Mit Projekten ist es nicht mehr möglich, die heutige IT-Welt in den Griff zu bekommen. Komplexe Zusammenhänge zwischen Stakeholdern und Umsystemen sowie rasant ändernde Technologien sind nicht mehr beherrschbar.
Das Resultat: zu teuer, zu spät, am Problem vorbei entwickelt.
Statt in Projekten zu denken, müssen wir uns auf den Produkt-Lebenszyklus ausrichten: Geburt, Weiterentwicklung, Ablösung.
Ein Denkanstoss für neue Wege in der Softwarenentwicklung.