Ich arbeite als Entwickler an einem 15 Jahre alten Softwareprodukt, das seit all der Zeit kontinuierlich weiterentwickelt wird. Die Codebasis ist enorm. Wir haben über 500 MB Code, von dem ich vermute, dass er mehrere Millionen Codezeilen umfasst. Davon ausgenommen sind Bilder oder die Datenbank mit über 500 Tabellen. Die Nachfrage nach einer Erweiterung des Codes ist hoch. Kunden möchten ständig neue Funktionen sehen. Das ist natürlich nicht gut für die technische Verschuldung. Die Programmierer scherzten oft, dass etwas, dessen Erstellung in einer normalen Codebasis eine Stunde dauern würde, bei uns eine Woche dauert. Es wird erwartet, dass ein neuer Programmierer mehr als ein Jahr benötigt, um sich mit einem Modul vertraut zu machen. Das obere Management möchte, dass wir die Leistung der Software verbessern, und hat das untere Management angewiesen, dies zu tun. Dies ist jedoch im Ticketsystem nicht direkt sichtbar.
Ich arbeite mit vier anderen in einem der Entwicklungsteams Programmierer und ein Manager. Drei von uns glauben, dass viel Refactoring notwendig ist, zumindest in den Teilen, die häufig verwendet und weiterentwickelt werden. Einer der anderen Programmierer, der seit Beginn des Programms an dem Programm arbeitet, und der Manager sind dagegen. Sie sind jedoch aus verschiedenen Gründen dagegen. Der Manager glaubt nicht, dass Code-Refactoring oder eine andere Reduzierung der technischen Schulden den Kunden oder den Zahlen unseres Teams hilft (was seinen Gehaltsscheck beeinflussen kann), während der andere Programmierer glaubt, dass ein Großteil des Codes bereits perfekt ist und Variablen und Funktionen aufweist sind böse und sollten vermieden werden. Der andere Programmierer ist nicht älter als der Rest von uns, hat aber am längsten hier gearbeitet. Es gibt einen leitenden Entwickler, der an einem anderen Modul arbeitet, das nicht von diesem Manager verwaltet wird und den wir möglicherweise für unsere Sache rekrutieren können.
Im Laufe der Jahre haben sich auch die Kundenerwartungen geändert. Obwohl es ihnen gut ging, dass ein Modul vor 15 Jahren 5 Minuten brauchte, sind sie mit dieser Zeit derzeit nicht zufrieden. Ich denke, es kann viel gewonnen werden. Ich habe eine Stunde damit verbracht, eine einzelne Funktion zu überarbeiten, die ich vor einiger Zeit sowieso erweitert habe, wodurch die Ladezeit eines Prozesses von 10 Minuten auf 10 Sekunden reduziert wurde. Andere Teams arbeiten daran, die technische Verschuldung zu reduzieren, was die Leistung erhöht, Fehler reduziert und die Expansionsfähigkeit erhöht. Unser Team ist das einzige Team, das dies nicht tut. Wir sind das "beste" Team im Ticket-Dashboard, da wir die meisten Tickets gelöst haben. Für das obere Management ist die Leistung derzeit das wichtigste Problem. Ein Teil ihrer Lösung besteht darin, den Code in eine neuere Sprache zu verschieben, damit er tatsächlich (als Einheit) getestet werden kann, da ein Großteil des alten Codes noch nie getestet wurde und Kunden bei einem Upgrade auf 64-Bit-Systeme versagen.
Wie kann ich (und die beiden anderen Programmierer) unseren Manager (und den anderen Programmierer) davon überzeugen, dass wir an technischen Schulden arbeiten müssen?
Ich möchte das hervorheben Das obere Management ist der Ansicht, dass wir an der Leistung arbeiten müssen, hat jedoch bestimmte Ziele nicht veröffentlicht. Mein Manager hingegen konzentriert sich auf Zahlen, die direkt im Ticket-Dashboard angezeigt werden. Die Leistung ist hauptsächlich schlecht, da Abfragen überall sind und oft öfter als nötig ausgeführt werden. Ich habe vorgeschlagen, Abfragen zu bearbeiten und sie in separate Funktionen oder Klassen zu verschieben, aber das Hauptproblem ist, dass der andere Entwickler nicht an Klassen oder Funktionen glaubt und der Manager ihm vertraut.