Slide 1

Slide 1 text

I N N O Q T e c h n o l o g y L u n c h , 0 8 . 0 2 . 2 0 2 3 , o n l i n e Wie löse ich knifflige Probleme in Softwaresystemen? Markus Harrer Senior Consultant

Slide 2

Slide 2 text

" Markus Harrer Senior Consultant Roth, Deutschland Tools only find, people have to find out!" • Softwarearchitekturentwicklung und -bewertung • Softwaremodernisierung und -Rightsizing • Datenanalysen in der Softwareentwicklung 2 Foundation & IMPROVE https://softwareanalytics.de https://feststelltaste.de/ Instructor http://aim42.github.io/ https://cards42.org/ Trainer

Slide 3

Slide 3 text

Lösung Ursache L a n g s a m e s Denken Schnelles Denken Symptom „Abhilfe“ ~95% Lösung Problem L a n g s a m e s Denken Nach „Schnelles Denken, langsames Denken“ von Daniel Kahneman Meine Beobachtung: Lösungsreflex 3

Slide 4

Slide 4 text

4 https://overthefence.com.de/manifesto/

Slide 5

Slide 5 text

5 Das Problem zu erkennen ist wichtiger als die Lösung zu erkennen, denn die genaue Darstellung des Problems führt zur Lösung.“ Albert Einstein Bild: https://commons.wikimedia.org/wiki/File:Albert_Einstein_Head_cleaned.jpg “ Leitmotiv

Slide 6

Slide 6 text

6 Knifflige Probleme in Softwaresystemen

Slide 7

Slide 7 text

7 Vielfältig Intransparent Viele Abhängigkeiten Wechselwirkungen Richtiges Schlammassel

Slide 8

Slide 8 text

Beispiele für knifflige Probleme 8 Nur für den Fall, dass diese bei euch unbekannt sein sollten… „Um ein Angebot zu berechnen, fabrizieren wir 12000 Service-Calls!“ „Nur Herr Meier (extern) kennt sich noch mit unserer Software aus!“ „Die Suche nach einem Vertragskunden dauert min. 5 Minuten!“

Slide 9

Slide 9 text

Der Beginn Über Probleme reden 9

Slide 10

Slide 10 text

Probleme sammeln 10 Beispiel: The Wall of Technical Debt Blog-Post: https://verraes.net/2020/01/wall-of-technical-debt/ Bild: https://twitter.com/Pelshoff/status/1220291781188866049, CC BY 4.0 Lizenz

Slide 11

Slide 11 text

Probleme sammeln 11 Beispiel: Risk-Storming Blog-Post: https://riskstorming.com/ Bild: https://c4model.com, CC BY 4.0 Lizenz

Slide 12

Slide 12 text

Probleme sammeln 12 Beispiel: Code-Happiness-O-Meter Paul Paul Julia Julia https://twitter.com/feststelltaste/status/961639365045817344

Slide 13

Slide 13 text

Ergebnisse einer Problemsammlung 13 Kein Kubernetes Kein Kubernetes 100k DB-Calls bei 1 Klick in Anwendung 100k DB-Calls bei 1 Klick in Anwendung Lokaler Build geht nicht Lokaler Build geht nicht Problem Problem

Slide 14

Slide 14 text

14

Slide 15

Slide 15 text

Überblick der Punkte 15 1. Was sind die Probleme? 2. Problem(rück|vor)verschiebung 3. Problemverständnis 4. ProblemursachEN 5. Passende Maßnahmen 6. Denkfehler 7. Richtiges Problem? Stark inspiriert von Walter Schönwandts Buch „Knifflige Probleme lösen“ Reihenfolge ist irrelevant! Wiederholungen immer und immer wieder notwendig!

Slide 16

Slide 16 text

1. Punkt Was sind die Probleme? 16

Slide 17

Slide 17 text

Ergebnisse einer Problemsammlung 17 Kein Kubernetes Kein Kubernetes Ø 400 DB- Calls bei 1 Klick in Anwendung Ø 400 DB- Calls bei 1 Klick in Anwendung Lokaler Build geht nicht Lokaler Build geht nicht Problem Problem

Slide 18

Slide 18 text

