Frage

Unser Code saugt. Eigentlich lassen Sie mich das klarstellen. Unsere alt Code saugt. Es ist schwer zu debuggen und ist voll von Abstraktionen, die nur wenige Menschen verstehen oder sogar erinnern. Erst gestern habe ich eine Stunde in einem Bereich, Debuggen, dass ich für arbeitete über ein Jahr und fand mich denken: „Wow, das ist wirklich schmerzhaft ist.“ Es ist niemand schuld - ich bin sicher, dass es durchaus sinnvoll, zunächst hergestellt. Das Schlimmste ist, in der Regel Es funktioniert einfach ... vorausgesetzt, Sie fragen nicht, es etwas außerhalb seiner Komfortzone zu tun.

Unser neuer Code ist ziemlich gut. Ich denke, wir dort eine Menge guter Dinge zu tun. Es ist klar, konsistent und (hoffentlich) wartbar. Wir haben einen Hudson-Server für die kontinuierliche Integration läuft bekommen, und wir haben die Anfänge eine Unit-Test-Suite an seinem Platz. Das Problem ist, unser Management ist Laser-konzentrierte sich auf das Schreiben Neuer Code. Es gibt keine Zeit Old-Code (oder sogar alten Neuen Code), um den TLC es so dringend braucht zu geben. Zu jedem Zeitpunkt unseres gedränge Rückstand (für sechs Entwickler) hat über 140 Artikel und rund ein Dutzend Mängel. Und diese Zahlen ändern sich nicht viel. Wir fügen die Dinge so schnell, wie wir sie niederbrennen können.

Was kann ich tun, um die Kopfschmerzen von Marathon-Debugging-Sitzungen in der Tiefen des Old-Code verstrickt zu vermeiden? Jeder Sprint ist mit neuen Entwicklung und Hemmschuh Mängel bis zum Rand gefüllt. Insbesondere ...

  • Was kann ich helfen Wartung zu tun und Refactoring Aufgaben bekommen hoch genug Priorität bearbeitet werden?
  • Gibt es C ++ - spezifische Strategien, die Sie, um zu verhindern Neuen Code verwenden aus so schnell verrotten
War es hilfreich?

Lösung

Ihr Management kann auf immer arbeiten Features in das Produkt fokussiert werden, und halten sie arbeiten. In diesem Fall müssen Sie für Refactoring der alten Sachen einen Business Case machen, dass durch X Investition von Zeit und Mühe können Sie die notwendige Wartungszeit von Y über einen Zeitraum Z. reduzieren oder Ihr Management kann im Grunde ahnungslos sein (dies geschieht, aber weniger häufig als die meisten Entwickler scheinen zu denken), wobei in diesem Fall werden Sie nie die Erlaubnis bekommen.

Sie müssen die betriebswirtschaftliche Sicht zu sehen. Es ist nicht für die Endbenutzer aus, ob der Code hässlich oder elegant ist, nur das, was die Software tut. Die Kosten für den schlechten Code ist Potenzial Unzuverlässigkeit und zusätzliche Schwierigkeiten es bei der Veränderung; die emotionale Belastung es für den Programmierer verursacht, wird selten berücksichtigt.

Wenn Sie nicht die Erlaubnis und Refactoring zu gehen zu bekommen, können Sie immer versuchen, es auf eigene Faust, ein wenig in einer Zeit. Jedes Mal, wenn Sie einen Fehler beheben, ein wenig umschreiben die Dinge klarer zu machen. Dies könnte sich herausstellen schneller als die minimal mögliche Lösung sein, vor allem bei der Überprüfung, dass der Code funktioniert jetzt. Auch wenn es nicht ist, dann ist es in der Regel möglich, ein wenig mehr Zeit auf einem Bug-Fix zu nehmen, ohne in Schwierigkeiten geraten. Nur nicht bekommen weggetragen.

Wenn Sie den Code nur ein wenig verlassen kann besser jedes Mal, wenn Sie in gehen, werden Sie viel besser fühlen es.

Andere Tipps

Stand Up Meetings

Ich könnte meinen Mechaniker gehen, und wir haben eine kleine Stand-up-Sitzung am Morgen:

  

