Montag, 22. Mai 2017

Hype Driven Development.

Wer kennt das nicht? Man(n) kommt von einer Tagung oder hat ein cooles YouTube Video gesehen. Dann passiert es - Das muss ich auch machen...
 
Gut oder schlecht... (Wenn man einige Blogs zu diesem Thema liest ist die Meinung: eher schlecht)
 
Klar kann man noch mit Delphi 7 mit dem Sprachumfang von UCSD-Pascal programmieren. Eigentlich spricht da nix gegen, oder?
 
Hey, die Programme laufen und machen das, was die Kunden wünschen - also alles bestens, oder? Viele betreiben so die eigene Firma und verdienen ihr Geld... Also kann es ja nicht schlecht sein!
 
Aber sollte man nicht hin und wieder über den Tellerrand schauen? Der Satz: "Wir haben das doch immer so gemacht.", wird oft benutzt.
 
Eigentlich sind doch Programme nie fertig. Es immer mal ein neues Feature eingefügt oder eine Funktionalität verbessert. I.d.R. alles single-Thread, Main-Thread...
 
Ist das Programm überhaupt noch wartbar? Sollte man mal das Layout überarbeiten, vielleicht das Menü auf Ribbon umstellen oder eine Datenbank verwenden? Die Geschwindigkeit mit Threads verbessern?
 
Vielleicht hilft ein Hype den Sprung zu schaffen... Klar gibt es dann immer eine Lernkurve, aber ist das den so tragisch? Den alten Kopf mal wieder auf "Klassenarbeit steht an", Niveau bringen... 
 
Oft habe ich bei Schulungen oder Tagungen diese Sätze gehört:
 
  • Interfaces - Ja hab ich schon mal gehört, nutzen wir aber nicht.
  • Threads - ja das macht bei uns der Peter, aber der ist seit 4 Wochen krank, wenn der wieder da ist, Frag ich Ihn mal.
  • Factory's - brauche ich nicht, es geht auch so.
  • Dependency Injection - Du immer mit Deinem neumodischen Zeug.
  • Unit Tests - Wollten wir auch mal machen, steht ganz oben auf meiner Liste, aber ich bin bisher nicht dazu gekommen mir das mal an zu sehen.
  • Generics - Hab ich schon mal gehört, das ist doch das Ding mit den spitzen Klammer, oder? Ich nehme für sowas immer einen Pointer.
  • Git/Mercurial - Ist mir zu kompliziert ich zippe meinen Source einfach zusammen.
  • MVVM - Brauch ich nicht, ich kopiere den Source von einem Form in das nächste. Ich will ja auch beim Debuggen sehen, was passiert wenn ich den Button-Klicke.
  • JSON - Hab ich noch nie gebraucht, was macht man damit?


Vielleicht wäre hier ein bisschen Hype-Driven-Development angesagt...


Aber warum das Ganze? Wofür soll ich getrennte testbare Units programmieren, wenn ich sowieso keine Unit-Test mache? Sicherlich kann man sich "zu Tode entkoppeln". Ab wann ist zuviel des Guten eigentlich zuviel?

Mit MVVM, Factories  und nur gegen Interfaces linken, kann schnell zu einer Sucht werden und die IDE findet bei einem Klick auf die Variable immer nur die Factory oder das Interface, leider NIE die gerade aktuelle Implementierung. Was macht ein Klick auf den Button? Das steht da leider nur dann richtig lesbar, wenn man seine Proceduren wirklich gut benennt. Aber auch dann muss man erstmal die entsprechende Unit (ViewModel) finden, die in dieser Implementierung für diese Plattform verwendet wird.
Eine Interfacevariable wir immer nur mit dem Typen und der Adresse angezeigt - ich sehe im Debugger nicht die Belegung. (Vielleicht mal einen Visualizer programmieren?)
Einfacher wird es nicht und wenn man(n) dann noch unstrukturiert auf neue Techniken  los geht - dann ist man(n) schnell in einer Falle die alles noch viel schlimmer macht, als es vorher schon war.

Wäre das der Moment auf meine Schulungs- und Consultingangebote hin zu weisen?

Also doch nicht jeden Hype mit machen, aber sich die "neuen" Techniken rauspicken, die eine bessere Source-Code-Übersicht, besseres Laufzeitverhalten oder höhere Kundenzufriedenheit ermöglichen!


Ich muss nicht jeden Hype mitmachen - nur die Guten...