Was sind die Probleme? 18 Kein Kubernetes Kein Kubernetes Ø 400 DB- Calls bei 1 Klick in Anwendung Ø 400 DB- Calls bei 1 Klick in Anwendung Lokaler Build geht nicht Lokaler Build geht nicht

Slide 19

Slide 19 text

Was sind die 19 Kein Kubernetes Kein Kubernetes Ø 400 DB- Calls bei 1 Klick in Anwendung Ø 400 DB- Calls bei 1 Klick in Anwendung Lokaler Build geht nicht Lokaler Build geht nicht Als Lösung getarntes Problem Kniffliges Problem Einfaches Problem (Routineaufgabe) Probleme? kniffligen Was sind die

Slide 20

Slide 20 text

Ergebnisse einer Problemsammlung 20 Kein Kubernetes Kein Kubernetes 100k DB-Calls bei 1 Klick in Anwendung 100k DB-Calls bei 1 Klick in Anwendung Lokaler Build geht nicht Lokaler Build geht nicht Problem Problem

Slide 21

Slide 21 text

Ergebnisse einer Problemsammlung 21 Kein Kubernetes Kein Kubernetes 100k DB-Calls bei 1 Klick in Anwendung 100k DB-Calls bei 1 Klick in Anwendung Lokaler Build geht nicht Lokaler Build geht nicht Problem Problem Getarnte Lösung Getarnte Lösung Routine Routine

Slide 22

Slide 22 text

Ergebnisse einer Problemsammlung 22 Kein Kubernetes Kein Kubernetes 100k DB-Calls bei 1 Klick in Anwendung 100k DB-Calls bei 1 Klick in Anwendung Lokaler Build geht nicht Lokaler Build geht nicht Problem Problem Kein Problem Kein Problem

Slide 23

Slide 23 text

Ergebnisse einer Problemsammlung 23 Kein Kubernetes Kein Kubernetes 100k DB-Calls bei 1 Klick in Anwendung 100k DB-Calls bei 1 Klick in Anwendung Lokaler Build geht nicht Lokaler Build geht nicht Problem Problem

Slide 24

Slide 24 text

2. Punkt Problem(rück|vor)verschiebung 24

Slide 25

Slide 25 text

Problemrückverschiebung 25 = Root-Cause-Analysis → Der Sache auf den Grund gehen Frage: Woher kommt das Problem? (oder auch: Warum?) Ursache Problem Zu viele Daten werden mit einer Abfrage geladen Die Daten- strukturen sind kreuz und quer

Slide 26

Slide 26 text

Problemvorverschiebung 26 = „Reverse-Problem-Analysis“ → Weitere Einstiegsstellen ür die Lösung inden Frage: Wozu führt das Problem? Hier dann nur starten, wenn Lösung anderswo nicht möglich ist! Datenbank- abfragen sind zu langsam! Ursache Problem Zu viele Daten werden mit einer Abfrage geladen Die Daten- strukturen sind kreuz und quer Symptom

Slide 27

Slide 27 text

Erste Lösungsideen finden 27 Spielräume für die Problemlösung schaffen Räume für Ideen → Viele potenzielle Dinge, über die nachgedacht werden kann Optimierte Lesemodelle einführen Review und Verbesserung Datenmodell Datenbank- abfragen sind zu langsam! Problem Zu viele Daten werden mit einer Abfrage geladen Die Daten- strukturen sind kreuz und quer Symptom Zeige Werbung beim Warten Indizes einführen Mehr RAM / CPU Ursache

Slide 28

Slide 28 text

Ergebnisse einer Problemsammlung 28 Kein Kubernetes Kein Kubernetes 100k DB-Calls bei 1 Klick in Anwendung 100k DB-Calls bei 1 Klick in Anwendung Lokaler Build geht nicht Lokaler Build geht nicht Problem Problem

Slide 29

Slide 29 text

Ergebnisse einer Problemsammlung 29 Kein Kubernetes Kein Kubernetes 100k DB-Calls bei 1 Klick in Anwendung 100k DB-Calls bei 1 Klick in Anwendung Lokaler Build geht nicht Lokaler Build geht nicht Problem Problem hängt ab von

Slide 30

Slide 30 text

