Hier ist ein interessanter Vortrag über Software-Design: Hammock Driven Development von Rich Hickey. In vielen Punkten stimme ich dem Gesagten zu:
- Software-Design lässt sich nicht erzwingen, Ideen kommen nicht auf Befehl
- gutes Design braucht Erfahrung: neue Ideen entstehen nicht völlig neu, sondern sind meist eine Kombination und/oder Fortschreibung anderer Lösungen
- deshalb sollte man sich ständig vielfältigen Anregungen aussetzen und interessante Lösungen untersuchen, auch fachfremde: interdisziplinäres Denken; »der Kluge lernt aus allem und von jedem«
- um ein Problem lösen zu können, sollte man es erst analysieren und verstehen; nicht alles gleich zum Nagel machen, weil man einen Hammer in der Hand hält
- Ideen brauchen manchmal Zeit, manchmal nur eine Auszeit beim Kaffee als Ablenkung, um frisch und unbelastet ans Werk zu gehen, oder manchmal fällt es einem am nächsten Morgen plötzlich wie »Schuppen von den Augen«, aber es kann auch Wochen dauern, bis man den richtigen Blickwinkel auf die Frage findet, um die Lösung zu sehen
- deshalb sollte man ständig bereit sein, die Idee zu »empfangen«: mir selbst passiert es oft, dass in völlig anderen Situationen ein Stichwort fällt und ich denke »Mensch, das ist es, so kannst Du das lösen« oder dass der Groschen fällt und mir plötzlich klar wird, warum etwas so ist
- aber diese Zeit ist meist gut investiert, da das Software-Design in der Regel die Arbeit flankiert und damit vieles (gewollt und bedauerlicherweise) ausschließt, wodurch ein späterer Richtungswechsel sehr aufwändig ist.
- dennoch sollte man von beginn an die Komplettüberholung in Aussicht stellen. Viele Probleme und Anforderungen werden erst während der Entwicklung deutlich und oft ändern sich die Anforderungen mit der Zeit. Deshalb nicht an Lösungen klammern und sie zum Schaden fortführen, sondern immer die Offenheit und Bereitschaft für eine Version 2, 3, 4 u. s. w. kommunizieren.
Der Vortrag hat mich auch sehr an das Buch Pragmatic Programmer erinnert, das ich vor Jahren schon gelesen habe und immer wieder empfehlen kann. Auch darin wird Software-Entwicklung und der Entwurf als etwas Ganzheitliches, als eine kreative Arbeit beschrieben, die man nicht einfach mechanisch durchführen oder erlernen kann, sondern sie ist das Ergebnis eines wachen und angeregten Geistes. Software-Entwickler zu sein ist mehr wie eine Lebensphilosophie, die den gesamten Alltag durchzieht und nicht nur am Computer passiert.
Das wäre nämlich auch meine Kritik an dem Vortrag, dass dort die Arbeit wie ein Kuchenrezept dargestellt wird und »dann schiebt man den Kuchen in den Ofen und wartet«. So ist es leider nicht ganz. Man kann den Geist mit bestimmten Techniken und Aktionen stimulieren, aber darauf muss der Geist nicht ansprechen. Bei nicht jedem fällt der Groschen und nicht alle sind in dieser Hinsicht gleichmäßig begabt. Das muss man eben auch anerkennen.