Nun entwickelt mal schön
30.08.2007 Permalink In den letzten Monaten begegnet mir gelegentlich die Erwartungshaltung bei Kunden, dass Software-Projekte starten können, sobald jeder im Team mit einem Notebook ausgestattet ist. Da das bei Beratern ja Grundausstattung ist, reicht es mithin, das Team zu engagieren und schon produziert es Software...Dass die individuelle Hardwareausstattung natürlich nur die halbe Miete ist, ist mir gerade kürzlich wieder schmerzhaft aufgefallen. Davon will ich hier berichten. Bei der Gelegenheit gebe ich auch eine Checkliste wieder, was man grundsätzlich an Infrastruktur und Werkzeugen für ein Software-Projekt braucht, damit es nicht ständig ins Stolpern gerät.
Da waren wir also gerade fertig, ein Fachkonzept für das erste kleine Release zusammenzuschreiben, als auch schon die Entwicklung starten sollte. Unsere Infrastruktur bestand aus Tischen, Stühlen, Notebooks, einem WLAN und einem zentralen E-Mail-System. Das war's.
Zum Verteilen von Software und gemeinsamen Bearbeiten von Dingen wie Projekt- oder Releaseplänen sowie Einsammeln von Aufwandsschätzungen wäre ein zentrales Fileshare eine tolle Sache gewesen, damit nicht alle fünf Minuten jemand fragt, ob man ihm/ihr mal die aktuelle Version von dies oder jenem schicken kann. Für den Entwurf und die Verprobung der Software-Architektur brauchten wir zumindest mal Testlizenzen der Zielplattform. Als wir mehr als einen winzigen Prototypen hatten, brauchten wir zwingend ein zentrales Versionsverwaltungssystem. Um sicher zu sein, dass unsere Codebasis nicht inkonsistent wird, fehlte uns ein zentraler Build. Und so setzt sich die Geschichte der Stolpersteine fort. Es waren keine Probleme dabei, die wir nicht schnell im Griff gehabt hätten, aber es nervt und kostet jedesmal... Wahrscheinlich habe ich in den Jahren davor unter zu günstigen Umständen gearbeitet, um sofort zu merken, dass die fehlende Infrastruktur viel unserer Zeit und Nerven fressen würde.
Nun behaupte ich hier nicht, dass man ein Jahr Vorlauf braucht, um einen riesigen Hardware- und Software-Apparat nebst Administrationsmannschaft zu installieren, bevor's losgeht. Aber die folgenden Dinge sollte man auf jeden Fall planen und rechtzeitig bereitstellen, sonst zahlt man das Team für's Warten-und-sich-dabei-ärgern:
Basics
- Arbeitsplätze, die Ruhe ermöglichen, Telefone
- Viele Weißwandtafeln
- Besprechungsräume / Moderationsmaterial / Beamer
- Office-Software
- E-Mail-System mit geeigneten Verteilern
- Schneller Internet-Zugang
- Projektakte auf zentralem Fileshare oder alternativ Web-gestützt
- Zentrales Versionsverwaltungssystem
- WikiWikiWeb
- Projektplanungswerkzeug
- Werkzeug zur Erfassung von Ist-Aufwänden und Restschätzungen
- Change-Management-System, alternativ ein Ticketing Tool wie Bugzilla oder Trac
- Werkzeug zum Anforderungsmanagement, alternativ ein Ticketing Tool
- Modellierungswerkzeug
- Rapid-Prototyping-Werkzeuge, um UI-Prototypen zu entwerfen
- Testunterstützungswerkzeug zum Erfassen und Verwalten von Testfällen
- Build-Server
- Software / 3rd Party Library Repository
- Testumgebung als Referenz
- Werkzeuge und ggf. notwendige Lizenzen für Build, Modellierung, Generierung, Codeanalyse, IDE, DB-Zugriff usw.
- Testlizenzen für Produkte der Zielplattform
- Ticketing Tool zur Verwaltung von Fehlermeldungen
- Testumgebungen für System- und Verbundtests
- Testunterstützungswerkzeug zum Planen und Abrufen von Testfällen, Steuerung und Protokollierung der Durchführung, sowie Statistikenerzeugung
- Ggf. Capture-Replay-Werkzeuge
- Ggf. Lasttestwerkzeuge und Lasttestumgebung
Die Menge an Bestandteilen ist zwar überschaubar, aber bis das alles rund läuft, dauert's schon ein wenig. Meine heiße Empfehlung ist, dass die Projektleitung jemanden mit dem Aufbau und der Wartung der Infrastruktur beauftragt, denn gerade zu Beginn gibt es viel für den werdenden Software-Produktionsbetrieb, den jedes erfolgreiche Projekt zum Leben erwecken muss, zu tun. Je nach Größe kann es sogar angemessen sein, auf Dauer ein kleines Infrastruktur-Team zu unterhalten, um Ruckeleien schnell aus der Welt zu schaffen. Das kostet natürlich, aber wie bei so vielen Entscheidungen, ist es ein Abwägen: was kosten mich ein zur Unproduktivität verurteiltes Team im Vergleich zum Personal für eine Infrastrukturtruppe?
Im übrigen ist unabhängig davon das Erfassen der Aufwände, die auf Reibereien in der Infrastruktur zurückzuführen sind, wertvoll, um beurteilen zu können, ob die eigentliche Projektarbeit unter solchen Mängeln leidet oder nicht. Damit hat man einen objektiven Indikator, der einem bei der Argumentation helfen kann, mehr Personalbudget für die Beseitigung der Mängel zu bekommen.