L'eredità può significare qualsiasi cosa, ma in base al tuo commento "non così ben scritto" assumerò che Legacy significhi tecnologie e modelli "cattivi" o almeno "obsoleti". Se il codice legacy è buono, non ti trattenere e impara ogni riga di esso.
Non penso che ci siano abbastanza chiari avvertimenti contro il tipo di lavori e progetti che distraggono la tua carriera e ti fanno rimanere bloccato in buche senza valore su questo thread fino ad oggi.
Avviso di analogia sportiva: pensi che un sostenitore di linea della NFL impari di più e diventi più prezioso giocando nella squadra con il peggior record o il migliore? La mia risposta: non solo hanno più valore aver giocato per le migliori squadre, ma probabilmente hanno raccolto le migliori pratiche e conoscenze e hanno evitato di cogliere pratiche e atteggiamenti di fine carriera.
C'è un sacco di terribili codici anti-pattern là fuori che in realtà funzionano per il business e pagano molti stipendi per sviluppatori. Propongo che uno sviluppatore che non ha visto abbastanza codice fatto il modo "giusto" potrebbe confondere il codice anti-modello per una soluzione legittima a un problema. L'azienda potrebbe dire che la soluzione funziona, ma non è quella che si desidera sul proprio curriculum o quella che si potrebbe vantare con altri sviluppatori. Questo è anche rilevante solo se il tuo percorso di crescita personale include ottenere il rispetto dei tuoi colleghi di ingegneria e non solo aumentare temporaneamente il reddito di qualsiasi azienda per cui lavori (Sembra male, ma alla fine, la migliore ingegneria fa assolutamente la maggior parte del denaro IMO) .
Sfortunatamente c'è molto codice e molto tempo che può passare prima che venga rivelato il debito tecnologico. E quel debito tecnologico viene di solito riconosciuto esattamente quando è troppo tardi. Chiunque potrebbe aver tentato di fermare il debito tecnologico o anti modelli prima, avrebbe potuto essere messo da parte a causa della spesa extra percepita o della mancanza di comprensione della scalabilità ect. È nostro dovere in quanto ingegneri esporre subito il debito tecnologico. Progetti senza ingegneri esperti sono a rischio di colpire un muro di mattoni ad un certo punto, in realtà tutti i progetti anche con sviluppatori di talento. La maggior parte delle aziende considera "qualche punto" come un sacco di tempo per risolverlo in seguito. Ciò rende le scelte di lavoro per gli sviluppatori emergenti una questione molto complicata. Indica 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" un vero lavoro scientifico e una considerazione progettuale mentre l'obiettivo delle imprese è quello di "escludere" costi e tempi non necessari. Poiché gli ingegneri spesso non sanno quale sia il livello di sforzo e di tempo fino a quando lo stato finale non viene effettivamente eseguito, lo sviluppo del software si sviluppa come qualsiasi buon dramma con personaggi come agile, scrum e kanban che interpretano ruoli di primo piano.
Un take away potrebbe essere quello di stare lontano dal codice sbagliato finché non hai visto abbastanza codice buono da non essere "corrotto". Mi piace dire che gli sviluppatori senior creano soluzioni semplici a problemi complessi. Come gli sviluppatori saggi, junior di livello medio creano soluzioni complesse per problemi semplici e complessi.
Un altro take away potrebbe essere che devi lavorare su codice buono e cattivo in diversi punti per ottenere comprensione. Se non l'hai fatto, allora vai a prenderlo e preparati a disimparare tutto quando ti imbatti in un sistema migliore. Penso che questa sia probabilmente una traiettoria più comune per la maggior parte degli sviluppatori.
Quest'anno sono prevenuto perché mi sento come se stessi scalando una montagna di "salsa segreta" estremamente complicata. Mentre aumenterò la mia capacità di decifrare alcuni dei peggiori pattern che abbia mai visto, è così "personalizzato" e "unico" che non credo che la mia lotta aumenterà la mia commerciabilità o la mia abilità utilizzabile nel mio futuro.
Al fine di mantenere la mia sanità mentale, mi sto solo muovendo a ritmo sostenuto e abbracciando ogni blocco stradale come una par per il corso. Avendo appena rivisto i miei obiettivi annuali con il mio capo che includono scavare da questo buco dell'eredità, penso che potrebbe essere una salita sacrificale. Potrei sopravvivere al processo con recensioni negative e lentezza percepita. Questo è un avvertimento realistico e premonitore per quelli di voi che si chiedono quale lavoro intraprendere.
Disclaimer: questo post vivrà molto più a lungo delle mie opinioni, quindi prendilo con un pizzico di sale. Domani potrei amare il codice legacy! (Dubbio).