Ergebnisse einer Problemsammlung 30 Kein Kubernetes Kein Kubernetes 100k DB-Calls bei 1 Klick in Anwendung 100k DB-Calls bei 1 Klick in Anwendung Lokaler Build geht nicht Lokaler Build geht nicht Problem Problem hängt ab von Gelöstes Problem Gelöstes Problem

Slide 31

Slide 31 text

Ergebnisse einer Problemsammlung 31 Kein Kubernetes Kein Kubernetes 100k DB-Calls bei 1 Klick in Anwendung 100k DB-Calls bei 1 Klick in Anwendung Lokaler Build geht nicht Lokaler Build geht nicht Problem Problem hängt ab von

Slide 32

Slide 32 text

Ergebnisse einer Problemsammlung 32 Kein Kubernetes Kein Kubernetes 100k DB-Calls bei 1 Klick in Anwendung 100k DB-Calls bei 1 Klick in Anwendung Lokaler Build geht nicht Lokaler Build geht nicht Problem Problem hängt ab von Erste Idee Erste Idee

Slide 33

Slide 33 text

33 „Warum?“

Slide 34

Slide 34 text

34 „Wozu führt es?“

Slide 35

Slide 35 text

35 3. Punkt Problemverständnis

Slide 36

Slide 36 text

Ergebnisse einer Problemsammlung 36 Kein Kubernetes Kein Kubernetes 100k DB-Calls bei 1 Klick in Anwendung 100k DB-Calls bei 1 Klick in Anwendung Lokaler Build geht nicht Lokaler Build geht nicht Schlechte Performance Schlechte Performance Problem Problem hängt ab von Erste Idee Erste Idee

Slide 37

Slide 37 text

Ein typisches Problem 37 Schlechte Performance Schlechte Performance Was können wir dagegen machen?

Slide 38

Slide 38 text

Typische Lösungen 38 Schlechte Performance Schlechte Performance Caching Caching Mehr RAM / CPU Mehr RAM / CPU Server- less Server- less

Slide 39

Slide 39 text

Schlechte Performance Schlechte Performance Eine typische Situation 39 Caching Caching Mehr RAM / CPU Mehr RAM / CPU Server- less Server- less

Slide 40

Slide 40 text

Resultat: Verschlimmbesserung 40 Mehr RAM / CPU Mehr RAM / CPU = Umsetzung von Features dauert zu lange = Umsetzung von Features dauert zu lange Daten- inkonsistenzen Daten- inkonsistenzen Höhere Betriebs- kosten Höhere Betriebs- kosten Instabile Betriebs- umgebung Instabile Betriebs- umgebung ↓ ↓ ↓ Folgen = Quellen neuer Probleme Caching Caching Server- less Server- less

Slide 41

Slide 41 text

Resultat: Verschlimmbesserung 41 Kommt nicht so gut bei allen an…

Slide 42

Slide 42 text

Bei Problemen genauer werden 42 Schlechte Performance Schlechte Performance Umsetzung von Features dauert zu lange? Umsetzung von Features dauert zu lange? Durchsatz von Vertrags- genehmigungen zu langsam? Durchsatz von Vertrags- genehmigungen zu langsam? Entwickler tanzen zu schlecht? Entwickler tanzen zu schlecht? Antwortzeiten der Anwendung dauern zu lange? Antwortzeiten der Anwendung dauern zu lange?

Slide 43

Slide 43 text

Bei Problemen genauer werden 43 Zu wenig Kuchen Zu wenig Kuchen Fehlende gegenseitige Wertschätzung Fehlende gegenseitige Wertschätzung

Slide 44

Slide 44 text

Probleme im Kontext sehen 44 Wörter erhalten erst in einem Kontext eine Bedeutung → z. B. durch Kategorisierung bzw. Clustering von Problemen Schlechte Performance Schlechte Performance Feature- entwicklung Feature- entwicklung Leistungs- effizienz Leistungs- effizienz Schlechte Liefer- performance Schlechte Liefer- performance ??? ??? → Schlechte Performance Schlechte Performance → Feature- entwicklung Feature- entwicklung

Slide 45

Slide 45 text

