Ich bin derzeit in einem bezahlten Praktikum und habe die Aufgabe, ein veraltetes System zu warten, das in den letzten 5 Jahren von mehreren Entwicklern (zu unterschiedlichen Zeiten) entwickelt wurde. Das Management stimmt zu, dass das "System lebenserhaltend ist", und ich erhalte regelmäßig Fehlerberichte von Endbenutzern, die das System derzeit verwenden.
Das System ist nicht veraltet, wenn es noch verwendet wird, und es unterstützt die Geschäftsaktivitäten. Da es immer noch verwendet wird, kann das Unternehmen es nicht einfach wegwerfen - es muss solange unterstützt werden, bis das System nicht mehr benötigt wird. Dies kann eine Änderung der Geschäftsziele sein, oder es wurde ein neues System entwickelt, getestet und erfolgreich für die Endbenutzer bereitgestellt.
Wirklich, 5 Jahre sind nicht so lang. Ich habe mit Code gearbeitet, der 10 Jahre alt war. Wenn es immer noch den Bedürfnissen des Benutzers dient, warum sollte es dann weggeworfen werden? Das wirft eine Menge Geld weg, um es zu entwickeln. Solange eine Wartung aufgrund steigender Kosten oder sich drastisch ändernder Anforderungen nicht möglich ist, gibt es keinen geschäftlichen Grund, sie wegzuwerfen.
Das Management will das Projekt nun um ein weiteres Jahr verlängern und dabei die Nutzerbasis nahezu verdreifachen.
Wenn das Management feststellt, dass dieses System lebenserhaltend ist, warum versuchen sie es dann weiter zu implementieren? Es ist üblich, dass Wartungsaktivitäten auf einem Altsystem fortgesetzt werden, bis es ersetzt wird. Wenn sich ein System jedoch am Ende der Lebensdauer befindet, wird es in der Regel nicht mehr für mehr Personen bereitgestellt. Das Verlängern der Wartung ist eine Sache, aber das Hinzufügen von Benutzern, die sich auf das System verlassen, ist insgesamt eine andere Situation.
Für mich hört sich das so an, als wäre es nicht das Ende der Lebensdauer, sondern eine Wartungsphase, die so lange andauert, bis das System die Anforderungen der Benutzer nicht mehr erfüllt.
Wie kann ich als Praktikant (oder als Anfänger) "zurückschieben"? Ich habe bereits einen Bericht geschrieben, in dem meine Bedenken dargelegt werden, allerdings in einem unbefristeten Dokument. Gibt es ein Protokoll oder einen Dokumenttyp, um Änderungen vorzuschlagen? Bin ich in der Lage, Vorschläge zu machen, oder sollte ich einfach weiterhin das alte System unterstützen?
Sie müssen das alte System weiterhin unterstützen. Später erwähnen Sie, dass Software nicht das Hauptgeschäft Ihres Unternehmens ist. In einem solchen Umfeld besteht die Aufgabe von Software-Teams darin, das Hauptgeschäft des Unternehmens zu unterstützen. Die Software-Teams müssen jedoch auch die Geschäftsziele im Auge behalten.
In der Zwischenzeit sollten Sie Ihre Vorschläge auf eine Weise festhalten, die nicht überheblich ist. Weisen Sie auf andere Technologien oder Techniken hin, die in das System integriert sein oder verwendet werden können, wenn ein neues System erstellt wird, und auf deren Vor- / Nachteile. Wie Sie dies tun, hängt vom Unternehmen ab, aber wenn Sie einige spätere Punkte berücksichtigen, ist es möglicherweise hilfreich, ein Wiki oder eine andere Website für die Zusammenarbeit einzurichten.
In einem Nicht-Software-Geschäft sind Softwarekosten und die Softwareteams (insbesondere die Softwareprojekt- / Programmmanager) sollten daran arbeiten, die Kosten für die Erstellung und Wartung von Softwaresystemen so gering wie möglich zu halten und gleichzeitig die Anforderungen der Endbenutzer zu erfüllen . Das Wegwerfen von Software, die (soweit ich das beurteilen kann) den Bedürfnissen der Benutzer entspricht, verstößt gegen das, was im besten Interesse des Softwareteams liegt.
* Zur Verdeutlichung ist die Softwareentwicklung nicht das Hauptgeschäft meines Unternehmens. Als solche existieren keine internen Protokolle. Darüber hinaus verfügt das Projekt über keinerlei formale Dokumentation und keine Anforderungsdokumente. Die Entwicklung ist sehr ad hoc.
Für mich ist das das Problem. Das Fehlen einer Dokumentation, das Entwickeln nach einer Spezifikation und ein Mangel an Konsistenz erhöhen tendenziell die Kosten für die Entwicklung von Software. Es wäre meine höchste Priorität, darauf hinzuarbeiten, dies zu beheben, und ich würde dies tun, indem ich an Dingen wie einem Codierungsstandard, einer Versionskontrolle, der Erstellung von selbstdokumentierendem Code und Designdokumenten, der Fehlerverfolgung und Anforderungsspezifikationen arbeite.