Mein Angebot

Freie Mitarbeit bei der technischen Steuerung von Software-Projekten

Worum es geht

Eine umfangreiche Software-Lösung soll in Ihrem Unternehmen entwickelt, geändert, eingeführt oder neu angepasst werden.

Es gibt viele beteiligte Nutzer und Teams. Die Software wird von mehreren Standorten oder Ländern aus verwendet. Verschiedene Systeme müssen miteinander verbunden oder integriert werden.

Anwender, Management und technische Verantwortliche sollen zusammenarbeiten. Architektur-Themen bei Hard- und Software sind zu klären. Anforderungen müssen spezifiziert werden, Zeit und Budget sind knapp.

Die Software soll sicher, performant und hochverfügbar sein.

Und sie soll nicht zuletzt das tun, was von ihr erwartet wird: sich messbar positiv auf Ihr Geschäft auswirken.

Ich habe viel Erfahrung mit derartigen Herausforderungen und helfe Ihnen, die damit verbundenen zwischenmenschlichen und technischen Themen anzugehen und zum Erfolg zu führen.

Systematisch helfe ich Ihnen, Ihre Ziele zu erreichen

Analyse der Ausgangs-Situation

Schildern Sie mir Ihre Situation und Ihr Anliegen. Komplexe Software-Systeme mit vielen Beteiligten erfordern es, die Ausgangs-Situation gut zu verstehen, wenn Neuerungen und Änderungen herbeigeführt werden sollen. Ich spreche dazu mit den Beteiligten unterschiedlicher Verantwortungs-Bereiche. Ich mache mir ein Bild von der gegebenen Infrastruktur, den aktuellen Prozessen und Bedürfnissen.

Klärung der Ziele und Projekt-Richtung

„Wo wollen wir hin?“ ist die nächste Frage, die es zu klären gilt. „Was soll das Ergebnis sein?“

Beschreiben Sie mir Ihre Ziele, die sich aus Ihrem geschäftlichen Verantwortungsbereich ergeben. Ich halte es für wichtig, zusätzlich die Sichtweisen und Bedürfnisse aller anderen Projekt-Beteiligten transparent zu machen, um Motivationen zu verstehen und auch um potentiellen Konflikten frühzeitig begegnen zu können. Aus Ihren Zielen ergibt sich eine klare Richtung, in die das Projekt starten kann.

Geschäftsprozess-Analyse und Anforderungs-Management

Für ein erfolgreiches Software-Projekt ist es unabdingbar, kontinuierlich Klarheit über die gegebenen Anforderungen und deren Priorisierungen zu haben. Ich halte es nicht für erforderlich, dass zu Beginn eines Projekte alle Anforderungen bis ins kleinste Detail spezifiziert werden. Auf einer groben Ebene sollte die angestrebte Lösung allerdings vollständig beschrieben sein. Dies setzt bereits umfangreiche Arbeiten voraus, die optimalerweise durch persönliche Vor-Ort-Workshops unterstützt und vorangetrieben werden.

Welche Benutzergruppen sollen die Software nutzen können? Wie sollen die Schnittstellen der Software zu den Nutzern und zu anderen Systemen aussehen? Welche Handlungen sollen den Nutzern durch die Software ermöglicht werden? Welche Daten sollen gespeichert werden? Welche Geschäftsprozesse sollen durch die Software umgesetzt werden? Welche Anforderungen ergeben sich in Bezug auf die physische Umgebung und eingesetzte Technologie? Welche Qualitätsziele soll die angestrebte Lösung erreichen?

Vermittlung zwischen allen Projektbeteiligten

In umfangreichen Software-Projekten entstehen Probleme häufig durch mangelhafte Kommunikation. Die Projektbeteiligten haben sehr unterschiedliche Sichtweisen auf das gemeinsame Projekt.

Manager achten beispielsweise auf die Geschäftsprozesse und die gesamte Wirtschaftlichkeit, Datenbank-Administratoren auf sichere und performante Datenbanken, der Betrieb auf stabile Technik und die Einhaltung von Standards und Vorgaben. Für die Software-Anwender stehen Nützlichkeit und Arbeitserleichterung im Vordergrund. Während sie echte Lösungen für ihre Anliegen suchen, will der Support oft möglichst schnell Fehler-Tickets schließen.