Bei Problemen konkreter werden 45 Ø 400 DB- Calls bei 1 Klick in Anwendung Ø 400 DB- Calls bei 1 Klick in Anwendung Ø 1000 DB- Calls bei Report- Generierung Ø 1000 DB- Calls bei Report- Generierung 10000 DB- Calls bei Jahresend- berichts- generierung 10000 DB- Calls bei Jahresend- berichts- generierung > >

Slide 46

Slide 46 text

Ergebnisse einer Problemsammlung 46 Lokaler Build geht nicht Lokaler Build geht nicht Problem Problem

Slide 47

Slide 47 text

Ergebnisse einer Problemsammlung 47 Lokaler Build geht nicht Lokaler Build geht nicht Problem Problem

Slide 48

Slide 48 text

Ergebnisse einer Problemsammlung 48 Lokaler Build geht nicht Lokaler Build geht nicht Problem Problem Cluster Cluster

Slide 49

Slide 49 text

Ergebnisse einer Problemsammlung 49 Lokaler Build geht nicht Lokaler Build geht nicht Skalier- barkeit Skalier- barkeit Zusammen- arbeit Zusammen- arbeit Codequalität Codequalität Problem Problem Cluster Cluster

Slide 50

Slide 50 text

Ergebnisse einer Problemsammlung 50 Lokaler Build geht nicht Lokaler Build geht nicht Skalier- barkeit Skalier- barkeit Zusammen- arbeit Zusammen- arbeit Codequalität Codequalität Problem Problem Cluster Cluster

Slide 51

Slide 51 text

51 „Was meinst du damit?“

Slide 52

Slide 52 text

4. Punkt ProblemursachEN 52

Slide 53

Slide 53 text

53 We fail more often because we solve the wrong problem than because we get the wrong solution to the right problem.” Russell L. Ackoff “ Bild: https://de.wikipedia.org/wiki/Datei:Russel_Lincoln_Ackoff.jpg

Slide 54

Slide 54 text

54 UrsachEN betrachten Code wird lokal nicht getestet Falschkonfigurierter Build-Server Externe Systeme ändern Abläufe ohne Kommunikation Builds schlagen zu oft fehl im Nightly Build hat Ursache Legende (Mögliche) Ursachen Problem Problem → UrsachEN Sprint-Ziele werden nicht erreicht Netz der Zusammenhänge Erzeugt Momentum

Slide 55

Slide 55 text

55 Gefahr: Maßnahmen oder Ursachen unvollständig Code wird lokal nicht getestet Falschkonfigurierter Build-Server Externe Systeme ändern Abläufe ohne Kommunikation Builds schlagen zu oft fehl im Nightly Build Entwickler müssen Tests erfolgreich ausführen ist Maßnahme für hat Ursache Legende ist eigentlich Maßnahme für Einführung von Consumer-driven Contract Testing Externe Systeme durch Mocks ersetzen ? ? Fehlende Maßnahme Fehlende Ursache (Mögliche) Ursachen Problem (Mögliche) Maßnahmen Maßnahmen zu UrsachEN Wirkliche Ursache

Slide 56

Slide 56 text

Ergebnisse einer Problemsammlung 56 Kein Kubernetes Kein Kubernetes 100k DB-Calls bei 1 Klick in Anwendung 100k DB-Calls bei 1 Klick in Anwendung Lokaler Build geht nicht Lokaler Build geht nicht Problem Problem hängt ab von Erste Idee Erste Idee

Slide 57

Slide 57 text

57 „Was noch?“

Slide 58

Slide 58 text

58 „Löst diese Maßnahme die eigentliche Ursache?“

Slide 59

Slide 59 text

5. Punkt Passende Maßnahmen finden 59

Slide 60

Slide 60 text

60 “There ain't no such thing as a free lunch!” - Unknown Code wird lokal nicht getestet Externe Systeme ändern Abläufe ohne Kommunikation Builds schlagen zu oft fehl im Nightly Build Entwickler müssen Tests erfolgreich ausführen ist Maßnahme für hat Ursache Legende ist eigentlich Maßnahme für Einführung von Consumer-driven Contract Testing (Mögliche) Ursachen Problem Maßnahmen Konsequenzen von Maßnahmen Wirkliche Ursachen

