Keine Angst vor Komplexität
Wie es uns gelingt, passende Websites und Websoftware zu entwickeln, die über viele Jahre funktionieren
Wie komplex ein Projekt ist, kann man nur mit Weitsicht und der nötigen Sachkenntnis richtig einschätzen. Dies im Vorfeld zu tun ist wichtig! Denn funktionsfähige, einsetzbare Software fristgerecht zu liefern, mit der der Kunde gut zurecht kommt, ist nicht selbstverständlich (obwohl man das meinen sollte). Laut einer auf Wikipedia veröffentlichten Studie zu Softwarequalität wurden in Deutschland im Studienzeitraum 2002-2004 nur knapp 30% aller entwickelten Software fristgerecht und funktionsfähig ausgeliefert. 18% aller Projekte scheiterten komplett, 56% überschritten die Kosten, 84% überschritten den Abgabetermin. Auch zu uns kamen schon Kunden mit gescheiterten oder abgebrochenen Projekten, die der Programmierer nicht fertiggestellt bekommen hat. Eine frustrierende Erfahrung für den Auftraggeber und ganz sicher auch den Entwickler, der offenbar seine Fähigkeiten und Möglichkeiten falsch eingeschätzt hat!
Die richtige Einschätzung unserer Möglichkeiten
Wir sind eine kleine Firma und müssen unsere Möglichkeiten – unsere Kapazitäten, die verwendeten Technologien und das dazu nötige Fachwissen – realistisch einschätzen.
Bereits bei der Anfrage und beim Erstgespräch analysieren wir, ob ein Projekt zu uns passt. Hat es die richtige Größe? Wie komplex sind die Anforderungen? Welche Technologien benötigen wir, um das umzusetzen? Mit unserer Einschätzung lagen wir bisher immer richtig, denn es gab noch kein Projekt, bei dem wir „in die Knie gegangen sind“.
Fragen, die wir uns stellen, um unsere Kapazitäten richtig einzuschätzen:
- Wieviele Projekte können wir zeitgleich mit der nötigen Sorgalt bearbeiten?
- Können wir die gewünschten Zeitpläne einhalten?
- Wie komplex sind das Projekt, wieviel Neues ist zu lernen?
- Wieviele Technologien können wir gleichzeitig einsetzen und das nötige Fachwissen bereithalten und, wann immer notwendig, auffrischen?
Fragen, die wir uns stellen, um die Kapazitäten des Kunden richtig einzuschätzen:
Unsere Kunden sind kleine und mittelständische Firmen, deren Budgets oft überschaubar sind. Deshalb prüfen wir vorab den Rahmen, den das Budget vorgibt, in Bezug auf die Anforderungen und das zu erreichende Ziel.
- Können wir das Projekt zu diesem Budget annehmen und den Anforderungen gerecht werden?
- Sind die personellen Kapazitäten auf Seiten des Auftraggebers vorhanden?
- Gibt es einen Ansprechpartner für unser Projekt, der uns jederzeit zur Verfügung steht und der Entscheidungen treffen oder herbeiführen kann? Der sich ständig über den Projektfortschritt informiert und mitwirkt, z.B. durch Tests?
Anforderungen an eine Software oder eine Website über viele Jahre Laufzeit:
- Funktionsfähigkeit
Die Software macht, was sie soll. Technische Updates sind nötig und werden von Zeit zu Zeit eingespielt. - Nutzerführung und Bedienbarkeit:
Der Anwender versteht die Abläufe und kann sie anwenden. Modernisierungen sind von Zeit zu Zeit nötig und werden umgesetzt. - Verstehbarkeit und Durchdringungsgrad:
Sowohl Kunde als wir als Entwickler können noch nach Jahren nachvollziehen, was wir wie gelöst haben und warum. Wir halten das Projekt schlank und verstehbar. Funktionen, die mit der Zeit unnötig geworden sind, werden entfernt.
Wir haben angemessene Wege und Werkzeuge gefunden bzw. selbst entwickelt, um dies alles zu leisten. Viele der Homepages, die wir erstellt haben, laufen schon 10 Jahre und länger. Sie haben bereits mehrere Redesigns und Erweiterungen erlebt!
Manche Projekte beginnen klein und wachsen über Jahre zu komplexer Software. Dieser Prozess erfordert unsere ganze Aufmerksamkeit in Hinblick auf Steuerung, Überwachung und Dokumentation des Projektes und seiner Funktionalitäten.
Was wir tun, um die Komplexität zu beherrschen:
- Abläufe und Checklisten
- Dokumentation und Wiki
- Versionskontrollsystem
- Ticketsystem und Aufgabenverwaltung
- Testbereich als Eintwicklungumgebung
- Projekte und Kundenkommunikation aktiv und verantwortlich steuern
- Meilensteine festlegen und Zwischenabnahmen durchführen