Oft sind auf der Anwender-Seite jedoch auch sehr unterschiedliche Fachbereiche einbezogen und so ergeben sich auch dort unterschiedliche Anforderungen und Sichtweisen. Hinzu kommt, dass die Beteiligten häufig an unterschiedlichen Standorten und in unterschiedlichen Zeitzonen arbeiten.

In solchen Situationen verschaffe ich mir den Überblick über die wesentlichen Beteiligten und sorge dafür, dass sie effizient, effektiv und in möglichst konstruktiver Atmosphäre kommunizieren, entscheiden und sich abstimmen können.

Mitarbeit an der Architektur von Software und Hardware

Früh getroffene Architektur-Entscheidungen haben später oft bedeutende Auswirkungen auf die Lösung. In meinem Verständnis ist Architektur ein kontinuierlicher Prozess, der nicht ausschließlich von einzelnen Architekten durchgeführt wird, sondern der ständigen Dialog mit allen Beteiligten erfordert.

Bei der Mitarbeit an der Architektur von Software-Lösungen sind mir mehrere Aspekte wichtig: Das Produkt soll möglichst unkompliziert änderbar sein, so dass auf neue Gegebenheiten leicht reagiert werden kann. Gleichzeitig müssen die Kosten der Architektur im Blick behalten und minimiert werden. Die geforderten Qualitätsziele des Produktes müssen erreicht werden und die Zufriedenheit der beteiligten Verantwortlichen und Nutzer soll so hoch wie möglich sein.

Projektplanung und kontinuierliche Projekt-Steuerung

In komplexen Software-Projekten lernen die Beteiligten ständig Neues: über andere Beteiligte, über die Lösungs-Optionen der Software und über die gegebenen und gewünschten Prozesse. Hinzu kommt, dass sich oft äußere Rahmenbedingungen ändern, beteiligte Personen wechseln, unvorhersehbare Hindernisse oder auch neue Möglichkeiten auftauchen.

In einem solch dynamischen Umfeld halte ich es für sinnvoll, eine grobe Planung und feste Ausrichtung für das Gesamtprojekt zu haben, im Detail aber eher auf kürzere Sicht zu fahren. Umfangreiche Eingriffe in bestehende Systeme sollten sorgfältig vorbereitet werden. Bei Software-Neuentwicklungen und -Änderungen halte ich kurze Zyklen für sinnvoll, in denen iterativ weiterentwickelt wird. Dies ermöglicht eine kontinuierliche Steuerung und Ausrichtung auf die Elemente, die am meisten zur Wertschöpfung beitragen.

Workshops, Schulungen und allgemeine Beratung

In den unterschiedlichen Phasen von Software-Projekten macht es häufig Sinn, Workshops oder Schulungen durchzuführen. Am effektivsten sind in der Regel echte, persönliche Vor-Ort-Meetings. Aus organisatorischen Gründen oder Kosten-bedingt eignen sich aber auch Telefon- und Video-Konferenzen oder Web-Meetings und Online-Schulungen.

Gerne bereite ich entsprechende Workshops oder Schulungen für Sie vor und führe sie durch. Auch als Berater für sonstige Fragen rund um Software-Projekte stehe ich gern zur Verfügung.

Software-Entwicklung in kurzen Zyklen, kontinuierliche Auslieferung

Ich halte es für wichtig, dass gerade bei komplexen Software-Entwicklungen die Entwicklungs-Teams von Anfang an funktionierende Software ausliefern. Diese umfasst kurz nach Projektbeginn nur wenige Funktionen von dem, was insgesamt erwartet wird. Es sollte sich aber bereits um produktiv nutzbare Software handeln. In kurzen Zyklen von jeweils wenigen Wochen wird die Software nach und nach um das erweitert, was jeweils am meisten unmittelbaren Mehrwert schafft oder für den Projektverlauf am wichtigsten ist. Aus Projektsicht hilft die phasenweise Entwicklung motiviert auf realistische Zwischenziele hinzuarbeiten und gute Abschätzungen von Zeit und Aufwand vorzunehmen.