ich ihm sage, ich möchte, dass meine Räder ausgerichtet sind,   meine Reifen gedreht, und mein Öl gewechselt.   Ich erwähnt, dass „Ach übrigens mein   Bremsen fühlte sich ein wenig weich auf dem Weg   in zu. [er] einen Blick auf sie nehmen?   Wie schnell kann ich mein Auto wieder da   Ich brauche, um die Arbeit zu gehen? "

     

knallt er seinen Kopf unter meinem Auto, pop   sichern und sagt meine Bremsen sind undicht   Öl und Ausgang zum Scheitern verurteilt. Er wird sie brauchen   ein Teil, der um 10.30 Uhr ankommen.   Sein Mann wird nicht zu Ende vor dem Mittagessen, aber   Ich soll mein Auto wieder von 01.30 erhalten oder   so. Er ausgebucht, so dass er nicht sein   der Lage, alle anderen Dinge zu tun   heute, und ich will ein anderes Buch haben   Termin.

     

Ich frage, ob er die anderen Sachen tun und   Ich komme für die Bremse zurück. Er sagt mir,   er kann nicht wirklich lassen Sie mich fahren aus   dort ohne die Bremsen Befestigungs   weil sie einen Unfall verursachen könnten,   aber wenn ich will zu einem anderen gehen   Mechaniker, er für einen Abschleppwagen rufen kann.

     

Da das Auto wird so kurz gemacht werden   nach dem Mittagessen, frage ich, wenn sein Mann nehmen kann   ein spätes Mittagessen so kann ich mein Auto zurück   eine Stunde früher.

     

Er sagt mir, seine Männer kommen in um 8 Uhr und   arbeiten oft bis in den Abend.   Sie verdienen jede Pause sie   erhalten, und sein Mann verdient sein zu nehmen   Mittagessen mit allen anderen.

Nichts davon ist das, was ich hören wollte. Ich wollte hören, dass ich in einer halben Stunde von dort austreiben würde mit meinen Rädern, Reifen und Öl gemacht.

Meine Mechaniker waren nur gerade nach oben und ehrlich mit mir. Sind Sie gerade nach oben und ehrlich mit Ihrem Management? Oder vermeiden Sie sie Dinge sagen, sie wollen nicht hören?

Unit Testing

Ich würde nicht eine einzige Zeile Code berührt ich nicht verstand, und ich würde in einer neuen Zeile des Codes nicht, ich nicht gründlich getestet habe. (Zumindest nicht absichtlich.)

Ihre Frage scheint, dass irgendwie einen großen Korpus zu implizieren, schlecht dokumentierte Code es vorbei Überprüfung ohne Unit-Tests gemacht. Vielleicht nahmen sie in das, und vielleicht hast du nicht. Alle Beteiligten Bedürfnisse Verantwortung dafür zu übernehmen - einschließlich der Verwaltung. Unabhängig davon, ist das, was getan getan. Sie können es nicht zurückgehen und ändern.

Doch gerade jetzt, in der heutigen Zeit, es ist die Verantwortung jeder auf , um das Verhalten stoppen , die in erster Linie zu dem Problem geführt. Sie sagen, Sie ein Jahr lang in Code arbeiten, dass Sie schwer zu verstehen, und dass keine Unit-Tests. In diesem Jahr gearbeitet, wie Sie hart, um Ihr Verständnis zu verbessern, wie viele Unit-Tests haben Sie zu Dokument schreiben und dieses Verständnis zu überprüfen?

Wie Sie durch den Code zu kämpfen langsam Verständnis zu gewinnen, wie viele Kommentare haben Sie hinzufügen, so dass Sie beim nächsten Mal nicht zu kämpfen haben?

Scrum Backlog

Ich persönlich denke, der Begriff „Scrum Backlog“ eine falsche Bezeichnung ist. Eine Liste der Dinge zu tun, ist nur eine Liste - eine Einkaufsliste, wenn man so will. Ich hatte eine Liste, wenn ich an die Mechaniker ging. steht mein mit dem Mechaniker Treffen war wirklich eher eine Sprint-Planungssitzung.

Ein Sprint Planungstreffen ist eine Verhandlung. Wenn Ihr Management, ohne dass Verhandlungen Zeit Boxen sind, werden sie nichts zu verwalten. Sie sind einfach zu stopfen 10 Pfund Scheiße in einen 5 Pfund Sack versucht, und es ist Ihre Verantwortung, sie so zu sagen.

