Die qualifizierte Auswahl von Softwareentwicklungsdienstleistern ist von hoher strategischer Bedeutung. Anhand eines modifizierten PDCA Zyklus (Plan-Do-Check-Act nach Deming) gehen wir darauf ein, was der Einkauf als einzelne Phasen der kontinuierlichen Lieferantenanalyse (Specify-Qualify-Monitor-Revise) tun kann und tun sollte.
Wie im ersten Blog (Warum braucht der Einkauf von Individualsoftware neue Kriterien bei der Lieferantenqualifikation?) für den Einkauf von nach Vorgabe gefertigter Software dargelegt, ist die Lieferantenqualifizierung von Softwaredienstleistern komplex. Es geht für den Einkauf bei der Lieferantenwahl darum, die relative Sicherheit zu haben, dass dieser die benötigten Software Entwicklungen für die eigene Digitalisierungsroadmap am besten entwickeln und betreuen kann. Bei Software heißt das, dass die Codebasis für viele Jahre und im Launch-Rhythmus der eigenen Produkt-Upgrades mit normalem Aufwand an die neuen Anforderungen angepasst werden kann.
Es ist klar, dass letztlich viele Fachabteilungen in einer Lieferantenbeziehung mit einem Software-Dienstleister beteiligt sind. Wir haben unsere Betrachtung in dieser Blogserie aber auf den Einkauf gelegt, um zu zeigen, wie wichtig Spezialkenntnisse rund um die Technologie von Software auch im Einkauf sind. Nur so können Risiken für das Unternehmen im gesamten Software Lifecycle minimiert werden.
Die Festlegung, welche Eigenschaften und Parameter bei Software die bestimmenden und beschreibenden Größen für die Qualität und Skalierbarkeit der Software und des Software-Engineerings sind, ist nicht trivial.
Wir bei Cape of Good Code nutzen dabei einen modifizierten PDCA Zyklus (Plan-Do-Check-Act Methodik nach Deming), der sich in der Qualitätssicherung in vielen Industrien seit Jahrzehnten bewährt hat. In unserem Fall sind es die für die Entwicklung von Software adaptierten Phasen: Specify-Qualify-Monitor-Revise.
Cape of Good Code hat für jede Phase dieses bei jeder Iteration wiederkehrenden Zykluses einen Katalog von Fragestellungen entwickelt, die von jedem (potentiellen) Entwicklungspartner beantwortet werden müssen. Die vergleichende Auswertung bestimmt dann, welcher Anbieter aus technologischer Sicht (!) der richtige Lieferant wäre. Natürlich gibt es in jeder dieser Phasen, eine Vielzahl weiterer Fragen und Kriterien aus den Fachabteilungen (Bsp. Bonität, Preis, Lieferzeit), die für sich genommen auch jeweils ein No-Go bedeuten können.
Unser Analysezyklus sollte mit jeder neuen Softwarelieferung (Iteration) zum Einsatz kommen, wobei die Fragen zur Qualify-Phase sich im weiteren Lifecycle auf die Prüfung der Qualifikation des Projektteams beschränken können. In einer jahrelangen Zusammenarbeit zu einem unter Innovationsdruck stehendem Produkt wie Software ist es elementar, in dieser Zeit auch die relevanten Fähigkeiten des Lieferanten immer wieder zu vermessen.
Der Fokus der Cape of Good Code Lieferantenanalyse ist die Technologie und das Software-Engineering. Für die einzelnen Phasen der kontinuierlichen Lieferantenanalyse sind im Folgenden beispielhaft einige Themen gelistet:
Specify: Festlegung der Anforderung an die Software durch den Auftraggeber
Qualify: Tool- und Interview-basierte Qualifizierung/Auswahl von Lieferanten
Monitor: Toolbasierte Prüfung der Lieferungen nach jedem Update
Revise: Strukturierte Behebung der Probleme
Im Folgenden seien zusammenfassend einige empfehlenswerte KPIs aufgeführt, die sich unserer Erfahrung nach als relevant herausgestellt haben:
KPI | Definition | Impact-Felder |
Maintenance Aufwand (prozentual, über die Zeit) |
Nicht-wertschöpfender Anteil der Entwicklungskapazität (und dessen Trend) für Bugfixing, “Firefighting” oder zur Reduktion Technischer Schulden | Kosten, Kundenzufriedenheit |
Feature Aufwand (prozentual, über die Zeit) |
Wertschöpfender Anteil am gesamten Entwicklungsaufwand (und dessen Trend) zur Feature- und Innovationsentwicklung. | Produktivität, Kundenzufriedenheit |
Feature-Aufwandseffektivität | Übermäßig anfallender Aufwand, um neue Features zur Codebasis hinzuzufügen. Werte über dem Durchschnitt deuten Architektur- und Code-Probleme und damit Technische Schulden an. | Kosten, Effizienz, Time to Market |
Wissenslücken (inkl. Entwicklungs- standorte) | Anteile des Codes und deren Verteilung auf die Entwickler, zu denen wenig geteiltes Wissen (sei es durch Kollaboration oder Dokumentation) existiert. | Effizienz, Abhängigkeiten von Entwicklern |
Technical Debt Behebungsaufwand | Aufwandsprognose zur priorisierten Beseitigung der Technischen Schulden in der Architektur und im Code | Kosten, Produktivität |