Software existiert, um bestimmte Probleme zu lösen. Deshalb verstehen Entwickler ein Problem, entwerfen eine passende Lösung und setzen sie um. Dabei sind abstraktes und strukturelles Denken starke Werkzeuge, um Probleme zu verstehen und Entwürfe zu erstellen.
Oft werden abstraktes und strukturelles Denken schwer verständlich oder sehr vage erklärt. Es gibt jedoch ganz klar konkrete Methoden für diese Denkweisen. In diesem Vortrag wird vorgestellt, wie Entwickler konkret abstrakt und strukturiert denken können und wie sich diese Denkweisen auf Domain-Modellierung, Refactoring, Architektur und andere Aspekte des Softwaredesigns anwenden lassen.
- Die Aufgabe von Entwicklern ist es, Programme zu erstellen
- Programme werden erstellt, um bestimmte Probleme zu lösen, und Probleme werden gelöst, um das Business zu unterstützen
- Die Erstellung von Programmen besteht aus vier Schritten
- Verstehen / Analysieren -> Entwerfen -> Implementieren -> Feedback
- Je erfahrener Entwickler werden, desto stärker sind sie nicht nur am Schreiben von Code beteiligt, sondern an allen diesen Phasen
- Senior-Entwickler lösen Probleme auf Basis erfahrungsgetriebener Intuition schnell
- Intuition kann jedoch riskant sein. Deshalb ist es wichtig, Methoden zu erlernen
- Abstraktes und strukturelles Denken bilden die Grundlage solcher Methoden
- Abstraktion bedeutet, aus Elementen das Gemeinsame oder das Interessierende herauszuziehen
- Daher kann man Abstraktion als das Vereinfachen und anschließende Neuinterpretieren von Dingen verstehen
- Mit reduktionistischem Denken in Bezug auf Elemente lässt sich vereinfachen und neu interpretieren
- Nicht nur Elemente, sondern auch Verhalten lassen sich abstrahieren
- Abstraktion hat Ebenen
- Es gilt, das passende Abstraktionsniveau zu wählen
- Übermäßige Abstraktion ist nicht gut, weil die konkrete Substanz dann nicht mehr erkennbar ist
- Strukturelles Denken bedeutet, Inhalte überschneidungsfrei und lückenlos zu ordnen
- Ähnlich dem MECE-Framework
- Wichtig ist nicht, dass alles zwingend vollkommen überschneidungsfrei und lückenlos geordnet sein muss
- Strukturierung hat wie Abstraktion ebenfalls Stufen. Man kann einen Schritt weiter zurücktreten und auf das Ganze blicken
- Es gibt konkrete Methoden für abstraktes und strukturelles Denken
- Top-down und Bottom-up
- Modelle
- Classification
- Abstraction
- Generalization
- Framework-Denken
- Abstraktes und strukturelles Denken lässt sich auf das Softwaredesign anwenden
- Teilt man die Implementierung von Software grob in drei Bereiche, ergeben sich Domain-Modellierung, Architektur und das Schreiben von Code
- Bei der Domain-Modellierung lassen sich Anforderungen abstrakt herausarbeiten und schrittweise erweitern
- Architektur beschreibt die Art und Weise, wie gearbeitet wird
- Wie arbeitet man, wie teilt man auf
- Architektur folgt dem Prozess Anforderungen -> Konzept -> Implementierung -> Feedback
- Ein abstraktes Architekturkonzept lässt sich schrittweise konkretisieren
- Programmierparadigmen sind eine Perspektive darauf, wie man die Bestandteile von Software betrachtet
- Logik lässt sich aus drei Perspektiven betrachten: Function, Usecase, Aspect
- Syntactic Sugar ist abstrahierte Programmiersyntax
- Kann auch zum Nachteil werden
- Refactoring lässt sich aus sechs Perspektiven betrachten: Paradigma, Codegröße, Ownership, Vorhandensein von Duplikaten, Änderbarkeit und Abhängigkeiten
- Für Refactoring gibt es drei Methoden: Abstraktion, Strukturierung, Generalisierung
- Um die Fähigkeit zu abstraktem und strukturellem Denken zu entwickeln, ist es hilfreich, vielfältige Erfahrungen zu sammeln
- Visualisierung in Form von Schaubildern hilft sehr
- Intuition ist empiristisches Denken. Sie kann Zeit sparen, aber auch riskant sein
- Muster helfen dabei, abstraktes Denken zu erlernen
- Abstraktes und strukturelles Denken ist nicht in jedem Fall ein Allheilmittel
10 Kommentare
Vielen Dank für die Präsentationsfolien und die Zusammenfassung des Inhalts.
Dem Benutzernamen nach zu urteilen sind Sie selbst der Vortragende! Ich konnte wegen Pech bei der Infocon-Verlosung nicht teilnehmen, daher vielen Dank fürs Teilen der Vortragsfolien :)
Vielen Dank. :D Ich hoffe, mein Material war hilfreich!
Vielen Dank für die ausführliche Zusammenfassung.
Die Zusammenfassung hat länger gedauert als gedacht ^^;; Vielen Dank fürs Lesen!
Danke für den guten Artikel und die Zusammenfassung~
Danke, dass Sie das so positiv sehen :D
Das war sehr gut zu lesen!
Man muss das passende Abstraktionsniveau festlegen.
-> Hier gibt es einen Tippfehler :)
Vielen Dank fürs Prüfen. :) Aber es scheint, als könne man einen Beitrag nach dem Veröffentlichen nicht mehr bearbeiten, schluchz schluchz
Aha, das wusste ich nicht. Danke fürs Nachsehen!