Wenn Sie zu einem Sprint Planungstreffen auftauchen, werden Sie erwartet, dass ein Werk begehen, und es ist Ihre Verantwortung dafür vorzubereiten. Vorbereitungsmittel eine Vorstellung von dem, was Sie tun müssen, um jeden Punkt auf der Liste zu vervollständigen -. Einschließlich der Zeit es braucht, obskuren Code zu verstehen und die Zeit es braucht, um Schreib Unit-Tests

Wenn jemand lädt Sie zu einem Planungstreffen, wo man nicht Zeit zur Vorbereitung haben, sinken die Sitzung und vorschlagen, wann neu zu planen, so dass Sie Zeit haben.

Wenn Sieein vorhandener Codekörper ohne Unit-Tests und ein Merkmal wäre denkbar den Betrieb dieses Codes beeinflussen, müssen Sie Schreib Unit-Tests für so viel von dem alten Code als betroffen sein könnte. Wenn Sie zum Schreiben der Funktion begehen, begehen Sie diese Arbeit zu tun. Wenn die Blätter Sie zu wenig Zeit, um eine andere Funktion zu begehen, sagen Sie einfach so. Sie nicht auf die andere Funktion begehen.

Wenn Sie begehen einen Fehler zu beheben, verpflichten Sie Ihre Arbeit zu testen. Offensichtlich, dass Mittel einen Komponententest für den Defekt zu schreiben. Aber wenn es alten Code ohne Unit-Tests beinhaltet, es bedeutet auch, Unit-Tests für Dinge zu schreiben, die noch nicht gebrochen werden, sondern könnte auf Ihre Änderung aufgrund brechen. Wie sonst werden Sie das Update testen?

Wenn Sie Ihre Fehlerliste bleibt eine konstante Größe, Ihr Team regrediert so viel wie es behebt. Höflich erklären, wem auch immer, dass Unit-Tests die Regressionen verhindern muss verstehen, dass zur Zeit Ihre Fehlerliste halten schrumpft.

Wenn Sie nicht diese Unit-Tests schreiben, weil Sie zu viele Funktionen begehen, , deren Aufgabe ist es das?

Refactoring

Wenn Sie Code Refactoring, haben Sie alles zu testen, und das bedeutet das Schreiben von Unit-Tests für alles. Wenn Sie eine große Menge an Code ohne Unit-Tests haben, werden Sie alle diese Unit-Tests schreiben müssen vor Sie Refactoring.

Ich schlage vor, Sie halten sich auf Refactoring, bis diese Unit-Tests vorhanden sind. In der Zwischenzeit, wenn Sie mit Unit-Tests in Ihren Schätzungen für die Arbeit bestehen verpflichten Sie schließlich alle werden diese Unit-Tests dort sein. Und dann können Sie Refactoring.

Die einzige Ausnahme, dass für die Testbarkeit Refactoring. Sie können das nicht für den Test entwickelt, einen Teil des Codes finden und dass Sie für Dinge wie Dependency Injection zu refactor haben, bevor Sie Ihre Unit-Tests erstellen können. Wenn Sie sich verpflichten, um die Funktion zu schreiben, die den Unit-Test erfordert, begehen Sie den Code testbar zu machen. Fügen Sie das in Ihrer Schätzung, wenn Sie die Funktion begehen.

Verpflichtung + Verantwortung = Power

Sie sagen, Sie sind machtlos. Wenn Sie Verantwortung übernehmen und sich zu verpflichten, zu tun, was, getan werden muss glaube ich Sie Ihnen allen die Kraft benötigen Sie haben zu finden.

P. S. Wenn jemand über jemand beschwert sich schriftlich mehrere Unit-Tests „Zeitverschwendung“, wenn ein einzelner Defekt Festsetzung, zeigen sie dieses Video auf der 80:20 Regel und Pfund „Defektcluster“ in ihr Gehirn.

Es ist schwer, aus den Informationen viel erzählen Sie geben. Einige Fragen, die ich habe ist, ein logischer Grund neuen Code zu schreiben, ist der alten Code zu ersetzen. Wenn das, was Sie tun, verlassen den alten Code.

