Digitalisierung hat viel damit zu tun, dass Arbeitsprozesse und Workflows durch Computer, Apps und Datenbanken unterstützt werden. Dies bedeutet aber auch, dass wir viele der Methoden und Techniken aus der Software-Welt für Nicht-Software einsetzen können und sollten. Eine Nützliche Metapher ist, dass Dokumente wie Software behandelt werden sollten (auch bekannt als docs-as-Code), also auch Dokumente unter Versionskontrolle liegen, wir mit Branches und Merges arbeiten, Dokumentenversionen Akzeptanzkriterien haben und Dokumente getestet werden bevor sie freigegeben werden. Das Schwierige daran ist aber, dass nur wenige Dokumentenformate sich wie textbasierender Sourcecode behandeln lassen (z.B. das Vergleichen und Zusammenführen von verschiedenen Dokumentenversion)
Kultur und Selbstverständnis
- Selbstverantwortung und Selbstorganisation
- Broken windows: keine neuen technischen und organisatorischen Schulden aufnehmen (geregelt über die DoD)und mittelfristig alte Schulden abbauen.
Arbeitsweise
- Start with WHY, gather Needs and Requirements
- Visualize your technical and organizational system by simple static & dynamic Models: Worksflows
Planung
- Vision und kleine, in sich abgeschlossene Schritte, die Feedback ermöglichen (aka „Elephant carpaccio“)
- relatively estimate your work and measure progress against estimates (aka „Evidence-based Planning“)
- Nicht mehr Leistung versprechen, als die Organisation leisten kann
Dokumentation
- Nur so viel Dokumentation wie nötig. Weniger ist mehr.
- Ausführbare Dokumente
- Offene Punkte (Knowledge Gaps) und Entscheidungen nachhalten.
- DRY: Don’t repeat yourself (aka „Single source of truth“)
- Put everything under Version Control that isn’t generated
- Automate and Generate
System-Architektur
- Design by contract and Separation of Concerns: Modules have clear responsibility and interfaces
- Loose coupling and decoupled services
- Information hiding
Design Principles
- Think from the user perspective
- Scenario-based description of functional specification
- Prototyping, Fast feedback and Refactoring
- Design for Reuse
- Design for Test
Testing
- Test Concept contains the hierarchy of tests in form of a pyramid
- Use Point-of-Control and Point-of-Observation
- test relentlessly
- Iterative & incremental development needs test automation
- Test automation is also Software Development and needs architecture and a structured approach