Die Schuld für die Übel von heute ist die technische Schuld von gestern

38

Bei einer Anwendung, die ich derzeit unterstütze und die ich ursprünglich nicht geschrieben habe, sind überraschend viele Probleme hinsichtlich Qualität, Skalierbarkeit und Auslastung aufgetreten. Zum Glück habe ich neue Projekte, die ich von Grund auf unternommen habe, um meinen gesunden Menschenverstand zu bewahren.

Das ursprüngliche Team bestand aus 20 einigen Entwicklern (die meisten mit veralteten Kenntnissen), keine Geschäftsanforderungsdokumente oder Qualitätssicherungstester, und wurde von Anfang an in einer Art Wasserfall schlecht verwaltet. Die Anfänge der Produktion waren ein peinlicher Albtraum, in dem brüchiger prozeduraler Code mit noch brüchigeren Korrekturen gepatcht wurde. Später wurden Features hinzugefügt, die in ein Datenmodell eingeschlüsselt wurden, das sie nie unterstützen sollte, und es ist nicht ungewöhnlich, dass derselbe Code zehnmal dupliziert wird und dass Ressourcen nicht sicher geschlossen werden und ORM-Abfragen nur Zehntausende von Entitäten abrufen alles bis auf eine Handvoll rausschmeißen.

Ich bin es jetzt und jedes Mal, wenn ein neues Problem auftaucht, schreibe ich ein Modul auf bessere Standards um und mache es VIEL stabiler, aber das Management braucht eine angemessene Erklärung, warum all dies vorkommt.

Sie scheinen schockiert und verwirrt über die Vorstellung, dass diese Anwendung von schlechter Qualität ist und in technischen Schulden versinkt. Glücklicherweise verstehen sie das Konzept der technischen Verschuldung und unterstützen mich bei meinem Bestreben, sie auszurotten, und sie unterstützen mich sehr und schätzen mich, aber ich habe das Gefühl, ich beschuldige immer nur das ursprüngliche Team (das alle ein anderes Projekt in einem anderen ruiniert haben) Teilung).

Das Fazit ist, dass ich nicht "That Guy" sein möchte, der sich immer über die Entwickler des Projekts beschwert. Ich habe diese Einstellung schon einmal bei Leuten in meiner Karriere gesehen, die ich persönlich als unwissend empfand und nicht die Umstände und Designeinflüsse berücksichtigte, die die Dinge ermutigten, so zu sein, wie sie waren.

Normalerweise sehe ich diese Haltung darin, das vorherige Team für schlechtes Design und schlechte Implementierung von idealistischen Nachwuchsentwicklern verantwortlich zu machen, die nicht die Lebenserfahrungen hatten, die mehr hochrangige Mitglieder hatten und von denen sie profitierten.

Haben Sie das Gefühl, dass es eine bessere, vielleicht auch sanftere Möglichkeit gibt, dem Management derartige Probleme zu melden, ohne den Ruf der Person / des Teams vor Ihnen zu beeinträchtigen?

maple_shaft
quelle
17
Es ist ironisch, dass Sie bei der Frage, ob Sie nicht das Schuldspiel spielen, drei vollständige Absätze ausgeben, die etwa 50% Ihrer Fragen zum vorherigen Team ausmachen. Und die Frage [Bad-Code] und [Bad-Programmer] markiert.
Aaronaught
8
@Aaronaught, Okay, ich werde beißen, ich habe es beschriftet, bad-codeweil der Code tatsächlich Fehler und Probleme verursacht. Ich habe es beschriftet, bad-programmerweil ich befürchte, dass ich es werde, indem ich die Vorgängermannschaft beschuldige, eine müde und klischeehafte Ausrede, die wir alle zuvor gehört haben. Was die ersten drei Absätze anbelangt, musste ich vielleicht nicht so beschreibend sein, aber ich wollte ein genaues Bild meiner unmittelbaren Situation zeichnen und die Geschichte dessen erzählen, was ich bisher gesammelt habe.
maple_shaft
2
... Gibt es da ein Element von Schimpfen ? Ja, ich denke schon, aber ich habe es satt, das Kindermädchen für eine Anwendung zu sein, die wie ein ADHS-Kind mit einem Todeswunsch funktioniert.
maple_shaft
2
Ich fühle mit dir. Ich mache. Aber wir haben ein Chat-System, wenn Sie sich austoben oder austoben möchten. Konstruktive Fragen sollten einen neutralen Ton haben und solche unnötigen Details weglassen.
Aaronaught
Geschichte meines Lebens
Iulian Onofrei

Antworten:

46

Technische Schulden sind wie finanzielle Schulden. Sie nehmen es (hoffentlich) strategisch in die Entwicklung eines Programms mit der Absicht auf, dass es sich in Zukunft auszahlt. Manchmal treffen die Leute schlechte Entscheidungen über technische Schulden (wie das Aufladen einer Kreditkarte), aber manchmal ist ein gewisser Betrag an technischen Schulden ganz normal. Die Entscheidung, heute nicht die Zeit dafür zu verwenden, etwas "richtig" zu machen, mit der Annahme, dass es in Zukunft geändert werden muss, ist völlig normal und sollte vorweggenommen werden. Natürlich gibt es eine feine Linie, aber der Gedanke, dass Sie es beim ersten Mal richtig machen, kann seine eigenen Probleme verursachen (Analyse-Lähmung).

Unter dem Strich muss jedes nicht-triviale Projekt, das länger als ein paar Jahre dauert, einige Zeit für die Neuentwicklung aufgewendet werden, um die technischen Schulden abzubauen. Die Sache ist, dass dies auch dann zutrifft, wenn Sie Ihre Bewerbung richtig schreiben . Wenn Sie dies nicht tun, häufen Sie Schulden an, und das Management kann das mit Sicherheit verstehen, wenn Sie es so darstellen.

