Fragst du dich auch oft, warum die Entwicklung von Software manchmal so lange dauert. Liegt es an den Technologien oder ist es eher der Tatsache geschuldet, wie wir an die Sache rangehen?
Ja, Softwareentwicklung wird unterschätzt - aber von allen Beteiligten😁 Kunden unterschätzen sie, weil sie nicht verstehen, dass etwas so Immaterielles so schwer zu verändern sein kann. Manager unterschätzen sie aus demselben Grund und auch noch, weil sie glauben, top talent eingekauft zu haben, das doch schnell&zuverlässig sein muss. Und Softwareentwickler unterschätzen sie, weil sie auf die Herstellung von Softwareverhalten getrimmt sind; deshalb die Obsession mit Technologien.
Nach 14 Jahren Clean Code Fokus glaube ich, das lässt sich nicht ändern - weil darin eine Wahrheit steckt. Entwicklung (!) bedeutet, dass man nicht weiß, wie (!) (gar, ob!) Anforderungen erfüllbar sind. Dieses Problem zu lösen, saugt dann alle Energie auf. An Nachhaltigkeit nicht zu denken.
Verhaltensanforderungen überhaupt zu erfüllen braucht ein anderes Bewusstsein als sie nachhaltig zu erfüllen. Beides muss geschehen, nur weitgehend getrennt.
Das braucht unterschiedliche Mindsets, deshalb evtl unterschiedliche Leute, deshalb unterschiedliche Phasen/Zeiten des Fokus. In TDD steckt diese Wahrheit in der Trennung red-green-refactor:
- red: Problem verstehen
- green: funktionale Lösung finden
- refactor: nachhaltige Lösung erarbeiten
Diese Trennung im Kleinen muss ins Große überführt werden.
Für green existieren Begriffe wie Prototyp od Spike, aber die treffen es nicht genau. Sie gehören zu green, doch sie beziehen sich nicht auf Produktionscode. Deshalb sind sie in Ungnade gefallen. Nachhaltigkeit wird solange nicht selbstverständlich hergestellt werden, solange die Phasen nicht gut begrifflich unterschieden werden. Wo uns die Worte fehlen, fällt das Denken u Kommunizieren schwer.
Vorschlag:
- red code: Code, der dem Problemverständnis und dem Lösungsentwurf dient. Prototyp, Spike, Test. All das ist kein Produktionscode.
- green code: Produktionscode, der die Lösung kurzfristig implementiert; funktionale u nicht-funktionale Anforderungen sind erfüllt.
- white code: Produktionscode, der nachhaltig ist. White code entsteht durch Refactoring von green code. Oder auch mal durch einen rewrite.
Produzenten dieser Codes stehen im Austausch miteinander. Sie dürfen einander nicht ignorieren, aber auch nicht behindern.
Ja, ich denke, diese Trennung muss sein. Sie folgt dem Single Responsibility Principle: jede Entscheidung sollte gekapselt werden. In den Phasen sind die Entscheidungen/Prinzipien sehr unterschiedlich. Die Ziele sind anders. Keines hat Vorrang; alle müssen erreicht werden. Nicht nur Yin und Yang, auch Yong😂
Softwareentwicklung unterschätzt
Ja, Softwareentwicklung wird unterschätzt - aber von allen Beteiligten😁 Kunden unterschätzen sie, weil sie nicht verstehen, dass etwas so Immaterielles so schwer zu verändern sein kann. Manager unterschätzen sie aus demselben Grund und auch noch, weil sie glauben, top talent eingekauft zu haben, das doch schnell&zuverlässig sein muss. Und Softwareentwickler unterschätzen sie, weil sie auf die Herstellung von Softwareverhalten getrimmt sind; deshalb die Obsession mit Technologien.
Nach 14 Jahren Clean Code Fokus glaube ich, das lässt sich nicht ändern - weil darin eine Wahrheit steckt. Entwicklung (!) bedeutet, dass man nicht weiß, wie (!) (gar, ob!) Anforderungen erfüllbar sind. Dieses Problem zu lösen, saugt dann alle Energie auf. An Nachhaltigkeit nicht zu denken.
Verhaltensanforderungen überhaupt zu erfüllen braucht ein anderes Bewusstsein als sie nachhaltig zu erfüllen. Beides muss geschehen, nur weitgehend getrennt.
Das braucht unterschiedliche Mindsets, deshalb evtl unterschiedliche Leute, deshalb unterschiedliche Phasen/Zeiten des Fokus. In TDD steckt diese Wahrheit in der Trennung red-green-refactor:
- red: Problem verstehen
- green: funktionale Lösung finden
- refactor: nachhaltige Lösung erarbeiten
Diese Trennung im Kleinen muss ins Große überführt werden.
Für green existieren Begriffe wie Prototyp od Spike, aber die treffen es nicht genau. Sie gehören zu green, doch sie beziehen sich nicht auf Produktionscode. Deshalb sind sie in Ungnade gefallen. Nachhaltigkeit wird solange nicht selbstverständlich hergestellt werden, solange die Phasen nicht gut begrifflich unterschieden werden. Wo uns die Worte fehlen, fällt das Denken u Kommunizieren schwer.
Vorschlag:
- red code: Code, der dem Problemverständnis und dem Lösungsentwurf dient. Prototyp, Spike, Test. All das ist kein Produktionscode.
- green code: Produktionscode, der die Lösung kurzfristig implementiert; funktionale u nicht-funktionale Anforderungen sind erfüllt.
- white code: Produktionscode, der nachhaltig ist. White code entsteht durch Refactoring von green code. Oder auch mal durch einen rewrite.
Produzenten dieser Codes stehen im Austausch miteinander. Sie dürfen einander nicht ignorieren, aber auch nicht behindern.
Ja, ich denke, diese Trennung muss sein. Sie folgt dem Single Responsibility Principle: jede Entscheidung sollte gekapselt werden. In den Phasen sind die Entscheidungen/Prinzipien sehr unterschiedlich. Die Ziele sind anders. Keines hat Vorrang; alle müssen erreicht werden. Nicht nur Yin und Yang, auch Yong😂