Legacy può significare tutt'altro che sulla base del tuo commento "non ben scritto" Suppongo che Legacy significhi tecnologie e schemi "scadenti" o almeno "obsoleti". Se il codice legacy è valido, non trattenerti e apprenderne ogni riga.
Non credo che ci siano abbastanza chiari avvertimenti contro il tipo di lavori e progetti che deviano la tua carriera e ti bloccano in buchi di lavello senza valore su questo thread fino ad oggi.
Avviso di analogia sportiva: pensi che un sostenitore della linea nella NFL impari di più e diventi più prezioso giocando in squadra con il record peggiore o il migliore? La mia risposta: non solo sono più preziosi avendo giocato per le migliori squadre, ma probabilmente hanno acquisito le migliori pratiche e conoscenze ed evitato di raccogliere le pratiche e gli atteggiamenti di fine carriera.
C'è un sacco di codice anti pattern terribile là fuori che funziona davvero per l'azienda e paga molti stipendi. Propongo che uno sviluppatore che non ha visto abbastanza codice fatto nel modo "giusto" possa confondere il codice anti pattern con una soluzione legittima a un problema. Il business potrebbe dire che la soluzione funziona, ma non è quella che desideri sul tuo curriculum o quella che vorresti vantarti con altri sviluppatori. Ciò è rilevante solo se il tuo percorso di crescita personale include il rispetto dei tuoi colleghi di ingegneria e non solo un aumento temporaneo delle entrate di qualsiasi azienda per cui lavori (suona male, ma alla fine, la migliore ingegneria fa assolutamente la maggior parte dei soldi IMO) .
Sfortunatamente c'è molto codice e molto tempo che può passare prima che venga rivelato il debito tecnologico. E quel debito tecnologico di solito viene riconosciuto esattamente quando è troppo tardi. Chiunque abbia mai provato a fermare il debito tecnologico o gli schemi anti prima, avrebbe potuto essere messo da parte a causa della spesa aggiuntiva percepita o della mancanza di comprensione dell'ect della scalabilità. Come ingegneri è nostro dovere esporre immediatamente il debito tecnologico. I progetti senza ingegneri esperti sono a rischio di colpire un muro di mattoni a un certo punto, in realtà tutti i progetti anche con sviluppatori di talento. La maggior parte delle aziende considera "un certo punto" un sacco di tempo per risolverlo in un secondo momento. Questo rende le scelte di lavoro per gli sviluppatori emergenti una questione molto complicata. Sottolinea inoltre gli obiettivi e le mentalità completamente diversi tra sviluppatori e aziende e quanto sia complicato colmare il divario.
L'obiettivo degli ingegneri è quello di "includere" il vero lavoro scientifico e la considerazione del progetto, mentre l'obiettivo dell'azienda è "escludere" costi e tempi non necessari. Dal momento che gli ingegneri spesso non sanno quale sia il livello di sforzo e tempo fino a quando lo stato finale non viene effettivamente realizzato, lo sviluppo del software si svolge come un buon dramma con personaggi come agile, mischia e kanban che recitano ruoli da protagonista.
Un take away potrebbe essere quello di stare lontano da un codice errato fino a quando non avrai visto abbastanza buon codice per non essere "corrotto". Adoro il detto che gli sviluppatori senior creano soluzioni semplici a problemi complessi. Come saggi, gli sviluppatori di livello medio junior creano soluzioni complesse per problemi semplici e complessi.
Un altro take away potrebbe essere che è necessario lavorare su codice buono e negativo in diversi punti per ottenere comprensione. Se non hai fatto nessuno dei due, fallo e preparati a disimparare tutto quando trovi un sistema migliore. Penso che questa sia probabilmente una traiettoria più comune per la maggior parte degli sviluppatori.
Quest'anno sono di parte perché mi sento come se stessi scalando una montagna "salsa segreta" estremamente complicata. Mentre aumenterò la mia capacità di decifrare alcuni dei peggiori schemi che abbia mai visto, è così "personalizzato" e "unico" che non credo che la mia lotta aumenterà la mia commerciabilità o le mie abilità utilizzabili nel mio futuro.
Al fine di mantenere la mia sanità mentale, sto solo ridacchiando a un ritmo costante e abbracciando ogni blocco stradale come alla pari per il corso. Avendo appena rivisto i miei obiettivi annuali con il mio capo che includono scavare da questo buco ereditato, penso che potrebbe essere una scalata sacrificale. Potrei sopravvivere al processo con recensioni negative e lentezza percepita. Questo è un avvertimento realistico e presuntuoso per quelli di voi che si chiedono quale lavoro prendere.
Disclaimer: questo post vivrà molto più a lungo delle mie opinioni, quindi prendilo con un pizzico di sale. Domani potrei amare il codice legacy! (Ne dubito).