Pragmatic programming with Andy Hunt (Teil II)
Und weiter...
...gehts hier. Ich musste diesen Eintrag aufspliten da sonst mein Schlafmanagement durcheinander gekommen währe (und das soll vor Prüfungen nicht so toll sein). Der erste Teil meiner Zusammenfassung zum Fortbildungsseminar 'Pragmatic Programming - Overview!' habe ich noch am Dienstag-Abend geschrieben, hier folgt nun der zweite Teil.Infrastucture
Den Teil Infrastructure teilte Andy Hunt wieder in drei Kapitel ein, nämlich "Use version Controlling", "Unit Testing". Für die Anwesenden wahr Version Controlling kein Fremdwort, leider scheint diese Praxis in der Industrie immr noch keine vollständige Verbreitung zu finden. Das wirklich alles ins VC-System gehört geht oft vergessen, oft gibt es kleine Scripts (für den Build, die Installation) die so plötzlich verlohren gehen und kein Mensch weiss danach mehr wie man diesen Arbeitsschritt wieder automatisieren kann.Unit Testing war dann bei weitem nicht so verbreitet. Oft wird der Aufwand für das schreiben des Tests gescheut. Andy Hunt fand jedoch das die Disziplin beim Unit Testing den Code einfacher macht und das Design verbessert.
"Automate everything" löste dann einiges stauenen aus. Jede Stunde eine lauffähige neue Version auf CD gepresst und beschrifftet und das Resultat des Unittests auf einer Lava Lampe ist cool wie nichts. Bei unserem letztem Projekt waren wir aber mit der Hilfe von CruiseControll beinahe schon auf diesem Stand und desshalb erstaunte mich diese Kapitel nicht so sehr wie andere.
Team Practices
Die Kommunikation ist eines der wohl am meisten unterschätzten Themen im Software Engeneering. Die Kommunikation sollte ehrlich und verlustfrei sein, sowie möglichst effizient sein. Dabei brachte er auch das Beispiel das man mal den Kopf ins andere Büro stecken soll anstelle ein eMail zu schreiben. Etwas was ich persönlich feststelle immer wieder nützlich ist. Oft erreicht man durch einen kurzen Fussmarsch ins nächste Büro viel mehr als durch ein eMail ping-pong, gleichzeitig tut man etwas für seine Gesundheit und lernt sich automatisch besser kennen.Schnelle und effiziente Kommunikation kann man laut Andy Hunt durch folgendes erreichen:
- Gespräche, keine Memos
- Klarheit, nicht Erklährung
- Wikis, keine Dokumentreviewsitzungen
- Standup meetings, nicht Status-Memos
- Was habe ich gestern erfüllt?
- Was planne ich heute zu machen?
- Was steht in meinem Weg diese zu tuen?
Zur Organisation meinte er das man das Team wie den Code organisieren soll (und nicht etwa umgekehrt), keine unnötige Zwischenebenen einschieben soll und den Fokus auf die Kommunikation legen soll. Intressant war auch die Geschichte von den Entwickler die in einer Reihe an der Fensterfront arbeiteten. Der Äusserste auf einer Seite erklährte das dass Team einen grossen Server mit einem Thin Client implementiert, jeweiter man nun auf die andere Seite der Tische ging wurde der Server immer einfacher und der Client immer Dicker. Bis am anderen Ende der Tischreihe der Entwickler erklährte das dass Team einen Fat Client mit einem einfachen DB-Server entwickle!
Anforderungen wechseln sich immer. Auch wenn die Anforderungsspezifikation säuberst erarbeitet sind, haben sie pro Monat eine Änderung von gut zwei Prozent. Desshalb ist ein gutes Ausfragen des Kunden (aus meiner Erfahrung: Der Kunde weiss nie was er will) und ein gut änderbares Entwicklungsmodel unumgänglich.
Durch kürzere Iterationen erreicht man besseres Feedback, keine lange nicht gefixte Bugs (Broken-Windows), kann entscheidungen verschieben, vereinfacht die Kommunikation und man lernt dauernd. Das mit dem Feedback und der vereinfachten Kommunikation wird wohl am besten durch das Beispiel unterstützt in welchem eine Firma ein POS-System entwickelt und erst merkt das die Benutzer sich (Aufgrund von Analphabetismus!) nicht einmal einloggen können!
Kurze Iterationen fördern also vorallem schnelles Feedback und dauerndes Lernen!
Zum Schluss
Wie schon mal erwähnt, der Vortrag bot wenig neues (für uns Studenten welche pragmatisches Programmieren durch Mister Sommerlad schon bald ein Jahr eingetrichtert bekommen). Vorgetragen waren das ganze aber genial und mit vielen Praxisbeispielen untermauert. Schlussendlich ist es wohl auch wichtig das man all diese Punkte immer wieder aufgedrückt bekommt.Was ich aus dem Vortrag mitnehme ist das das Wichtigste in Software Projekten (und wohl auch allen anderen) dauerndes Lernen und gutes Kommunizieren ist.





