Attualmente sto svolgendo uno stage retribuito e mi è stato affidato il compito di mantenere un sistema obsoleto che è stato sviluppato da più sviluppatori (in momenti diversi) nel corso degli ultimi 5 anni. La direzione concorda sul fatto che "il sistema è in supporto vitale" e ricevo una fornitura abbastanza regolare di segnalazioni di bug dagli utenti finali che attualmente utilizzano il sistema.
Il sistema non è obsoleto se le persone lo utilizzano ancora e supporta le attività aziendali. Dal momento che è ancora in uso, l'azienda non può semplicemente buttarlo via: deve essere supportato fino a quando non è più necessario il sistema. Potrebbe essere un cambiamento negli obiettivi aziendali 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 un 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 diventa impossibile mantenere a causa dell'aumento dei costi o dei requisiti che cambiano drasticamente, non c'è motivo commerciale per buttarlo via.
Il management ora vuole estendere il progetto per un altro anno e nel processo quasi triplicare la base di utenti.
Se la direzione afferma che questo sistema è "in supporto vitale", perché stanno cercando di implementarlo ulteriormente? È comune che le attività di manutenzione continuino su un sistema legacy fino a quando non viene sostituito, ma se un sistema è in esaurimento, in genere non viene distribuito a più persone. L'estensione della manutenzione è una cosa, ma aggiungere utenti che si affidano al sistema è una situazione completamente diversa.
A me sembra che in realtà non sia la fine della vita, ma piuttosto in una fase di manutenzione e continuerà ad essere lì fino a quando il sistema non soddisfa più le esigenze degli utenti.
Come stagista (o qualsiasi posizione entry level) come posso "respingere"? Ho già scritto un rapporto affermando le mie preoccupazioni, anche se in un documento aperto. Esiste un protocollo o un tipo di documento per suggerire modifiche? Sono in grado di dare suggerimenti o devo semplicemente continuare a supportare il vecchio sistema?
Devi continuare a supportare il vecchio sistema. Successivamente, accenni al fatto che il software non è l'attività principale della vostra 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, acquisisci i tuoi suggerimenti in modo non invadente. Indicare 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, potrebbe essere utile stabilire una wiki o un altro sito collaborativo.
In un settore non software, il software è un costo e i team del software (in particolare i responsabili del progetto / programma software) dovrebbero lavorare per ridurre al minimo i costi di costruzione e manutenzione dei sistemi software, supportando nel contempo le esigenze degli 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 del software.
* Per chiarire, lo sviluppo del software non è il business principale della mia azienda. Pertanto non esistono protocolli interni. Inoltre, il progetto non ha alcuna documentazione formale, nessun documento sui requisiti. Lo sviluppo è molto ad hoc.
Per me questo è il problema. Non produrre documentazione, non sviluppare secondo una specifica e una mancanza di coerenza tende ad aumentare i costi di sviluppo del software. Lavorare per risolvere questo sarebbe la mia massima priorità, e lo farei lavorando su cose come uno standard di codifica, il controllo della versione, producendo codice autocompattante e documenti di progettazione, rilevamento dei difetti e specifiche dei requisiti.