#1: Teams vernünftig strukturieren und Verantwortlichkeiten klar zuweisen

Wenn ein Entwickler täglich den Überblick über die Arbeit von zu vielen anderen Entwicklern behalten muss, wird er schnell überfordert sein. Daher ist eine vernünftige Teamgröße der Schlüssel zum erfolgreichen Projekt. Die Zwei-Pizza-Regel von Jeff Bezos scheint hier gut zu funktionieren, also nicht mehr als zehn Personen pro Team. Die Verteilung der Verantwortlichkeiten, so dass jedes Team weitgehend isoliert arbeiten kann, erleichtert die tägliche Arbeit jedes einzelnen Entwicklers. Aber natürlich werden Teile des Codes immer von mehreren Teams genutzt werden, was uns zum nächsten Punkt bringt.

#2: Anforderungen klar definieren

Vor allem die Eigenschaften der grundlegendsten Funktionalitäten sollten sorgfältig geprüft werden, bevor sie implementiert werden. Ein Beispiel hierfür wäre eine API, über die Entwickler Daten aus einer Datenbank abfragen können. Während es kein Problem ist, wenn sich die Implementierung der API in einer späteren Phase des Projekts ändert, werden ihre formalen Eigenschaften wie die akzeptierten Eingabeargumente oder das Format der zurückgegebenen Daten idealerweise direkt zu Beginn des Projekts definiert. Dies setzt jedoch ein vollständiges Bild über die Ziele des Projekts voraus. Das Szenario, in dem später Änderungen formaler Eigenschaften aufgrund neuer Anforderungen vorgenommen werden müssen, kann Dutzende von Entwicklern betreffen und den Projektfortschritt dramatisch verlangsamen. Falls eine solche späte Änderung dennoch unvermeidlich ist, wird der nächste Punkt entscheidend.

#3: Viel, klar und offen kommunizieren

Es ist wichtig, dass die Entwickler, die an denselben Codeteilen arbeiten, sich gegenseitig regelmäßig über ihre Fortschritte und Hindernisse informieren. So wird durchgehend sichergestellt, dass alle in die gleiche Richtung arbeiten. Manchmal hilft auch eine gute – an alle kommunizierte – Idee eines Entwicklers, ein Problem zu lösen, für das andere Tage gebraucht hätten. Noch wichtiger wird eine stringente Kommunikation, wenn projektweite Entscheidungen getroffen werden müssen. Ein Mangel an Abstimmung zwischen den einzelnen Teams kann leicht dazu führen, dass die Codeänderungen eines Teams den Anforderungen eines anderen Teams widersprechen.

#4: Mechanismen zur Sicherstellung der Codequalität und -korrektheit implementieren

Wenn ein Entwickler Code zur Codebasis hinzufügt, sollten mehrere Anforderungen erfüllt sein. Erstens sollten die Änderungen für andere Entwickler leicht nachvollziehbar sein. Versionskontrollwerkzeuge wie Git sind der Standardansatz, um dies zu ermöglichen. Zweitens sollte sowohl der neue, als auch der bestehende Code korrekt funktionieren. Eine CI-Pipeline, die automatisch (Unit-)Tests ausführt, eine geforderte Testabdeckung und Regeln, die vorschreiben, dass der Code von anderen Entwicklern als dem Autor überprüft und getestet werden muss, können helfen, dieses Ziel zu erreichen. Drittens sollte der Codestil einheitlichen Regeln folgen. Daher ist es wichtig, projektweite Stilrichtlinien aufzustellen und automatisch durchzusetzen, die allgemeinen Richtlinien wie beispielsweise PEP 8 für Python folgen können. Viele dieser Mechanismen erleichtern auch die bereits erwähnte Kommunikation über den Code.

#5: In eine stabile Entwicklungsumgebung investieren

Bei einem Datenmigrationsprojekt müssen die Entwickler in der Regel häufig direkt mit den betroffenen Daten arbeiten. Was das Testen anbelangt, so kann es für einige Funktionalitäten ausreichen, gute Testdaten zu haben, um lokal testen zu können. Für Funktionalitäten, die eine Interaktion mit der Datenbank erfordern, ist es jedoch wichtig, dass die Entwickler in einer Umgebung arbeiten können, in der die Daten durchgehend verfügbar und konsistent sind. Außerdem benötigen sie in dieser Umgebung genügend Rechenressourcen, um ihren Code in angemessener Zeit zu testen. Je nach Projektgröße zahlt sich daher die Einrichtung eines Systemadministrationsteams, das sich ausschließlich um die Infrastruktur (einschließlich der Verfügbarkeit von Daten und Rechenressourcen) kümmert, auf lange Sicht aus. Dies gilt insbesondere, wenn die Alternative darin besteht, dass Dutzende von Entwicklern regelmäßig vor ihren Computern sitzen und darauf warten, dass die Umgebung wieder funktioniert.

Fazit

Natürlich ist jedes Projekt anders und hat seine ganz eigenen Herausforderungen. Nach Erfahrung des PROCON IT Teams sind jedoch die fünf erläuterten Erkenntnisse in allen großen Datenmigrationsprojekten relevant und die genannten Tipps tragen maßgeblich zu einem erfolgreichen Projektverlauf bei.