Ist es auch alte Code, der Hemmschuh Mängel hat? Wenn ja, wo kommen sie her? Alter Code nicht „Hemmschuh“ Defekte hat, es schleift nur näher und näher zum Stillstand in der Regel. Es ist alte Code, nachdem alle - es sollten die gleichen alten Fehler aufweisen und die gleichen alten Einschränkungen, nicht Dinge, die auf sofort sah werden muss. Hemmschuh Mängel sind neue Codefehler. Es klingt wie es auf in dem alten Code der aktive Entwicklung ist.

Wenn Sie alle diese neuen Code auf der alten Code schreiben, die ohne Pläne saugt, um es zu beheben ein für alle Mal, sorry, es gibt nur so viel Sie tun können, wenn Sie zu beschäftigt sind, zu begraben, sich selbst zu graben aus.

Wenn letzteres der Fall ist. Sie sollten erkennen, wohin es geht, und versuchen, ein wenig zu lösen. Es wird schließlich auf alle Zusammenbruch gehen, wenn Sie es, um sparen Sie Kraft für einen lohn Kampf planen.

In der Zwischenzeit versuchen, einige Design-Muster zu holen. Es gibt mehr, dass zumindest helfen Ihnen neuen Code aus den alten Sachen zu schützen, aber immer noch, schließlich ist es nur schwer zu schreiben guten Code gegen schlechten Code.

Und Ihr Sprint Ton vielleicht verwirrte. Gibt es nicht eine allgemeine Richtung? Das sollte bestimmen, wie vielen Rückstand Sie haben, obwohl die Dinge können von Monat zu Monat ändern, gibt es nicht einen klaren Sinn für Richtung einig Endziels zu verschieben?

Und neuer Code verrotten? Die Art und Weisen Sie das verhindern ist, dass Sie einen aussagekräftigen Design haben, eine sinnvolle Richtung, und ein qualitativ hochwertiges Team, das sowohl auf die Qualität ihrer Arbeit und die Vision des Designs verpflichtet. Falls Sie Fragen haben, ist Disziplin, was Qualität beibehält. Wenn Sie nicht, dass die Entschuldigung haben, waren Sie im Grunde ohne Zweck das Schreiben von Code bereits. Es war im Grunde faul auf der Rebe.

Nicht kritisch zu sein, nur um ehrlich zu sein versucht. Tief durchatmen. Langsamer. Sie scheinen, wie Sie es brauchen. Schauen Sie, was Sie hier geschrieben haben. Es sagt nichts. Sie sprechen von Refactoring, Scrums, Showstopper, Defekte, alten Code, neuen Code. Was tut jeder das bedeuten? Es ist alles durcheinander gewürfelt.

Was ist mit „neuen Initiativen im Vergleich zu Legacy-Systemen“? „Need to frühen Sprint Zyklus Code in Bezug auf die neuesten Verständnis usw. Refactoring“ Ist Showstopper in der Tat „Early-Komponenten der aktuellen Enterprise-Initiativen veröffentlicht wurde, jedoch sind Probleme und keine Zeit veranschlagt wird wegen der neuen Entwicklung“.

würden diese sinnvolle Konzepte. Sie haben uns nichts gegeben. Ich verstehe es intensiv. Meine Sprints sind zu verrückt, fügen wir eine Menge zurück; pg Artikel, weil wir nicht viele Anforderungen vorne bekommen konnte (viele meiner neuen Anforderungen ergeben sich aus auch mit externen Aufsichtsbehörden, die normalen Geschäftsprozess zu kämpfen haben, ist nicht immer verfügbar ).

Aber zur gleichen Zeit, die ich geschliffen bin durch die schiere Größe von unten, was getan werden muss und die Zeit, es zu tun. Alles, was zu meinem Rückstand hinzugefügt wird, muss es sein. Es ist verrückt, aber zugleich habe ich eine sehr klare Vorstellung davon, wo ich gewesen bin, wo ich gehen müssen, und warum die Straße Getter härter ist.

Schritt zurück, deaktivieren Sie Ihre Gedanken, herauszufinden, die gleich - wo Sie gewesen sind und wohin Sie gehen. Denn wenn Sie das wissen, es ist sicher nicht auf der Hand. Wenn Sie nichts Ihre Kollegen verstehen können miteinander kommunizieren können, wie weit gehen Sie mit einem Business-Manager bekommen?

