Frage

Ich arbeite in einem Unternehmen, in dem das gleiche Team eine Wartung durchgeführt wird, die ein Leben zu einem Software Leben bringt.

Sehr oft höre ich von Organisationen mit einem separaten Wartungsteam oder einem Wartungsprogrammierer. Was ich mich wundere, ist - was ist die Argumentation dahinter?

Gibt es abgesehen davon, dass der alte Code für kleinere Sterbliche ausgelöst wird?

Die Lektionen, die durch die Aufrechterhaltung Ihres eigenen "Mülls" gezogen wurden, sind von einem viel höheren Wert? Ist es nicht weitaus effektiver, Defekte zu reparieren, wenn sie von denjenigen durchgeführt werden, die sie von Anfang an veranlasst haben?

Fehlt mir echte Gründe, warum es vorteilhaft sein könnte, ein separates Wartungsteam zu haben?

War es hilfreich?

Lösung

Das Konzept, das in den Sinn kommt, um dies am besten zu beschreiben, ist "Prügel. "Dies ist im Wesentlichen das Umstellungskosten dass Sie sowohl mit Wartungsarbeiten als auch Entwicklungsarbeit in Verbindung gebracht haben. Dies ist wahrscheinlich der größte Grund, die Verantwortlichkeiten zu trennen. Andere umfassen die Ermöglichung von Programmierern von Junior- oder Einstiegsebene die Möglichkeit, ihre Füße nass zu machen und Ihre erfahreneren Entwickler zu halten, die höherwertige Gegenstände produzieren.

Gleichzeitig denke ich, dass ein Entwickler einen gewissen Wert gibt, der eine App geschrieben hat, die sie unterstützen muss. Erstens werden sie sehr schnell Probleme in ihrem Code finden, aus denen sie lernen können. Zweitens werden sie darüber nachdenken Wartbarkeit und Qualität des Code, da sie es unterstützen müssen.

Real Life Thrashing Beispiel:

Ihnen wurde ein 1500 -Stunden -Entwicklungsprojekt zugewiesen und ist auch für die Systemwartung und Unterstützung für Ihre letzten 3 Anwendungen verantwortlich. Während dieses neuen Projekts werden Sie durchschnittlich 7 Mal pro Woche unterbrochen, um diese 3 Apps zu unterstützen. Jedes Mal, wenn Sie mit der Arbeit an den anderen 3 Apps beginnen, verbringen Sie 20 Minuten damit, sich um das Problem zu wickeln. Nachdem Sie das Problem behoben haben, verbringen Sie 20 Minuten damit, sich um den Code zu wickeln, den Sie zuletzt in Ihrer neuen App berührt haben. Dies sind Gesamtkosten von 40 Minuten pro Unterbrechung oder 280 Minuten pro Woche. Dies bedeutet, dass Sie in der Woche 2,67 Stunden Produktivität verloren haben, um diese Apps zu unterstützen.

Andere Tipps

Ich arbeite seit weit über einem Jahr in einem agilen Team. Ich denke, es spielt keine Rolle bei einem Live -Produkt (damit meine ich, dass Kunden nur die neuesten Versionen verwenden). Aber sagen Sie, Sie haben mehrere Versionen Ihres Produkts auf dem Markt und müssen jeden von ihnen unterstützen.

Nehmen Sie zum Beispiel Bentleys Mikrostation. Es ist eine Designanwendung für 3D (Architektur, Pflanzendesign, Rails Roads Bridges usw.). Nehmen wir jetzt an, wir haben V8, V9, V10 auf dem Markt. Sie haben unterschiedliche Funktionen, und das Dateiformat hat sich gegenüber Versionen erheblich verändert. Die Projekte sind jedoch so groß (oder die Kunden sind so wichtig), dass Sie V8 -Kunden und V9 -Kunden unterstützen müssen und gleichzeitig V10 -Dinge entwickeln. Daher ist es für das Unternehmen erforderlich, dass ein Pflegebetam (oder eine Zeit) früheren Versionen zugeteilt wird. Normalerweise werden diese Teams als Anpassungsteams bezeichnet, wenn Ihr Produkt die Anpassung und das oben genannte Szenario unterstützt.

The problem is more practical I guess:

  • old code have been written by people not anymore in the company or team;
  • old code was written by external developers;

It is really common in a lot of company to have a code base that are not anymore maintained by the original coders because they are not there anymore. If the code base is big enough, someone have to keep it up to date so they are called maintainers.

If you can avoid this case, good for you, but be sure that it's always temporary.

I will not say I agree with the practice but in many organizations consultants are brought onboard to write software in short, hurried efforts after which the projects are handed to in-house programmers to "maintain." The rationale is that you can bring in someone who is more skilled without training and then have them include "knowledge transfer" to people who will work on keeping a piece of software intact.

In short, much of the time it is done for political/impractical reasons.

I would think the motivation behind splitting the maintenance and feature development teams is to keep things running smoothly: if the feature development team keeps having to stop what they're doing to handle a bug fix, then the project will stall. Having a separate maintenance team would free up the rest of the developers to keep the project/product in question moving forward.

My first job was maintaining some software modules, whose original developers had moved on to some new project.

I'm guessing:

  • Makes the new development more predictable, easier to schedule: because the developers aren't being called off it to fix some unknown-in-advance number of maintainance issues

  • Opportunity to train new developers (e.g. me)

Furthermore, the code I was maintaining wasn't "junk" -- it was telco software, an early packet-switched network, which had been deployed to customers like Bell etc. It was well designed, well written, testable (suites of automated test cases), maintainable, plenty of log files, some design documentation ...

... the subtitle to your OP seems to be , "Man, this code stinks! I wish I could get the original developer, and rub his nose it: that would learn him!"

So when the code's well-written already, that argument (teaching the original developers) isn't applicable.

When I say I was doing "maintenance" is was kind of like new feature development but of very minor features ... for example, interop with new customer devices which interpreted the protocol spec in some slightly unusual way.

[I'd analyse and diagnose the problem, and code a fix; and a QA person would add a new corresponding test case to the automated test suite.]

One advantage I can see is that then there is at least one other person in the organization who is responsible for understanding the code well enough to fix it. Also, this person will have a different agenda in mind and can review the code from the perspective of maintenance, if he is brought in on design/development reviews (which he/she should be).

Also, "maintenance" may refer to a host of activities such as deployment, configuration, backup etc. which should definitely be handled by a different team.

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