Slide 61

Slide 61 text

Landkarte der Lösungen 61 Ursachen mit Maßnahmen zusammenbringen Code wird lokal nicht getestet Externe Systeme ändern Abläufe ohne Kommunikation Builds schlagen zu oft fehl im Nightly Build Entwickler müssen Tests erfolgreich ausführen Einführung von Consumer-driven Contract Testing Ursachen Maßnahmen

Slide 62

Slide 62 text

Landkarte der möglichen Lösungen 62 Folgen der Maßnahmen identifizieren (nichts ist umsonst!) Code wird lokal nicht getestet Externe Systeme ändern Abläufe ohne Kommunikation Builds schlagen zu oft fehl im Nightly Build Entwickler müssen Tests erfolgreich ausführen Einführung von Consumer-driven Contract Testing Ursachen Maßnahmen Folgen Schulungen für effektives Testen notwendig Lokale Test müssen schnell durchlaufen Folgen

Slide 63

Slide 63 text

Landkarte der Lösungen 63 Folgen der Maßnahmen bewerten für die eigene Situation Code wird lokal nicht getestet Externe Systeme ändern Abläufe ohne Kommunikation Builds schlagen zu oft fehl im Nightly Build Entwickler müssen Tests erfolgreich ausführen Einführung von Consumer-driven Contract Testing Ursachen Maßnahmen Folgen Schulungen für effektives Testen notwendig Folgen Bewertung Sinnvoll, da wir Qualitätsoffensive anstreben Erzeugt Momentum Lokale Test müssen schnell durchlaufen

Slide 64

Slide 64 text

Landkarte der Lösungen 64 Übersicht über konkrete Maßnahmenbündel schaffen Ursachen Maßnahmen Folgen Folgen Bewertung

Slide 65

Slide 65 text

Ergebnisse einer Problemsammlung 65 Kein Kubernetes Kein Kubernetes 100k DB-Calls bei 1 Klick in Anwendung 100k DB-Calls bei 1 Klick in Anwendung Lokaler Build geht nicht Lokaler Build geht nicht Problem Problem hängt ab von Erste Idee Erste Idee

Slide 66

Slide 66 text

Ergebnisse einer Problemsammlung 66 Kein Kubernetes Kein Kubernetes 100k DB-Calls bei 1 Klick in Anwendung 100k DB-Calls bei 1 Klick in Anwendung Lokaler Build geht nicht Lokaler Build geht nicht Problem Problem hängt ab von Erste Idee Erste Idee

Slide 67

Slide 67 text

Ergebnisse einer Problemsammlung 67 Kein Kubernetes Kein Kubernetes 100k DB-Calls bei 1 Klick in Anwendung 100k DB-Calls bei 1 Klick in Anwendung Lokaler Build geht nicht Lokaler Build geht nicht Problem Problem hängt ab von Maß- nahme Maß- nahme Keine Maß- nahme Keine Maß- nahme

Slide 68

Slide 68 text

Ergebnisse einer Problemsammlung 68 Kein Kubernetes Kein Kubernetes 100k DB-Calls bei 1 Klick in Anwendung 100k DB-Calls bei 1 Klick in Anwendung Lokaler Build geht nicht Lokaler Build geht nicht Problem Problem hängt ab von Maß- nahme Maß- nahme Gelöstes Problem Gelöstes Problem Folge Folge

Slide 69

Slide 69 text

Ergebnisse einer Problemsammlung 69 Lokaler Build geht nicht Lokaler Build geht nicht Problem Problem Folge Folge

Slide 70

Slide 70 text

70 Bonuspunkte (nur kurz angerissen)

Slide 71

Slide 71 text

6. Punkt Denkfehler beachten 71

Slide 72

Slide 72 text

Sehen wir die wirklichen Probleme? 72 Problemidentifikation hinterfragen! Ursachen Maßnahmen Folgen Folgen Bewertung Sehen wir wirklich die richtigen Probleme?

Slide 73

Slide 73 text

73 Wer nur im Code sucht, wird auch nur dort Probleme finden! 1 101 1 0

Slide 74

Slide 74 text

