I am currently on a paid internship, and have been tasked with maintaining an obsolete system that has been developed by multiple developers (at different times) over the course of the past 5 years. Management agrees the "system is on life support", and I receive a fairly regular supply of bug reports from end users currently using the system.
Il sistema non è obsoleto se le persone lo stanno ancora utilizzando e supporta le attività commerciali. Dal momento che è ancora in uso, l'azienda non può semplicemente buttarla via: deve essere supportata finché non è più necessario il sistema. Questo potrebbe essere un cambiamento negli obiettivi di business o un nuovo sistema è stato sviluppato, testato e distribuito con successo agli utenti finali.
In realtà, 5 anni non sono così lunghi. Ho lavorato con il codice che aveva 10 anni prima. Se continua a soddisfare le esigenze dell'utente, perché buttarlo via? Questo sta buttando via un sacco di soldi spesi per svilupparlo. Fino a quando non diventa impossibile mantenere a causa di un aumento dei costi o se i requisiti cambiano drasticamente, non c'è alcun motivo commerciale per buttarlo via.
Management now wants to extend the project for another year, and in the process nearly triple the user base.
Se la direzione dice che questo sistema è "in supporto vitale", perché stanno cercando di implementarlo ulteriormente? È normale che le attività di manutenzione continuino su un sistema legacy fino a quando non viene sostituito, ma se un sistema è in fase di dismissione, in genere non viene distribuito a più persone. Estendere la manutenzione è una cosa, ma aggiungere utenti che si affidano al sistema è una situazione diversa, tutti insieme.
Per me, sembra che non sia effettivamente la fine della vita, ma piuttosto in una fase di manutenzione e continuerà ad esserci fino a quando il sistema non soddisferà più le esigenze degli utenti.
As an intern (or any entry level position) how do I "push back"? I've already written a report stating my concerns, albeit in an open-ended document. Is there protocol or document type for suggesting changes? Am I in a position to make suggestions, or should I simply continue to support the old system?
Devi continuare a supportare il vecchio sistema. Più tardi, hai detto che il software non è l'attività principale della tua azienda. In tale ambiente, il compito dei team di software è supportare l'attività principale dell'azienda. Tuttavia, i team del software devono anche tenere a mente gli obiettivi aziendali.
Nel frattempo, cattura i tuoi suggerimenti in un modo che non sia eccessivo. Indica altre tecnologie o tecniche che potrebbero essere integrate con il sistema o utilizzate se / quando viene creato un nuovo sistema e i loro pro / contro. Il modo in cui lo fai dipende dalla compagnia, ma considerando alcuni punti successivi, forse sarebbe utile creare un wiki o un altro sito collaborativo.
In un business non software, il software è un costo e i team del software (in particolare i project manager / program manager) dovrebbero lavorare per ridurre al minimo i costi di costruzione e manutenzione dei sistemi software il più possibile, supportando nel contempo le esigenze di gli utenti finali. Gettare via software che (per quanto posso dire, dal tuo post, comunque) soddisfa le esigenze degli utenti va contro ciò che è nel migliore interesse del team di software.
*To clarify, software development is not my company's primary business. As such no internal protocols exist. Additionally, the project has no formal documentation at all, no requirements documents. The development is very ad hoc.
Per me, questo è il problema. Non producendo documentazione, non sviluppando una specifica, e una mancanza di coerenza tende ad aumentare il costo di sviluppo del software. Lavorare per risolvere questo problema sarebbe la mia massima priorità, e lo farei lavorando su elementi come uno standard di codifica, controllo della versione, produzione di documenti di codice e progettazione auto-documentabili, tracciamento dei difetti e specifiche dei requisiti.