Erklären Sie dies dem Management, und anstatt das vorherige Team die ganze Zeit "zu beschuldigen", können Sie dies als "Business as usual" präsentieren.

Nemi
quelle
4
+1 für eine wirklich gute, nicht tadelnde Erklärung, wie ein Projekt (richtig!) Auswählen könnte, um technische Schulden zu machen.
Joris Timmermans
1
@Nemi: Ein wichtiger Unterschied zwischen technischen Schulden und Finanzschulden besteht darin, dass es viel einfacher ist, letztere zu quantifizieren. Es ist viel einfacher zu wissen, wie viel Finanzschulden Sie noch abzahlen müssen (auch unter Berücksichtigung von Zinsansammlungen und wiederkehrenden finanziellen Verpflichtungen), als dies mit technischen Schulden zu tun. Ich weise nur darauf hin, weil dies das Problem von maple_shaft verschlimmert.
Ben Hocking
2
@Ben - du bist absolut richtig. Wie bei allen Analogien bricht auch diese unter dem Mikroskop zusammen. Der Vergleich ist jedoch auf hohem Niveau nach wie vor solide. Sie verzichtet im Wesentlichen auf Details und spricht mit dem Management auf deren Ebene - als Geschäftsproblem, nicht als technisches Problem. Grundsätzlich verursacht jedes langfristige Projekt eine gewisse technische Verschuldung, sodass die Entwicklung im Laufe der Zeit mit zusätzlichen Kosten verbunden ist. Da dies verborgen ist (und nicht einmal gut verstanden wird), ist es im besten Interesse aller, sicherzustellen, dass darüber gesprochen wird.
Nemi
2
+1 bis "Dies gilt auch dann, wenn Sie Ihre Bewerbung richtig geschrieben haben."
Mauricio Scheffer
1
@radarbob Ich bin anderer Meinung - genau wie Finanzschulden spielt es keine Rolle, ob sie absichtlich angesammelt wurden, aufgrund von Pech oder Dummheit - jemand muss in Zukunft dafür bezahlen. Der Begriff ist inhärent ursachenneutral.
Hulk
23

IMO gehen Sie das meistens schon richtig an: Sie schlagen kein Ground-up-Rewrite vor, weil "der alte Code scheiße ist", sondern Sie beheben eins nach dem anderen.

Um zu vermeiden, dass Sie das alte Team beschuldigen, stellen Sie sich vor, dass dieser Code wahrscheinlich unter hohem Zeitdruck erstellt werden musste. Das Management hat das damals wahrscheinlich nicht wirklich verstanden, nur weil der Code "more or less works" nicht bedeutet, dass jede Wartung ohne viel Aufwand und Nacharbeit möglich ist.

Schätzen Sie das alte Team, das es geschafft hat, ein Produkt herzustellen, das tatsächlich einen geschäftlichen Nutzen bringt - es würde nicht mehr verwendet werden, wenn es nicht wäre. Sie werden überrascht sein, wie oft ein Projekt keinen geschäftlichen Nutzen bringt, auch wenn es schön geschrieben ist.

Joris Timmermans
quelle
3
+1: Beschuldige das alte Management, dass es nicht geschafft hat, ein Qualitätsprodukt zu liefern. Dann wird (hoffentlich) das neue Management die Nachricht erhalten (oder dich loswerden, beide Fälle sind für dich ein Gewinn)
gbjbaanb
15
@ gbjbaanb - beschuldige niemanden! Gehen Sie aus dem Weg, niemandem die Schuld zu geben. Stellen Sie einfach die aktuelle Situation und die gewünschte Situation fest und argumentieren Sie logisch, wie und warum Sie dorthin gelangen müssen.
Joris Timmermans
Stellen Sie sicher, dass es ein neues Management gibt. Der gleiche Chef könnte immer noch da sein. Und selbst wenn er weitergezogen ist, ist er irgendwo da draußen. Stellen Sie sicher, dass Sie es herausfinden, bevor Sie Leute unter den Bus werfen.
Philip
Ich wünschte, es wäre so einfach, niemandem die Schuld zu geben. Das Management besteht darauf, dass jemand / etwas mit dem Finger darauf zeigt. Wenn ich nicht auf eine Person oder eine Gruppe von Personen zeige, auf die ich zeige?
maple_shaft
4
@maple_shaft - machen Sie also das Argument, das ich in meiner Antwort an das Management vorgebracht habe, und veröffentlichen Sie Ihren Lebenslauf auf so vielen Websites, wie Sie finden können beschließe, dich dafür zu beschuldigen , dass niemand anders mit dem Finger auf dich zeigt .
Joris Timmermans
7

Wenn ich gefragt werde, ob ich einen Kommentar zum aktuellen Status eines Problemprodukts abgeben möchte, greife ich immer auf "es ist, was es ist" zurück und beginne dann, über Pläne zur Verbesserung des Produkts zu sprechen.

Sie kennen nicht alle Faktoren, die zu der Entscheidung geführt haben, die dieses Problem verursacht hat - vielleicht waren sie damals sogar vernünftig. Alles, was Sie tun können, ist voranzukommen und die Dinge morgen zu verbessern. Und es hört sich so an, als ob Sie einen guten Job machen - Sie haben die richtige Einstellung für diese Situation.

Konzentrieren Sie sich darauf, nur Fakten zu melden, wenn Sie gefragt werden. Sie müssen keine Erzählungen oder Kommentare hinzufügen. Sagen Sie einfach "das System schlägt in Fall X fehl" oder "die Berichte sind für Fall Y falsch." Fügen Sie dann schnell hinzu, wie Sie die aktuelle Situation verbessern möchten.

Scott C Wilson
quelle