Antimethode: Den Schlüssel unter der Straßenlaterne suchen 74 Nicht nur dort suchen, wo das Licht hinfällt!

Slide 75

Slide 75 text

75 I suppose it is tempting, if the only tool you have is a hammer, to treat everything as if it were a nail.” Abraham Maslow Bild: https://en.wikipedia.org/wiki/Abraham_Maslow#/media/File:Abraham_Maslow.jpg “

Slide 76

Slide 76 text

Bewusst in die Breite gehen! 76

Slide 77

Slide 77 text

Die große Welt der Denkfehler 77

Slide 78

Slide 78 text

Ein paar Denkfehler als Beispiel 78 Grand Vision Bias Grand Vision Bias Entnommen von Janelle Arty Starr: Idea Flow - How to Measure the PAIN in Software Development

Slide 79

Slide 79 text

Kausale Ketten & Netze in Frage stellen! 79 Wir haben kein Content Management System Wir haben kein Content Management System Vorgeschriebenes Single Sign-On wurde bisher falsch bzw. nicht implementiert Vorgeschriebenes Single Sign-On wurde bisher falsch bzw. nicht implementiert Wir haben keine anpassbare Login- Seite für unsere internen Anwendungen Wir haben keine anpassbare Login- Seite für unsere internen Anwendungen Unsere IT- Mitarbeiter müssen ständig Anmeldeseiten für neue Anwendungen erstellen Unsere IT- Mitarbeiter müssen ständig Anmeldeseiten für neue Anwendungen erstellen Warum? Warum? Zuständigkeiten und Budget- zuweisung für Themen der Rechteverwaltung sind unklar Zuständigkeiten und Budget- zuweisung für Themen der Rechteverwaltung sind unklar Was noch? ... ... Lösungsraum Problemraum Für welche Lösung ist das das Problem? Warum (ist das ein Problem)?

Slide 80

Slide 80 text

Ist unser Weg der richtige? 80 Problemlösungsvorgehen reflektieren und Werkzeuge hinterfragen! Ursachen Maßnahmen Folgen Folgen Bewertung ? ? ? ? ? ? ? ? ? ?

Slide 81

Slide 81 text

7. Punkt Richtiges Problem? 81

Slide 82

Slide 82 text

„Problem… 82 Bei Rekordaus- schüttungen informieren wir unsere Kunden, dass sie bitte früher unser System nutzen sollen. Online- Lottoanbieter Entwicklung WT$? Bessere Werbe- möglichkeiten! Vor großen Anstürmen können wir alle unsere Kunden anschreiben und damit noch einmal Werbung für unser Angebot machen! …oder Chance?“

Slide 83

Slide 83 text

„Problem… 83 Die Umsetzung einer Kundenanforderung im System dauert bei uns immer sehr lange. Schlechte Wartbarkeit! ! Softwarehaus …oder Chance?“ Wir haben Time & Material- Wartungsverträge mit Kunden geschlossen, die uns die Zeit für die Umsetzung bezahlen! Bezahlter Wartungsvertrag Entwicklung WT$?

Slide 84

Slide 84 text

„Problem… 84 Unsere Kunden sind sehr stark in unser angebotenes Services- Ökosystem integriert. Software-as- Service-Anbieter …oder Chance?“ Durch einen Vendor- Lock-In binden wir Kunden langfristig an unsere Plattform! Entwicklung WT$?

Slide 85

Slide 85 text

Anfeindungen Widerstand Verharmlosung Zweifel Verblüffung Gleichgültigkeit Zustimmung Begeisterung Willkommenskultur von Problemen 85 Probleme beweisen, keine Angriffspunkte liefern Support von einflussreichen Stakeholdern holen Konsequenzen der Probleme verständlich offenlegen abgestritten ignoriert akzept- iert Analysen nachvollziehbar kommunizieren Klarheit über die untersuchten Probleme schaffen Wichtige Eckdaten der Probleme kurz und bündig schildern Tipps Reaktionen https://aim42.github.io/#Expect-Denial

Slide 86

Slide 86 text