Old Code saugt immer. Wahrscheinlich gibt es einige seltenen Ausnahmen von Menschen mit Namen wie Kernighan oder Thompson geschrieben, aber für den typischen „Code in einem Büro geschrieben“ Sachen, im Laufe der Zeit würde Gestank ist. Entwickler erhalten mehr Erfahrung haben. Neuere Verfahren, wie zum Beispiel die kontinuierliche Integration, ändern Sie das Spiel. Stuff get vergessen hat. New Maintainer scheitern Designs und Wunsch nach Wieder schreibt zu erfassen. Also am besten akzeptiert dies als normal.

Einige zufälligen Dinge, die helfen könnte ...

  • Sprechen Sie darüber mit Ihrem Team. Teile deine Erfahrungen und Ihre Anliegen, während „Mann Ihr alter Code sucks“ (aus offensichtlichen Gründen) zu vermeiden und sehen, was der Konsens. Du bist wahrscheinlich nicht allein.
  • Vergessen Sie Ihre Manager. Haben sie nicht auf diesem Detaillierungsgrad aussetzen - sie müssen nicht über neue vs. alten Code denken und wird wahrscheinlich nicht verstehen, wenn sie es tun. Dies ist ein Problem für Ihr Team in Angriff zu nehmen und, falls erforderlich, Ihren PO bewusst
  • machen
  • Seien Sie offen für die Möglichkeit, dass Sie in der Lage sein Zeug zu werfen. Einige dieser alten Code bezieht sich wahrscheinlich auf Funktionen, die nicht mehr verwendet werden oder nicht von den Nutzern in erster Linie angenommen werden. Um diese Arbeit für Sie, die Sie wirklich brauchen eine Ebene höher gehen und denken in Bezug auf, wo der Code wirklich liefert Benutzer oder Geschäftswert gegenüber, wo es nur eine Kugel aus Schlamm, dass niemand mutig genug ist, eine Entscheidung zu treffen. Wer wagt, gewinnt.
  • Entspannen Sie Ihren Blick auf architektonische Konsistenz. Es gibt immer einen Weg, um Wasserhahn in ein funktionierendes System mit neuem Code irgendwo, und das können Sie erlauben, langsam auf einen neuen, intelligenten Ansatz zu migrieren, während die alte Erhaltung lange genug nicht vorhandene Dinge zu brechen.

Insgesamt in einer solchen Situation zu gewinnen ist weniger über Fähigkeiten Codierung und vieles mehr über intelligente Entscheidungen und den Umgang mit den menschlichen Aspekten.

Ich hoffe, das hilft.

Ich empfehle, die Verfolgung, wie viele Fehler und Änderungen am Code beinhalten Ihre „alten Code“ und präsentieren diese entweder Ihren Vorgesetzten oder an Ihre Kolleginnen und Entwickler bei der nächsten Teamsitzung. Mit diesem in der Hand sollte es einfach genug sein, um sie davon zu überzeugen, dass mehr zu Ihrem „alten Code“ Refactoring getan werden, und bringt es auf par mit Ihrem „neuen Code“.

Es wäre auch ratsam, die Teile Ihres „alten Code“ zu dokumentieren, die am schwierigsten zu verstehen. Diese würden auch die Teile des „alten Code“, dass Sie zuerst sein Refactoring sollten, wenn Sie die Genehmigung erhalten.

Etwas zu versuchen: Gruppe Ihre Klasse in - sagen wir - schlechtesten 10%, am besten 10%, und der Rest. Liefern Sie die Listen zu Ihrem Management, sagte: „Ich die Mehrheit der Fehler im nächsten Quartal vorhersagen, wird im ersten Satz zu finden.“ Basierend auf der Länge, zyklomatische Komplexität , Testabdeckung - was auch immer Tools, die Ihnen praktisch und bequem sind. Dann lehnen Sie sich zurück und beobachten - und richtig sein. Jetzt haben Sie eine gewisse Glaubwürdigkeit bekam, einen gewissen Einfluss, wenn Sie sagen: „Ich möchte einige Ressourcen besser zu machen unsere schlechten Code investieren, Fehler und Wartungskosten zu reduzieren - und ich weiß, wo diese Energie zu investieren, verstehen Sie?“

