Altri commentatori hanno già coperto alcuni punti importanti - sto parlando della posizione di qualcuno che ha lavorato per un po 'in un team di sviluppo incaricato specificamente del mantenimento del codice spedito. Praticamente tutte le tue domande si sono ripetute più volte.
Ci sono molte cose che potrebbero andare avanti. Ne hai indicato uno - lo sviluppatore originale potrebbe aver lasciato la compagnia. Un'altra possibilità è che, mentre lo sviluppatore originale è ancora in azienda, da molto tempo si è trasferito ad altre cose, e non ha più quella roba nella memoria di lavoro (specialmente se il codice è cambiato parecchio da quando stavano lavorando su di esso).
Ciò che abbiamo dovuto affrontare, ad esempio, è che il team del prodotto aveva programmi molto aggressivi per fornire le prossime versioni del prodotto. Se anche dovessero lavorare su bug nelle versioni esistenti, almeno così è andato il ragionamento, non sarebbero stati in grado di soddisfare i loro programmi. Immagino che questo punto possa essere argomentato, ma la realtà del mondo del software aziendale è che portare le cose fuori dalla porta supera qualsiasi altra cosa, inclusa l'osservazione di tutte le migliori pratiche di ingegneria del software in ogni momento. "Tradeoffs" è il termine vago in base al quale cadono tutti gli spiacevoli compromessi che noi sviluppatori, prima o poi, dobbiamo fare in quegli ambienti.
D'altro canto, tuttavia, la risoluzione di bug non banali richiede di imparare molto sul codice base. È doloroso, a volte demoralizzante e spesso travolgente. Ma come pensi esattamente che diventerai un esperto in materia su un progetto software? Puoi passare giorni a leggere il codice per la tua edificazione, ma quel tipo di codice in esame non si attacca bene e ha dovuto "combattere" con il codice per risolvere un problema. Le ricerche continuano a battere il motto che impariamo facendo. Purtroppo, a meno che tu non sia in una startup o in una nuova squadra, questo significa che di solito ti stai unendo a un progetto software che è stato utilizzato per diverse versioni e che ha clienti reali con lamentele reali che devono essere affrontate. Ciò implica che dovrai correggere i bug prima di dare funzionalità per aggiungere / ridisegnare.
Ciò che è veramente importante è comunicare regolarmente con il tuo manager ed esprimere ciò che vuoi ottenere dal lavoro, e vedere se l'azienda può effettivamente accogliere i tuoi obiettivi al momento. Spero che la risposta sia sì. Rimanere in giro per un po 'e raccogliere tutta l'esperienza che puoi dal tuo team attuale. Se la risposta risulta essere no, e sei un buon sviluppatore, avrai molte opzioni. Ma non sottovalutare l'esperienza acquisita correggendo i bug: ora sono nel mio terzo lavoro software e devo scrivere tonnellate di codice. Fortunatamente, gran parte funziona sin dall'inizio perché ho passato tanto tempo a identificare, correggere e cercare di prevenire i bug.