86 Wenn Sie ein Ziel haben, und Sie sind auf dem Weg Ihr Ziel zu erreichen, dann haben Sie kein Problem! Wenn Sie ein Ziel haben, und Sie sind nicht auf dem Weg Ihr Ziel zu erreichen, dann haben Sie ein Problem! [..] Ohne Ziel ist es nämlich verdam- mt schwer zu erkennen, ob man auf dem richtigen Weg ist.“ Georg Jocham Zitat aus https://georgjocham.com/apl006-wir-haben-ein-problem-haben-wir-wirklich-ein-problem/ Bild aus https://www.youtube.com/watch?v=q7JKlHJqDY4 “ ? ? ?

Slide 87

Slide 87 text

Zusammenfassung Wie löse ich knifflige Probleme in Softwaresystemen? 87

Slide 88

Slide 88 text

Überblick der Punkte 88 1. Was sind die Probleme? 2. Problem(rück|vor)verschiebung 3. Problemverständnis 4. ProblemursachEN 5. Passende Maßnahmen 6. Denkfehler 7. Richtiges Problem? Stark inspiriert von Walter Schönwandts Buch „Knifflige Probleme lösen“ Reihenfolge ist irrelevant! Wiederholungen immer und immer wieder notwendig!

Slide 89

Slide 89 text

Die Lösungen für knifflige Probleme 89 … und warum es keine eindeutige Antwort drauf gibt Wir haben den Sourcecode nicht Wir haben den Sourcecode nicht Niemand hat Lust auf C Niemand hat Lust auf C Herr Meier teilt sein Wissen nicht Herr Meier teilt sein Wissen nicht Keine Zeit fürs Dokumen- tieren Keine Zeit fürs Dokumen- tieren Keiner steigt im Quellcode durch Keiner steigt im Quellcode durch Zu wenig Entwickler Zu wenig Entwickler „Nur Herr Meier (extern) kennt sich noch mit unserer Software aus!“ Software wird in 3 Monaten abgelöst Software wird in 3 Monaten abgelöst

Slide 90

Slide 90 text

90 Ein paar Lesetipps für die individuelle Lösungen

Slide 91

Slide 91 text

91

Slide 92

Slide 92 text

No content

Slide 93

Slide 93 text

93

Slide 94

Slide 94 text

94

Slide 95

Slide 95 text

95

Slide 96

Slide 96 text

Mehr Infos zum großen Thema 96 Kuratierte Liste mit Tipps zum Umgang mit Legacy Systeme https://github.com/feststelltaste/awesome-legacy-systems

Slide 97

Slide 97 text

„Wenn ich eine Stunde habe, um ein Problem zu lösen, dann beschäftige ich mich 55 Minuten mit dem Problem und 5 Minuten mit der Lösung.“ Albert Einstein https://commons.wikimedia.org/wiki/File:Albert_Einstein_Head_cleaned.jpg 97

Slide 98

Slide 98 text

Kudos 98 Dieser Talk baut vor allem auf die Ideen von Prof. Walter Schönwandt et.al. auf* Podcast-Folge von Georg Jocham Abenteuer Probleme lösen, Folge 021: So löst man komplexe Probleme, im Gespräch mit Prof. Walter Schönwandt https://georgjocham.com/apl-020-so-loest-man- komplexe-probleme-im-gespraech-mit-prof-dr- walter-schoenwandt/ game changer Frei verfügbar unter https://scg.unibe.ch/ download/oorp/ usual suspects * es gibt aber genügend Praxiserfahrungen damit!

Slide 99

Slide 99 text

99 Vielen Dank

Slide 100

Slide 100 text

100 Fragen + Antworten

Slide 101

Slide 101 text

KLIENTEN Finance ● Telko ● Logistik ● E-Commerce ● Fortune 500 ● KMUs ● Startups FAKTEN ~160 Mitarbeitende 1998 gegründet 9 Standorte in D & CH UNSER ANGEBOT Produktkonzeption & Design Software-Entwicklung & -Architektur Technologie-Beratung Infrastruktur & Betrieb Wissenstransfer, Coaching & Trainings FOKUS Webapplikationen SaaS IoT Produktentwicklung ML/AI Blockchain TECHNOLOGIEN (Auswahl) Java/Spring Ruby/Rails Scala AWS Kubernetes Azure JavaScript Python C# ML/AI Blockchain 101 101