Will man die Entwicklungsprozesse weiter optimieren, so lässt sich durch Aufbau einer Continuous-Delivery-Pipeline erreichen, dass Erweiterungen und Änderungen nahezu jederzeit risikolos in Produktion gebracht werden. Ich berate Sie gerne zum Aufbau entsprechender Prozesse und Strukturen und betreue die Umsetzung in der Praxis.

Betreuung des laufenden Betriebs / Service und Support

Der Betrieb einer umfangreichen Software für viele Nutzer erfordert auch dann viele Kenntnisse und Aktivitäten, wenn keine Änderungen anstehen und die Software eigentlich „einfach nur funktionieren“ soll. Die eingesetzten Server müssen hinsichtlich ihrer Stabilität und Resourcen überwacht werden und auch die Software selbst sollte einem Monitoring unterstehen, um auch seltene Fehler zu entdecken und kritischen Situationen frühzeitig vorbeugen zu können. Regelmäßige Wartungsaufgaben stehen an, von Dritten eingesetzte Komponenten müssen aktualisiert werden und die Anwender erwarten einen funktionierenden Support, an den sie sich bei Fragen oder Problemen wenden können.

Im Betrieb arbeiten in der Regel Spezialisten aus diversen Bereichen (Datenbanken, Server, Netzwerk etc.) zusammen, im Support finden sich geschulte Personen mit unterschiedlich tiefem Hintergrundwissen. Es gilt, die Kosten des Support sinnvoll zu begrenzen und gleichzeitig sicherzustellen, dass gut mit der Software gearbeitet werden kann. Erkannte Fehler oder immer wieder auftretende, ähnliche Probleme müssen vom Support an die Entwicklung kommuniziert werden, um Verbesserungen zu erzielen und Probleme zu lösen. Ich unterstütze dabei, entsprechende Strukturen aufzubauen und beteiligte Personen zielgerichtet zusammen zu bringen.

Eskalations-Management

Störungen und Ausfälle von großen Software-Systemen verursachen schnell hohe Schäden. Auch wenn im Vorfeld alles getan wird, um entsprechende Situationen zu vermeiden, lassen sie sich doch niemals ganz ausschließen. Im Falle des Falles gilt es schnell aber überlegt zu handeln, die Konsequenzen der eigenen Handlungen gut im Blick zu behalten, relevante Personen zusammen zu bringen, geschickt und höchst effizient zu kommunizieren und einen kühlen Kopf zu behalten. Ich habe auch mit solchen Situationen Erfahrung und helfe gern dabei, schnell Störungen zu beseitigen, Ursachen zu finden und ähnliche Probleme in Zukunft zu vermeiden.

Evaluation

Inwieweit erfüllt das umgesetzte Projekt unsere Erwartungen und Anforderungen? Ist es erfolgreich? Muss etwas korrigiert werden? Was lässt sich noch verbessern? Es gibt unterschiedliche Herangehensweisen, um solche Fragen zu beantworten.

Es ist hilfreich, wenn zu Beginn eines Projektes messbare Ziele festgelegt werden, die sich überprüfen lassen. So ließe sich beispielsweise messen, wie häufig ein bestimmtes Modul der Software von den Anwendern pro Tag genutzt wird, wie viele Fehler-Tickets zu einem Modul erstellt werden, in welchem Umfang ein Arbeitsbereich durch eine neue Software entlastet wird oder wie viel Umsatz mit einer Software generiert wird. Auf diese Weise wird versucht, möglichst objektiv den Erfolg zu messen.

Es kann aber auch sinnvoll sein, mit einer subjektiven Evaluation pragmatisch vorzugehen. So kann man zum Beispiel den Akteuren einfache Fragen stellen, wie: Wird in Ihrer Organisation eine positive Auswirkung durch das Projekt erlebt? Mögen die Nutzer das System und nutzen sie es? Gehen Sie davon aus, dass das Entwicklungsteam sein Bestes getan hat und würden Sie das Team weiter empfehlen?

Sowohl der eher objektive als auch der eher subjektive Ansatz haben – je nach Situation – ihre Berechtigungen und Vorteile. Gerne stimme ich mich hierzu mit Ihnen ab und führe Evaluationen für Sie durch.