Sie können Diagramme und Skizzen erstellen, wie der neue Code funktioniert und wie die Klassen und Funktionen sind miteinander verwandt. Sie könnten vielleicht Freemind oder Dia verwenden. Und ich stimme definitiv mit Dokumentieren und Ihren Code zu kommentieren. Ich hatte einmal ein Problem mit dieser auch. Ich schrieb eine Font-Klasse für J2ME für meine eigene Sprache. Es war aus diesen Gründen schrecklich, dass vielleicht könnten Sie auch in Ihrem Code sehen.

  • Keine Kommentare oder Dokumentation
  • Weniger objektorientierte
  • bad Variable / Funktionsnamen
  • ...

Aber nach ein paar Monaten war ich gezwungen, die ganze Sache wieder zu schreiben. Jetzt habe ich gelernt, sinnvolle Variablennamen zu verwenden, die manchmal sehr lang sind. Schreib Kommentare mehr als Codes zu schreiben. Und anhand von Diagrammen für die Projektklassen und ihre Beziehungen.

Ich weiß nicht, ob es eine wirkliche Antwort war, aber es für mich auf jeden Fall gearbeitet. und für alte Codes könnten Sie eigentlich die ganze Sache noch einmal zu lesen haben und Kommentare hinzufügen, wenn Sie die Funktionen erinnern.

Hope es half.

Sprechen Sie mit Ihrem Product Owner ! Erklären Sie, dass die Zeit in Refactoring den alten Code investiert wird ihn zu den neuen Funktionen der höheren Geschwindigkeit Team bringen profitieren, sobald dieses Hindernis entfernt wird.

Anders als die Ansätze vorstehend genannt, gut sind, können Sie diese auch versuchen:

Zukunft Code sauber Für halten

  • Versuchen Paar Programmierung, zumindest für Teile des Sinn. Es ist eine effektive Möglichkeit, überprüft zu werden, Refactoring Code eine Praxis.
  • Versuchen Sie, auf die Definition von „fertig“ zu bekommen Refactoring. Dann wird es dementsprechend Teil des Schätzungsprozesses und zugeteilt werden. So ist die Definition von getan umfassen könnte. Codiert, geprüfte Einheit, funktionsgeprüft, Leistung getestet, Code überprüft, überarbeitet und integriert (oder so ähnlich)

zur Reinigung des alten Code:

  • Unit-Tests sind für die Ihnen helfen Refactoring und herauszufinden, wie die Dinge funktionieren.
  • Ich stimme mit den Kommentaren, dass ein Business Case muss für eine groß angelegte Umgestaltung vorgenommen werden. Aber, kleine Refactoring leicht in die Schätzung einbezogen werden könnten und sofortige Rückkehr bieten. d.h .: Ich gebe 2 Stunden ein Stück umschreiben, aber ich würde für Fehler suchen sowieso, dass die Zeit verbracht haben.

Sie können auch zu prüfen, das Produkt Eigentümer bekommen und scrummaster eine separate Geschwindigkeit für den alten Code vs den neuen Code zu erfassen und um die entsprechend an.

Wenn es eine gewünschte neue Funktion und Sie können ein nicht-überwältigend großes Stück des Codes beschreiben, die in der Art und Weise ist, dann könnten Sie in der Lage sein Managements Segen zu bekommen den alten Code mit neuem Code zu ersetzen, die die gewünschten neue Funktion hat. Als ich das tat, hatte ich eine etwas hässliche Shim Schicht zu schreiben, die alten Schnittstellen des Teils der Software zu treffen war ich nicht berühren würde. Und ein Test-Harnisch, der den vorhandenen Code und üben Sie den neuen Code ausüben könnten Sie sich den neuen Code zu machen, wie durch die Shim-Schicht zu sehen ist, könnte täuschen der Rest der Anwendung zu denken, nichts verändert hatte. Durch die Überarbeitung des Teils wir überarbeiteten, konnten wir enorme Leistungsvorteile zeigen, die Kompatibilität mit gewünschter neuer Hardware, die Reduktion in jedem unserer Wiese Bedürfnisse für Know-how im Raum für die Anwendung der Verwaltung - und der neue Code beträgt viel mehr wartbar. Dieser letzte Punkt zählte keinen Deut an die Nutzer, aber die anderen Vorteile aus der Nacharbeit waren attraktiv genug, um zu „verkaufen“, die Nutzer über die Vorteile einer etwas schmerzhafte Datenbank-Konvertierung.

