Ich habe in den letzten Jahren einige Langläuferprojekte mitgemacht. Und immer wieder komme ich zu dem Schluss: entscheidend ist der Start. Gerade dort werden Fehler gemacht. Gerade dort wird der falsche Weg eingeschlagen.
Für mich kristallisieren sich drei Kernpunkte heraus:
- Team
- Kommunikation
- Umgebung
Team
Gut funktionierende Projekte benötigen gute Leute. So einfach ist das. Konnte ich keine finden, habe ich ein Problem. Schnell aus Freiberuflern ein Team zu stricken, ist mehr als fehleranfällig. Eher würde ich komplette, erfahrene Teams beauftragen. Besser ist es dann, das eigene Team um ein, zwei Mentoren aufzustocken. Diese sollten zumindest das Bootstrapping begleiten. Hernach kann auch ein Team aus jungen Entwicklern bei regelmäßiger Kontrolle und Finetuning nicht völlig vom Weg abkommen.
Kommunikation
Ausschlaggebend ist aber die Kommunikation im Team (und zum Management oder anderen Abteilungen). Man muss eine Kultur des ständigen Austausches entwickeln. Dies gelingt natürlich durch Daily Standups. Verstärkt wird es durch ein Bürolayout ausgelegt auf osmotische Kommunikation: Whiteboards, Flipcharts, Pairing. Eine weitere Ingredienz ist die Kultivierung von BoFs (Birds of a feather): jedes Teammitglied wird dazu angehalten, vor den anderen einen Abriss zu einem bestimmten Thema zu geben. Es geht hierbei darum, in andere Themenkomplexen hinein schauen zu können. Jemand, der seine Tage damit verbringt, Backendtechnologien zu entwickeln, soll ein Gespür für aktuelle Frontendthematiken entwickeln. Dies fördert generell das Verständnis untereinander. Nicht nur das eigene Problemfeld ist kompliziert. Auch ergeben sich manchmal interessante neue Ansätze, wenn Themenfremde unvermittelt alternative Ideen einbringen.
Umgebung
Mit Umgebung meine ich hier eher das technische Umfeld. Viele Projekte sind schon stolz, wenn sie eine IDE einsetzen und halten etwas wie Subversion für den Gipfel der Möglichkeiten (ich habe mehrfach erlebt, wie Leute sich mit Händen und Füßen an Visual Sourcesafe gekrallt haben). Effektiv ist das aber nur der Anfang. Gibt es eine gemeinsame Buildumgebung (Ant oder Maven)? Gibt es eine Plattform für Continuous Integration (Hudson, Teamcity)? Werden alle Bereiche der Software getestet (Unittests, Integrationtests)? Was ist mit Oberflächentests (Selenium, Webunit)? Sind die Tests wartbar? Sind die Ergebnisse interpretierungsfrei verständlich? Kann umstandslos in eine Referenz- oder Produktionsumgebung hinein deployed werden?
Es kann alles wieder korrigiert werden. Keine Frage. Nur warum erst in die Probleme laufen?
Related posts:






