Beitrag erstellt am: 06.12.18
Eine kleine Liste meiner Einsichten, die mich bei meiner täglichen Arbeit leiten. Jeder Punkt ein Thema, das mindestens
ein Buchkapitel verdienen würde - ohne Anspruch auf Vollständigkeit, vielleicht nicht immer zwingend notwendig und sicher nicht hinreichend.
- Halte die intellektuelle Beherrschbarkeit hoch
- Trenne technische und fachliche Komponenten konsequent
- Ordne die Komponenten in deinem System mit Hilfe von Software-Kategorien
- Strukturiere fachlichen Themen mit Hilfe von abgegrenzten Kontexten (Bounded Context)
- Ports & Adapter und DIP sind deine Freunde
- Bevorzuge leichte Ersetzbarkeit gegenüber Wiederverwendung
- Unterschätze niemals die Benutzerschnittstelle
- Unterscheide zwischen Kommandos und Abfragen -> CQRS
- Entwerfe deine Systeme ereignisbasiert und reaktiv
- Achte auf ausgewogene Abstraktionsebenen -> Komponenten, Typen, Fehler und Ausnahmen
- Hüte dich vor leckgeschlagenen Abstraktionen
- Modelliere konsequent mit Hilfe von ausdrucksstarken Domänentypen -> Domain Primitives
- Mache Sicherheit zu einem integralen Bestandteil deines Entwurfs: «Shift left on Security»
- Bevorzuge Unveränderlichkeit (Immutability)
- Nutze algebraische Datentypen