Eine weitere bescheidene Erfolgsgeschichte: Wir hatten ein ordentliches Problem Tracking-System, das buchstäblich Jahre Geschichte hatte. Es war ein Subsystem unserer Anwendung, die für die Geschwindigkeit berühmt wurde, mit dem würde es Programmierer ausbrennen. Klar (na ja, klar in meinem Kopf) war es in der Notwendigkeit eines großen Umschreibens, aber das Management war nicht darüber begeistert. Wir konnten durch die Geschichte in den Schwierigkeiten Tracking-Daten graben, um die Personalstärke zu zeigen, die in der Aufrechterhaltung dieses Modul gegangen waren, und trotz allem Aufwand, die Trouble-Tickets pro Monat gegen das Modul weiterhin mit einer konstanten Rate zu gelangen. Wenn mit den tatsächlichen Daten wie das konfrontiert, auch die nur ungern Manager, die lange geizig war Nacharbeiten dieses Subsystem über die Besetzung des Verdienst der Zuweisung von Personal sehen konnte, das Modul zu überarbeiten.

Der Ansatz nach wie vor war die Ein- und Ausgabe dieses Moduls allein zu lassen. Die gute Nachricht war, dass mit ihren schicken neuen Datenstrukturen in den neuen Code der virtuellen Speicher zu werfen hat eine deutliche Leistungssteigerung an das Modul geben. Die schlechte Nachricht ist, dass wir fast mit der Neuimplementierung getan, bevor wir wirklich verstanden, was in der ursprünglichen Implementierung falsch war, so dass es Arbeit der meisten Zeit tat, schafften es aber auf einige der Transaktionen an einigen Tagen zum Scheitern verurteilt. Der erste Schnitt naturgetreu reproduziert diese Fehler, aber die Fehler leichter waren in der überarbeiteten Code zu verstehen, so dass wir jetzt eine Chance auf wirklich Fixierung das eigentliche Problem hatte. Im Nachhinein vielleicht würden wir schlauer gewesen zu Daten haben erfaßt, die die Probleme erzeugt und besser darauf geachtet, um sicherzustellen, die überarbeitete Version dieses Problem nicht zu reproduzieren hat. Aber die Wahrheit ist, versteht niemand das Problem, bis wir ziemlich weit entlang auf der neu zu schreiben waren. Also, das Umschreiben verbesserte Leistung für die Nutzer gab und verbesserte die aktuellen Programmierer zu verstehen, so dass das eigentliche Problem wirklich endlich aufgelöst werden kann.

Ein ausfall Beispiel: Es gab noch ein weiteres unglaublich hässlich Modul, das dauerhaft eine wunde Stelle war. Ach, ich war nicht klug genug, um die De-facto-Schnittstellen zu diesem erbärmlichen hive von Abschaum und Schurkerei, zumindest nicht in dem Zeitrahmen des Nenn Release-Plans zu verstehen. Ich würde gerne glauben, dass mehr Zeit gegeben wir auch einen geeigneten Plan aus für Nacharbeiten dieses Stück des Systems herausgefunden haben könnten, und vielleicht, wenn wir es verstehen, könnten wir sogar vom Benutzer gewünschten Verbesserungen erkennen, dass wir in dem passen könnten umschreiben. Aber ich kann nicht versprechen, dass Sie einen Preis in jeder Box zu finden. Wenn die Box ausschließlich Sie verdunkeln, ein Stück davon Aufschneiden entfernt und das Stück mit sauberem Code zu ersetzen ist schwer zu tun. Der Mann, der verantwortlich für das Modul hatte, ist wahrscheinlich derjenige, der am besten, um herauszufinden, einen Angriffsplan positioniert war, aber er sah, wie die häufigen Abstürze und Anrufe from das Feld für die Unterstützung als „Arbeitsplatzsicherheit“. Ich glaube nicht, Management jemals wirklich erkannt, dass er brauchte beiseite mit einem Hunger nach Veränderung für jemanden gelockert werden, aber das ist, was wahrscheinlich gebraucht wurde.

Drew

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top