Fort- und Weiterbildung  /  17. September 2020  -  19. November 2020

Online-Workshop: »Pragmatischer Softwareentwurf«#

Softwareentwurf ist in Ungnade gefallen. Früher war er eine ehrenvolle Disziplin unter dem Dach eines ehrenwerten Gewerbes: Software Engineering. Dann kamen Agile, und TDD, und Software Craftsmanship. Bewusster, systematischer Softwareentwurf wurde in kurzer Zeit zum Synonym für BDUF (Big Design Up-Front) von Astronautenarchitekten. Und das ist sicherlich keine Aufgabe, die es wert ist, dass echte Programmierer sich damit abgeben, die hart daran arbeiten, Kunden in kleinen Schritten Mehrwert zu liefern. 

Aber so sehr der frühere Ansatz der Softwareentwicklung auch problematisch war, Design als Relikt von Elfenbeinturm-Denke zu brandmarken hat das Kind mit dem Bade ausgeschüttet. Das Ergebnis: mehr Code, weniger Struktur, mehr Gesprächsstoff, weniger gemeinsames Verständnis.

Ziel

Dieser Workshop versucht daher, für Sie etwas von dem, was verloren gegangen ist, wieder zu gewinnen. Es geht darum, ein Gleichgewicht zwischen Formalismus und Zweckmäßigkeit zu finden. Er bringt explizites, bewusstes, systematisches Software-Design dorthin zurück, wo es hingehört: in die Schützengräben der Softwareentwicklung. Jeder Entwickler sollte zumindest die Grundlagen des Softwareentwurfs beherrschen. Das bedeutet, dass er/sie in der Lage sein sollte, Modelle für Lösungen vor und unabhängig vom Code zu entwickeln und auszudrücken.

Explizites Software-Design ist einfach eine Frage der Produktivitätssteigerung: Lösungen werden leichter gefunden, werden besser akzeptiert und können besser koordiniert implementiert werden. Dies unterstützt Teamarbeit wie Agilität.

Dieser Workshop lehrt einen sehr eklektischen, praxiserprobten Ansatz für das Software-Design. Entwicklern soll ein Denkwerkzeug an die Hand gegeben werden, das es ihnen ermöglicht, Lösungen in ihren Köpfen zu formen, sie schnell für sich und andere zu visualisieren und am Ende leicht in sauberen Code zu übersetzen.

»Flow-Design«, wie der Ansatz genannt wird, bezieht sich sowohl auf Objektorientierung (OO) als auch auf funktionale Programmierung (FP). Die Entwicklung von Legacy-Code wird im Kern angegangen: Flow-Design beseitigt endlich funktionale Abhängigkeiten.