Domanda:
Come spiego che non voglio mantenere vecchi progetti?
Mr Den 12
2019-07-05 14:44:51 UTC
view on stackexchange narkive permalink

Attualmente lavoro come programmatore con 3 anni di esperienza nei Paesi Bassi. All'inizio ho lavorato ad alcuni progetti che ho iniziato da zero e mi sono davvero piaciuti. Ho anche agito un po 'come supporto su altri progetti e ho fatto una buona parte nel correggere e migliorare i progetti esistenti.

Tuttavia, negli ultimi 6 mesi, sono stato messo al lavoro su un progetto che è stato sviluppato per oltre 6 anni da altri 5 programmatori prima di me. Il progetto è finito sulla carta, ma è stato fatto davvero in modo disordinato e ogni settimana si presenta un nuovo bug su cui spesso devo passare settimane. Come altri programmatori potrebbero sapere, non è facile capire il codice di un'altra persona, specialmente se non c'è documentazione.

Per dirla in minima parte, lo odio. Sono arrivato al punto in cui comincio a sentirmi giù quando vedo un messaggio di uno degli utenti che contiene qualcosa come "bug" o "errore". Semplicemente non voglio più farlo.

La mia domanda: sarebbe ragionevole chiedere al mio manager di affidarmi a un altro progetto perché non mi piace davvero il lavoro di cui ho bisogno da fare ora e come lo dico?

So che tutti pensiamo di produrre un codice perfetto, ma proprio come esercizio mentale, immagina la persona che gestisce i tuoi progetti iniziali.Cosa direbbe quella persona al riguardo?
Cordiali saluti, un termine comune per il concetto di lavorare su un progetto nuovo di zecca non gravato da codice legacy è [* greenfield *] (https://en.wikipedia.org/wiki/Greenfield_project) (contro [* brownfield *] (https: //en.wikipedia.org/wiki/Brownfield_land)).
Su che tipo di bug devi passare settimane?
Gli utenti di @MrDen12 150 sono molto piccoli, ma non è raro avere una piccola base di utenti.
Non avevamo una domanda come questa un paio di settimane / mesi fa?
@jpmc26 Finalmente lavoro con qualcuno che scrive codice che capisco la prima volta.È fantastico!Apro i file e penso "Sembra che l'abbia scritto io, ma non ricordo di averlo scritto", ed è sempre scritto dalla stessa persona.Spero che anche tu un giorno trovi il tuo codemate ;-)
guardalo così: quel progetto ha 6 anni.È stato un nuovo codice per 1 anno e manutenzione per 5 anni.significa che per ogni nuovo progetto su cui lavori, lavorerai su 5 progetti precedenti.Quindi, c'è quello.
@alephzero: Sembra che voglia partecipare a un nuovo progetto al primo giorno e rimanerci per dieci anni.
Rifattorizza il codice e scrivi unit test in modo che l'aggiunta di nuove modifiche sia un gioco da ragazzi.
@422_unprocessable_entity A volte il refactoring del codice non è un'opzione (potrebbe essere troppo grande, troppo complesso, o OP potrebbe non essere l'unico manutentore del codice e potrebbe non avere l'autorità per farlo).
"Ehi capo. Ho scoperto che non mi piace lavorare. Potresti inserirmi in un progetto in cui invece potrei divertirmi un po '?"
A tutti piace scrivere codice da zero.Ma questa è la minoranza del lavoro (almeno nei luoghi in cui ho lavorato, l'estensione dei sistemi esistenti è più comune).Quindi questi incarichi scelti vanno agli ingegneri migliori e più esperti (devi dimostrare di essere in grado di svolgere questi compiti primari e competere per ottenerli contro tutti gli altri).Lamentarsi può farti passare a un altro progetto, ma è ancora improbabile che sia un nuovo progetto.Trasferirsi in una nuova azienda significa metterti alla prova da zero sui loro vecchi sistemi.
@bob - Vedi il classico 'Working Effectively with Legacy Code' di Micheal Feathers per un ottimo esempio del modo tecnico di affrontare i problemi - Anche se sono d'accordo sul fatto che la 'mancanza di autorità' per apportare cambiamenti contro la pressione del management e la cultura del 'fareil meno possibile per farlo funzionare 'è un ostacolo difficile da superare.
@jpmc26 150 utenti non è molto piccolo.A seconda del settore, può essere un prodotto importante ... Ho lavorato su sistemi che sarebbero stati usati solo da 10 persone (in effetti sono un revisore del codice per uno di loro in questo momento).Ho anche lavorato su sistemi usati da milioni di persone.
@jwenting È molto piccolo nei contesti di quanto carico avrai e quanti feedback degli utenti riceverai.Non c'è niente di sbagliato in un progetto che supporta una piccola base di utenti, ma il rapporto costi / benefici è molto diverso.In particolare, il carico è in genere poco preoccupante e il tempo speso per miglioramenti e sottigliezze ha rendimenti molto inferiori.
Sedici risposte:
Stig Tore
2019-07-05 14:57:45 UTC
view on stackexchange narkive permalink

Sfortunatamente la manutenzione è la regola quando si lavora nell'IT, molto raramente ci sono nuovi progetti e le persone vengono riassegnate regolarmente ai progetti. E sebbene la qualità del codice che dovrai mantenere nella tua vita professionale varierà notevolmente, non avranno mai lo stesso odore di un nuovo progetto di 2-6 mesi.

Tuttavia, ci sono cose che puoi fare forse per rendere la tua vita e il tuo futuro un po 'più vivibili. Comincerei con la scomposizione mentale del progetto corrente in moduli, quindi chiedendo il permesso di rifattorizzare o riscrivere quelli, uno alla volta, in conformità con standard di codifica più rigorosi. Assicurati di scrivere molti test su tutto ciò che scrivi o migliora.

Questo dovrebbe vedere la tua vita lavorativa migliorare lentamente e costantemente, poiché questo approccio ti consentirà di familiarizzare con l'applicazione, migliorare la leggibilità delle parti di esso e rendere i bug meno comuni.

Il modo in cui venderlo al proprietario / leader / capo varia ampiamente a seconda della struttura aziendale e delle personalità coinvolte. Ma se questo è davvero insopportabile per te e non hai il potere di migliorare le cose, allora trovare un diverso tipo di lavoro potrebbe essere meglio.

In generale, sembra che i consulenti in generale lavoreranno di più codice recente e hanno maggiore flessibilità per essere spostati da un progetto a un altro o per concentrarsi principalmente su nuove applicazioni (ish).

Tuttavia, il codice legacy farà sempre parte della professione scelta, e dovrai imparare ad andare d'accordo e convivere con questo fatto.

Bella risposta.Solo una piccola parte da aggiungere: se vai a rielaborare il codice, assicurati di aggiungere anche la documentazione adeguata, per non lasciare la prossima povera anima nella stessa situazione in cui ti trovi ora.Giustificalo al tuo capo (i) dal tempo perso da chiunque sia nuovo che deve prima capire che cosa sta succedendo nel codice, la quantità di bug che produce, ecc.
Voglio anche aggiungere che il refactoring non ha bisogno di essere qualcosa che è un grande compito in sé.Dovrebbe far parte del processo di sviluppo mentre procedi.Raramente sarai in grado di impiegare una settimana per riscrivere una sezione principale del codice, ma 15 minuti per eseguire il refactoring di una funzione gonfia con cui devi lavorare come parte di un'attività di 4 ore dovrebbero essere considerati parte dell'attività.
Consulenza non significa che lavorerai sempre su cose nuove, ma significa che hai la possibilità di rifiutare i contratti di manutenzione.Se va bene per il tuo portafoglio è un'altra questione, ovviamente.
Non spero che venga mai concesso il permesso di riscrivere qualcosa.Questo non accade MAI solo perché alcuni sviluppatori pensano che il codice faccia schifo.Deve esserci un problema reale di cui soffre il management e un potente tecnico senior che può vendere la sua idea.Esemplare molto raro.
-1 per "riscrivere".https://www.joelonsoftware.com/2000/04/06/things-you-should-never-do-part-i/ "Refactor" è la strada da percorrere.
@ivan_pozdeev Anche se in generale sono d'accordo sul fatto che la riscrittura è qualcosa da evitare se puoi, alcune cose sono semplicemente troppo lontane e il refactoring di un pasticcio abbastanza grave è * molto * più costoso che riscriverlo semplicemente da zero (vedi: programmatore pragmatico).
@Dirk Assolutamente d'accordo, anche se in alcuni casi la migliore documentazione in assoluto che puoi fornire sono buoni test.
Il problema con questa risposta è che il nuovo codice viene scritto tutto il tempo, quindi proprio come sono necessari gli sviluppatori legacy, lo sono anche gli sviluppatori che sono bravi a scrivere nuovo codice e farlo funzionare.Inoltre, essere infelici significa prestazioni scadenti, che a lungo termine danneggeranno la carriera dei PO.Meglio trovare compiti o un lavoro che gli piacciono.
@StigTore se è troppo oltre per mantenerlo senza una riscrittura, è probabile che sia troppo per impegnarsi a riscriverlo anche.Soprattutto perché dovrà essere mantenuto parallelamente alla riscrittura, il che significa che stai riscrivendo contro un obiettivo in costante movimento.
@jwenting Se ci vuole così tanto tempo per riscrivere quel modulo / parte che deve essere cambiato nel frattempo, allora la parte che hai selezionato per riscrivere era troppo grande.Parte del lavoro preliminare consiste nella definizione di un "modulo" sufficientemente piccolo.
@StigTore spesso è più facile a dirsi che a farsi, soprattutto con i sistemi legacy.Spesso gli aggiornamenti significano sollevare intere aree principali, con effetti collaterali in tutto il codice.Per esempio.un sistema vecchio di 15 anni che stavo aggiornando l'anno scorso richiedeva un aggiornamento del server delle applicazioni, che richiedeva un aggiornamento della libreria di accesso al database, che richiedeva un aggiornamento del framework di iniezione delle dipendenze, che richiedeva un aggiornamento della versione EJB, che è finitorichiede una riscrittura di circa un terzo del codice di oltre un milione di righe di applicazione.
Borgh
2019-07-05 15:00:47 UTC
view on stackexchange narkive permalink

Sì, è ragionevole dire al tuo manager che non ti piace il tuo lavoro e chiedere qualcosa di divertente.

È anche ragionevole che quel manager ti chieda di resistere. C'è un lavoro che deve essere fatto e il lavoro non può essere sempre divertente.

Un buon manager si renderà conto che sta bruciando la tua utilità e disponibilità a lavorare per lui e cercherà di farlo fare in modo che tu possa dedicare un po 'di tempo a diversi progetti ma questa non è una garanzia! Se sei l'unico sviluppatore in grado di fare questo lavoro, potresti essere bloccato lì.

Per aiutare questa linea d'azione è una buona idea preparare qualcosa su cui vorresti dedicare il tuo tempo: quei progetti che hai iniziato, forse qualche altro progetto o anche un corso per migliorare le tue capacità. Questo ti aiuterà a trasformare una richiesta in un Piano.

Un cattivo manager ti risentirà perché "si lamenta di cose stupide", questo è irragionevole ma non saresti il ​​primo per ricevere respingimenti.

Per evitare ciò, procurati un elenco concreto di cose che rendono il lavoro non divertente: bug stupidi, ticket ripetuti, codice non commentato. Questo trasforma un reclamo in Feedback e renderà le tue domande più ragionevoli.

"* il lavoro non può essere sempre divertente *" +1 solo per questo.Se fosse tutto divertente, * non dovremmo essere pagati per farlo *.
@MadHatter Al contrario, si dice che il successo è trovare qualcosa che ami ed essere pagato per farlo.
@Barmar questo è uno di quei detti che portano solo alla delusione.Le persone che amano ogni fase del loro lavoro sono molto rare, quindi mirare a questo porta solo alla frustrazione.È molto meglio per il tuo godimento generale della vita accettare che ogni lavoro ha il suo speedbumps * fintanto che la strada contiene anche parti piatte. *
@Borgh Non puoi aspettarti di goderti * ogni * fase.Amo i computer e ho avuto una lunga carriera di persone che mi pagano per lavorare con loro.Anche se occasionalmente ho dovuto svolgere attività di cui non ero entusiasta, per lo più è stato divertente.Non è come scavare fossati o trasportare immondizia, cosa che nessuno farebbe se non avesse bisogno di soldi.
"bug stupidi, biglietti ripetuti, codice non commentato." Sì, ma ora mettiti nei panni del manager.Non possono fare nulla per risolvere questi problemi: nel codice esistono bug stupidi e codice errato.È compito del programmatore correggerli.Portare una lista come questa a un manager è come un bidello che si lamenta delle persone che fanno casino tutto il giorno e non sarebbe fantastico se non dovessero continuare a ripulirlo.Bene, questo è il lavoro.Risolvere queste cose è responsabilità di qualunque sviluppatore faccia attualmente parte dello staff.
Voglio dire, se hai intenzione di presentare un problema a un manager, faresti meglio a portare almeno una soluzione parziale al tavolo se lo vuoi dalla parte.L'OP ha bisogno di capire chi si aspetta che * dovrebbe * occuparsi di questi problemi.Se la risposta è che non c'è nessun'altra persona "migliore" per il lavoro, allora si lamentano e non andrà bene.
@J ...: Sono deluso di non poter vedere attraverso il reclamo per valutare l'effettiva qualità del codice dietro.Abbiamo ricevuto queste lamentele su una base di codice che sta vedendo molto sviluppo attivo.Abbiamo ricevuto lamentele riguardo al codebase legacy che finalmente sarà terminato l'anno prossimo.Abbiamo ricevuto queste lamentele su un'altra base di codice che ogni sviluppatore assegnatogli ha abbandonato entro l'anno fino a quando non abbiamo assunto un vecchio a pochi anni dal pensionamento per farlo.I ragazzi vicini alla pensione non si preoccupano dei lavori senza uscita.
@MadHatter: Sì, dovresti pagarmi, anche se è sempre divertente.Perché, sai, 1) la mia vita è limitata e il tempo che non mi definisco è tempo pagato, e 2) c'è sempre qualcosa che sarebbe stato più divertente e 3) ho le bollette da pagare.Ma dato che vuoi lavorare gratis se solo è tutto divertente, forse vuoi diventare il mio assistente personale?Divertimento solo compiti, promesso.
@Barmar non per far deragliare il tuo argomento altrimenti corretto, ma conosco alcune persone che in realtà sono piuttosto intrattenute dallo scavo o dalla costruzione
sf02
2019-07-05 17:01:20 UTC
view on stackexchange narkive permalink

La mia domanda: sarebbe ragionevole chiedere al mio manager di inserirmi in un altro progetto perché davvero non mi piace il lavoro che devo fare ora e come lo dico?

No, non sarebbe ragionevole. Parte dell'essere un programmatore è mantenere i programmi esistenti sia che si tratti di aggiungere / rimuovere funzionalità o correggere errori. Sei stato fortunato ad aver lavorato su alcuni progetti che hai iniziato da zero, ma non puoi aspettarti che ogni progetto sia così. A volte, per un periodo di tempo, l'azienda non ha bisogno di nuovi progetti avviati da zero (ciò non significa che non lo faranno mai più) e devono solo mantenere i progetti esistenti.

Cosa dovresti fare è assumere la proprietà del tuo progetto attuale. Dimentica il fatto che ha 6 anni e altri 5 programmatori ci hanno lavorato. Se è disordinato e pieno di bug, prendi l'iniziativa per correggere il progetto. Avrai sicuramente un aspetto migliore agli occhi del tuo manager se porti con successo il progetto a uno stato stabile invece di lamentarti di dover lavorare su questo progetto e cercare di avere un lavoro diverso assegnato a te.

A volte, in effetti, devi solo succhiarlo e fare il tuo lavoro.Non posso parlare per altri paesi, ma qui in Olanda c'è un'enorme richiesta di sviluppatori di software.I manager e le aziende in generale cercheranno di mantenerti soddisfatto del tuo lavoro.Esprimere che non sei soddisfatto del tuo progetto attuale non è affatto irragionevole, perché può portare a diverse cose: esaurimenti, aumento dello stress o licenziamento.I datori di lavoro vogliono impedire che ciò accada e contribuiranno a rendere e mantenere felice il dipendente.
Nota che qualcuno che era ancora a scuola quando il programma è stato progettato arriva e decide a caso di riscrivere grandi porzioni di codice solo perché pensa che sia disordinato e difficile da capire potrebbe non essere ben accolto da tutti - avrei "letto ilroom "prima di proporre questo;la presentazione è tutto.
+1 per assumere la proprietà.Mantenere non è divertente, sono d'accordo.Ma il refactoring è / può essere divertente.Impara cosa hanno fatto di sbagliato gli altri, suddividilo in parti sensate, poi fallo nel modo in cui pensi che sia stato fatto bene.Ovviamente parlare di essere innervositi dal proprio lavoro è sempre ragionevole, però.Ma in preparazione per un tale incontro, l'OP dovrebbe preparare un piano su quanto potrebbe essere migliore il mondo se fosse refactoring.Se questo desiderio di rendere il lavoro un buon lavoro viene rifiutato, lasciare è ancora un piano B ...
È ragionevole parlare.Alcuni sviluppatori prosperano nel mantenere il codice legacy, altri nella creazione di cose nuove.Forzare un piolo quadrato in un buco rotondo solo perché il buco deve essere riempito è una cattiva gestione.Chi farà un lavoro migliore, lo sviluppatore che ama lo sviluppo legacy o lo sviluppatore che lo odia ma è costretto a farlo?
@EdwinLambregts è sicuro che ci sia domanda, ma ciò non significa che non ci sia anche un enorme pool di programmatori tra cui scegliere.Il problema è che la maggior parte di quel pool è costituita da programmatori di bassa qualità non disposti e / o incapaci di fare ciò che deve fare.Le persone, ad esempio, che non sono disposte a scavare in una grande vecchia base di codice e risolvere i problemi non appena compaiono ... Che a proposito sembra essere qualcosa che mi piace :)
Mangocherry
2019-07-05 15:10:50 UTC
view on stackexchange narkive permalink

Puoi sempre chiedere, ma anche loro possono sempre dire di no.

A meno che tu non abbia nel tuo contratto che lavorerai solo sui progetti che ti piacciono, possono metterti sui progetti come vedono fit.

Potresti documentare le modifiche che vorresti fare (refactoring, scrittura di documentazione, ...) e i vantaggi per l'azienda in termini di tempo guadagnato con meno bug.

Oppure potresti sostenere un nuovo sviluppo del prodotto con pratiche migliori. Ma finché il vecchio progetto ha utenti paganti, qualcuno deve mantenerlo e hanno scelto te Pikachu.

Potresti sostenere di convincere più persone a fare quello che stai facendo (fattore Bus) in modo che tu possa lavorare anche su altri progetti. Se questi diventano più importanti del progetto legacy, quelli potrebbero diventare un'uscita.

Ma ancora: finché ci sono persone che pagano la tua azienda e in estensione pagano i salari dei tuoi capi per questo progetto, e la tua azienda non lo è. T propenso a rinunciare, qualcuno dovrà correggere i bug.

Potresti lasciare e lavorare come libero professionista come ultima risorsa. Lì puoi davvero scegliere i progetti su cui stai lavorando, ma preparati a dover fare alcuni progetti che non ti piacciono molto per tenere le luci accese. Solo i migliori e i più conosciuti possono scegliere quello che fanno completamente.

Mick Mnemonic
2019-07-06 05:04:24 UTC
view on stackexchange narkive permalink

tl; dr: sii onesto con il tuo datore di lavoro. Di 'loro che sei interessato solo ai progetti greenfield. Tieni presente, tuttavia, che prendere questa decisione limiterà in modo significativo il lavoro che ti verrà offerto, forse al punto che i tuoi servizi non saranno più necessari.

Una delle cose più importanti nello sviluppo di software professionale è la collaborazione su una base di codice condivisa. A meno che tu non sia un solista rock star, il codice base avrà sempre una storia, plasmata da colleghi del passato e del presente - e forse anche te stesso nel passato .

Come hai già detto, leggere il codice è molto più difficile che scriverlo, motivo per cui questa abilità è così importante. Ci vuole molta abilità e pazienza per imparare e comprendere gli angoli e le fessure di un progetto esistente. È più facile - e scontato, più piacevole per lo sviluppatore - ricominciare da capo, magari anche scegliendo le tecnologie e i framework utilizzati.

Il software commerciale serve sempre uno scopo aziendale . Ciò significa che, a meno che non si lavori solo con startup o marketing, il software dovrebbe avere un'aspettativa di vita ragionevole. Gli sviluppatori che fanno il possibile per familiarizzare con le soluzioni esistenti e, in particolare, gli interessi commerciali esistenti , sono quelli che si rendono preziosi e spesso difficili da sostituire.

Come te ho sottolineato, il codice legacy non è sempre (mai?) facile da lavorare, privo di bug o pulito. Quello che ti suggerisco di considerare è di cambiare le cose: ogni frammento impossibile di spaghetti copia-pasta è una opportunità per un grande refactor con unit test; ogni segnalazione di bug è un'opportunità per impressionare l'azienda e gli utenti finali con un servizio clienti impeccabile.

Buona risposta.L'unica cosa che aggiungerei è che, nonostante l'ultimo paragrafo, alcuni sviluppatori (come me), semplicemente * odieranno * mantenere il codice legacy.La frustrazione di navigare in un pasticcio incomprensibile e passare più tempo di inattività che tempo di attività è solo qualcosa che alcuni sviluppatori non possono superare.Quindi, se OP è uno di quelli, il primo paragrafo è il miglior consiglio per loro e potrebbe anche finire per significare fare domanda per un nuovo lavoro, il che sarebbe positivo.
EvilSnack
2019-07-06 09:47:47 UTC
view on stackexchange narkive permalink

Il mio team attualmente gestisce due prodotti che appartengono alla nostra azienda quando la nostra azienda ha acquistato gli sviluppatori originali. Il motivo per cui questi acquisti sono stati possibili è perché le altre società non stavano andando bene finanziariamente.

Lavoro solo su uno dei due prodotti. All'inizio era come essere un tassidermista che lavora per uccidere la strada. Il team di programmazione originale non dovrebbe mai più essere autorizzato a toccare i computer. Il mio supervisore è responsabile per l'altro prodotto, ed è anche un disastro.

Il vantaggio principale di lavorare su questi incendi di cassonetti è che stiamo ricevendo buone e solide lezioni su come non fare cose, e anche con tre anni nel settore stai imparando qualcosa del genere dai prodotti su cui stai lavorando.

Quindi smetti di considerare la tua situazione come qualcosa con cui non dovresti avere a che fare e invece consideralo come il modo in cui intendi rendere il prodotto della tua azienda migliore di quello che era.

Come primo semplice passaggio, ogni volta che devi capire cosa fa un pezzo di codice, inserisci dei commenti nel codice che spiega esattamente cosa sta facendo il codice. Potrebbe non aiutarti, anche se trovo che sia di grande aiuto per me, ma la prossima persona che guarda il codice non dovrà risolverlo.

Allo stesso modo, "Working Effectively with Legacy Code" di Micheal Feather è stata una risorsa straordinaria ed è invecchiata molto bene: la teoria alla base dell'aggiunta di "cuciture" al codice in modo da poterne includere parti nei test in modo da avere fiducia inil codice che si comporta come ti aspetti (anche se devi scoprire cosa dovrebbe fare) cambia tutta la tua esperienza con il "codice legacy".E la definizione di codice legacy semplicemente "codice senza test sufficienti" si applica ad alcuni progetti "greenfield" che ho visto ...
e molto spesso quel codice scadente non è peggiore del codice che tu stesso hai creato diversi anni fa ... E per i giovani in particolare, il codice è probabilmente migliore di quello che stanno creando IN ORA, semplicemente non se ne rendono conto perché non lo fannonon capisco il codice che non è progettato secondo i rigidi schemi e paradigmi che sono stati riversati nella loro testa durante le lezioni di programmazione.
JMK
2019-07-07 18:31:27 UTC
view on stackexchange narkive permalink

Già molte ottime risposte, ma aggiungendo i miei £ 0,02.

Mantenere un vecchio software è più difficile che creare qualcosa di nuovo, è anche un'abilità preziosa in sé.

Essere in grado saltare in una base di codice che esiste da anni, con documentazione scadente o assente e con molti stili di codifica diversi dai molti sviluppatori che ci hanno lavorato è qualcosa che molti datori di lavoro, in particolare nel mondo aziendale, cercano attivamente.

Se non c'è documentazione, scrivine un po '. Se non ci sono test automatici, lavora sul refactoring del codice in modo che sia testabile e scrivi alcuni test. Se gli stili di codifica sono ovunque, cerca gli stili consigliati per la lingua o il framework e lavora sul refactoring della base di codice in modo che corrisponda allo stile di codifica consigliato.

Acquisire la reputazione di qualcuno che è felice di lavorare con il codice legacy e chi lo fa bene può essere utile per la tua carriera quanto lavorare su progetti greenfield con i nuovi e brillanti framework.

Col ​​passare del tempo, la quantità di codice legacy in produzione è aumenterà e la domanda di sviluppatori che possano prendersene cura, correggere bug e aggiungere nuove funzionalità aumenterà insieme ad essa, poiché la riscrittura di tali applicazioni con nuove tecnologie è generalmente considerata una cattiva idea per molti buoni motivi.

Buona fortuna!

Flater
2019-07-08 13:40:42 UTC
view on stackexchange narkive permalink

La manutenzione legacy sviluppa il desiderio dello sviluppatore di buone pratiche

Voglio solo aggiungere la prospettiva di uno sviluppatore principale, perché come sviluppatore sono d'accordo con non voler mantenere il codice legacy, ma come sviluppatore principale Non sostengo che alcuno sviluppatore lo eviti.

Userò un esempio pratico per esporre il mio caso. In qualità di consulente, vengo spesso inviato in un'azienda / progetto con problemi di qualità del codice, dove il mio lavoro è sistemare le cose. Come sospetterai, un codice errato porta a molta manutenzione legacy.

È stata la mia esperienza predominante che gli sviluppatori che scrivono codice errato si trovino in uno dei due campi seguenti:

  • Coloro che non conoscevano meglio
  • Coloro che pensano di fare la cosa giusta

Il primo gruppo è facile da affrontare, perché migliorerà immediatamente quando mostri loro una buona pratica. Quest'ultimo gruppo, tuttavia, è molto più difficile da convincere in quanto non vedono i benefici delle buone pratiche, che spesso richiedono maggiori sforzi a breve termine. Ripaga i dividendi nel lungo periodo, ma quest'ultimo gruppo spesso non riesce a raggiungere questo punto.

Quasi tutti gli sviluppatori con cui ho avuto a che fare che erano in quest'ultimo campo erano sviluppatori che sono riusciti a passare da un progetto all'altro saltare la manutenzione del proprio codice . Poiché non hanno mai dovuto affrontare le conseguenze delle loro decisioni di progettazione imperfette, non sono mai stati incentivati ​​a cercare di evitare che questi problemi si verificassero prima che si verificassero, quando l'applicazione è stata inizialmente creata.

La soluzione è semplice: gli sviluppatori devono assumerne la proprietà . Se scrivi codice difettoso, gestirai i bug che ne derivano. Se non vuoi spendere il tuo tempo a correggere i bug, spetta a te scrivere codice che non li produca.
Questo crea un incentivo molto semplice per gli sviluppatori a migliorare se stessi, invece di essere spinti in esso contro la loro volontà e senza la loro comprensione del motivo per cui è l'approccio migliore.

Quello che voglio che tu sappia da questo è che la manutenzione precedente è essenziale per gli sviluppatori per ricordare perché hanno bisogno di buone pratiche .
Per analogia, un generale che è in trincea con i suoi uomini prenderanno decisioni migliori (per i soldati) di un generale che siede comodamente in un palazzo dall'altra parte del paese. Uno sviluppatore deve sporcarsi le mani in modo che quando è il generale (= costruisce la nuova applicazione) sa qual è l'impatto delle sue decisioni di progettazione.


Ripulire dopo gli altri

Tu, tuttavia, non devi affrontare i tuoi bug, ma piuttosto quelli delle persone che sono venute prima di te. Al momento mi trovo sulla stessa barca e sono d'accordo con te sul fatto che questa non è una situazione sostenibile.
A nessuno piace la manutenzione legacy e sembrerebbe che il tuo manager non abbia preso in considerazione il fatto che tu esegui esclusivamente la manutenzione legacy sia influenzando il tuo morale e lo sviluppo della tua carriera personale.

Ho passato 3 anni a fare la manutenzione tradizionale, ma è stato un lavoro comodo con una politica di lavoro da casa molto libera. Mi ci è voluto un po 'per capire che mentre l'equilibrio vita / lavoro non era male, la mia carriera era in stallo perché non stavo acquisendo conoscenze di attualità per il settore. Se fossi stato licenziato da quel lavoro dopo 5 anni, il mio bagaglio di competenze sarebbe così obsoleto per altre aziende che dovrei affrettarmi per recuperare il tempo perso.

D'altra parte, qualcuno deve supportare questo progetto. Quindi non puoi semplicemente adottare un approccio "non io", perché ogni sviluppatore promuoverà lo stesso approccio "non io" e quindi la direzione è passibile di nominare qualcuno che abbia disegnato la paglia corta (questo potrebbe essere il modo in cui sei finito in questa posizione per cominciare).


Risolvere il problema

Avvicinati al tuo manager e spiegagli che mentre capisci che il progetto legacy richiede supporto, è uno spreco di morale quando non fai altro ma gestisci il vecchio codice. Chiedi se il tuo manager considererebbe la possibilità di assegnarti un progetto part-time diverso (non legacy).

Nella mia esperienza, i manager più ragionevoli lo capiranno (probabilmente sei stato assegnato a questo perché gli altri 5 sviluppatori che hanno lasciato tutti hanno sostenuto lo stesso punto) e vedranno il vantaggio di tenerti (qualcuno che sa già il progetto legacy) sul progetto part-time, invece di doverti lasciare e dover trovare un nuovo sviluppatore che non conosce il progetto legacy.

Ma nella mia stessa esperienza, ci sono anche aziende in cui il morale dei dipendenti è notevolmente più basso nell'elenco delle priorità, dove impiegano un approccio più rigoroso "fai quello che ti diciamo di fare".
L'unico consiglio che posso dare qui è di lasciare un ambiente così tossico. Non lasciare che la tua carriera si sprechi facendo un lavoro che odi per un'azienda che non apprezza la tua soddisfazione lavorativa (in misura ragionevole).

Terzo campo: sviluppatori che hanno superato la scadenza perché la direzione fa costantemente promesse basate sulla sottostima del tempo necessario per lo sviluppo.Le scadenze sono la rovina della qualità del software.
@EvilSnack: Giù le mani, sono d'accordo che di solito è così che iniziano le cose (o è quello o semplicemente una mancanza di guida per i giovani).Ma nel tempo, quell'ambiente persistente genera sviluppatori che _solo_ lavorano in quel modo anche nei momenti in cui hanno il lusso di tempo per farlo meglio.Il feedback più comune che devo dare è che sia mgmt che gli sviluppatori sono da incolpare.Mgmt crea un ambiente in cui gli sviluppatori hanno imparato a usare le cattive pratiche per pura praticità.
@EvilSnack Una volta sono entrato a far parte dello sviluppo come appaltatore esterno.Dopo il primo giorno, ho chiesto la scadenza.La risposta è stata: la scorsa settimana.Ci è voluto circa un anno.
NibblyPig
2019-07-05 17:23:04 UTC
view on stackexchange narkive permalink

Se non ti piace quello su cui stai lavorando, parti per un'altra azienda. I programmatori sono molto richiesti.

Assicurati di trovare in anticipo i tipi di lavoro che farai. Non criticherò nessuno per aver lasciato nella tua situazione, sembra orribile. Ma se fossi assunto sapendo che avresti lavorato a questo tipo di progetto, sarebbe di cattivo gusto lamentarsene.

Raramente c'è molto spazio per cambiare il tuo lavoro quotidiano all'interno di un azienda, queste cose tendono ad essere a lungo termine e sono quasi sempre inferiori alla semplice ricerca di un altro lavoro facendo qualcosa che si desidera fare.

Questa è decisamente la risposta giusta.Se vuoi solo fare sviluppo greenfield, la tua migliore scommessa è lavorare per una startup, o lavorare per un'azienda che fa consulenza / lavoro di appalto per piccole imprese in cui passeresti alcuni mesi a creare un sito web / ecc. E poi il contrattofinirebbe e continueresti a fare un altro progetto per un cliente diverso.
Anche altre aziende avranno un codice legacy, quindi cambiare lavoro non è una garanzia per risolvere questo problema.
Come ho detto, però, elabora quello che vuoi e discuti nel colloquio di un nuovo lavoro di cosa ti aspetti che tu faccia.Se sei in prima linea, avrai molte meno probabilità di finire in una situazione che non ti piace.
KC Wong
2019-07-06 17:45:06 UTC
view on stackexchange narkive permalink

Dipende dall'azienda. Nel mio ultimo lavoro, la mia azienda offre soluzioni IT al governo e alle banche. Quindi ogni volta è un nuovo tender e un nuovo progetto. Faccio parte del team di sviluppo, che prende parte alle gare d'appalto, alla progettazione e alla realizzazione dei progetti. Dopo il rilascio in produzione, il team di manutenzione subentrerà e ci contatterà solo per problemi che non possono gestire. Quindi un'azienda di natura diversa potrebbe essere una soluzione.

Ma puoi vedere la tua situazione sotto una luce diversa.

Se il software che stai mantenendo è cattivo, allora aggiustalo . Se va oltre la soluzione, spiega al tuo supervisore perché è così e proponi una soluzione.

Ciò che consideri una brutta situazione, potrebbe invece essere un'opportunità per mostrare al tuo supervisore di cosa sei capace.

Se il tuo supervisore ti vede in una luce positiva, dovresti una possibilità molto migliore di essere assegnato ai progetti che vuoi fare, o convincerlo / lei a riassegnarti.

Nel mio attuale contratto di 2 anni, sto mantenendo un software scadente come te. Il fornitore originale è andato via da tempo e la qualità del codice è scadente. Il mio supervisore è riluttante a grandi cambiamenti poiché la cultura aziendale è molto riservata e odiano correre rischi. Ho presentato i pro e i contro di varie opzioni per aggiustare la parte su cui sto lavorando, mi ci è voluto molto ma alla fine li ho conquistati. Qualche mese dopo, il mio supervisore sta parlando di offrirmi una posizione permanente.

Gli eroi nascono dall'occasione.

Aferrercrafter
2019-07-06 02:45:56 UTC
view on stackexchange narkive permalink

Mettiti negli altri panni Conosci il tuo allenatore, ascolta la sua squadra? È un manager ragionevole? Cerchi di soddisfare le esigenze degli sviluppatori? È comunicativo? Questo è molto importante, il tuo manager ha un ruolo ... porta a termine il lavoro, presenta i risultati. E per questo, qualcuno deve occuparsi del progetto legacy.

  • Ha un altro sostituto?
  • Ha un altro progetto più attraente per le tue preferenze che ti dà motivazione, forse il 50% del tuo tempo ?.
  • Può darti il ​​via libera per ricreare una parte del progetto?

Non lo sai per certo .... quindi, sì, devi parlare con lui. Non in modo impegnativo, no se ti piace il posto di lavoro. Ma devi parlargli del tuo disagio, perché neanche la partenza dei dipendenti è un buon risultato, ... nessuna azienda / manager ottiene benefici per le dimissioni di uno sviluppatore. E non gli chiedi più soldi, o meno ore, o telelavoro, o qualcosa che interferisca con le politiche / risorse dell'azienda. Si tratta di provare a riorganizzare le allocazioni della squadra, è più "fattibile". E non verrai licenziato per avergli fatto sapere di un disagio. Ma l'unico che può aiutarti a risolvere il tuo disagio è lui, se vuoi restare lì ovviamente.

Chiedigli un breve incontro privato .
Rilassati , niente emozioni di rabbia, niente toni esigenti.
Questa è una conversazione con un membro del team che può aiutarti a trovare una soluzione a un disagio.

Anche se non fa nulla per te e non si può fare nulla. Non è nelle tue mani, hai fatto quello che potevi per essere commosso. Perché se non dici niente e trovi un nuovo lavoro, nel momento in cui gli dici, la prima cosa che ti dirà è 'Non sapevo che ora ti sentissi così, potremmo provare a risolverlo' . Quando lasci un'azienda per soldi, chiedi prima un aumento, questo è lo stesso, prima di iniziare a cercare lavoro, lascia loro la possibilità di trovare una soluzione in cui entrambi gli interessi siano soddisfatti . Pensa in modo da ottenere motivazione e allo stesso tempo fornire valore al team / cliente

Joshua
2019-07-08 08:11:57 UTC
view on stackexchange narkive permalink

Ci sono buone probabilità che tu possa trarre vantaggio dall'ascolto della mia storia, quindi eccolo.

Sono stato assunto presso la mia azienda per lavorare a un progetto in particolare (in parte perché ero l'unico ragazzo che hanno intervistato che conosceva tutta l'elettronica, ma alla fine è stato in gran parte irrilevante). Dopo averci lavorato per circa sei mesi, sono giunto alla conclusione che l'architettura fosse una perdita totale nonostante il codice base fosse solo un anno e mezzo vecchio a quel punto. All'epoca pensavo che stavo guardando un codice base di tre anni e l'azienda aveva una storia di cattive pratiche di controllo del codice sorgente. In effetti il ​​loro utilizzo del controllo del codice sorgente era abbastanza ok (è migliorato) e il prodotto è stato realizzato con una produzione big bang.

Ho riferito per analogia che le fondamenta erano incrinate e il terreno era instabile. In effetti era necessaria una riscrittura totale ma in quel momento non poteva essere concessa e lo sapevo. Concordammo per analogia che, se necessario, avrei piantato travi a I attraverso le fondamenta per fungere da piloni. Nel decennio successivo, quando le cose si sono interrotte o sono diventate insostenibili o il profiler ha individuato gli hotspot, ho sostituito quasi tutta l'architettura originale, al punto che ora sono rimaste solo un paio di dozzine di linee. Ma ora le stesse travi a I si sono incrinate e sono state rinforzate e la casa-divenuta-skycraper mostra la sua età e di nuovo diventa difficile da lavorare e temo di insegnare ai nuovi programmatori tutto ciò che è necessario per aggiungere nuove tabelle al database come non va bene gli esempi rimangono. Ogni spiegazione di come funzionano le cose ora è diventata una lezione di storia.

Non lavoro più molto sul prodotto, ma ogni volta che è necessario apportare una modifica che infrange le regole dell'architettura, lo faccio , non perché solo io posso farlo, ma perché conosco essenzialmente tutte le regole nella mia testa e quindi posso scegliere il modo più semplice per mantenerne le conseguenze.

Ma solo ora ho l'esperienza per fare veramente bene e progettare un'architettura che possa essere mantenuta per vent'anni o più. Alcuni dei problemi sono decisioni sbagliate dell'architettura originale in cui ho sostituito l'implementazione con un lavoro quasi simile che conserva molte delle stesse decisioni. Alcuni dei problemi sono le mie decisioni sbagliate. E il settore è cambiato e vogliamo sostituire l'architettura fat-client con un'architettura web. Sai cosa, ora è il momento. Non ho il set completo di competenze per un'architettura web, ma ne ho la maggior parte e so a chi rivolgermi per il resto.

La scelta deve essere tua, ma potresti avere qui il posto per far passare le travi a I attraverso le fondamenta. Se scegli di farlo, imparerai e diventerai forte.

bob
2019-07-08 20:44:35 UTC
view on stackexchange narkive permalink

Assicurati di conoscere te stesso prima di fare qualcosa di drastico

Tre anni sono ancora abbastanza piccoli, quindi non farei niente di drastico come cambiare lavoro o carriera finché non ti sarai assicurato di sapere di cosa si tratta sul mantenimento del codice legacy che non ti piace. Ad esempio, è possibile che tu abbia bisogno di imparare un nuovo strumento o tecnica e che tu possa effettivamente imparare ad apprezzare il mantenimento del codice legacy. Se hai un mentore, sarebbe una buona cosa discuterne con loro. Se non hai un mentore, dovresti provare a trovarne uno.

Insoddisfatto = scarso rendimento = successo in carriera = è ora di cambiare

Una volta che sei sicuro di non essere tu, è il lavoro, quindi renditi conto che farai il tuo lavoro migliore solo se sarai felice, o almeno soddisfatto del tuo lavoro. Se sei attivamente infelice o odi il tuo lavoro, si vedrà nel tuo lavoro. Questo danneggerà la tua carriera a lungo termine. Quindi non ti stai facendo alcun favore rimanendo in una situazione che ti rende attivamente infelice (a volte non abbiamo scelta, ma se lo fai, e la maggior parte delle volte lo facciamo, allora devi fare un cambiamento).

Cosa dovresti fare?

Dì al tuo capo le tue preferenze e se il tuo capo non può o non vuole onorarle in un lasso di tempo ragionevole, trova un lavoro che possa e volere. Nota che quasi nessun lavoro (incluso se sei il capo di te stesso) soddisferà le tue preferenze il 100% delle volte; questa è solo la vita. Ma una buona corrispondenza è quella che è accettabile per te e mescola compiti che ti piacciono con alcuni compiti che puoi almeno tollerare. Ma se ti ritrovi a odiare il tuo lavoro, è tempo di cambiare.

Un'ultima cosa

Se lavori per molte ore o nei fine settimana senza pause adeguate, potresti subire un esaurimento, che può far sembrare insopportabile anche i compiti più piacevoli. Quindi parte del fare il punto della tua situazione include assicurarti che il tuo odio per il tuo lavoro provenga davvero dal lavoro e non dallo stress indotto dal burnout. Se il problema si rivela essere il burnout, deve essere affrontato in modo diverso rispetto a se semplicemente non gli piace il tuo lavoro.

Mattman944
2019-07-06 03:50:29 UTC
view on stackexchange narkive permalink

Ecco una strategia che potresti utilizzare. Ma fai attenzione, questo potrebbe metterti in una posizione sfavorevole con il tuo manager.

Dì loro che alcuni moduli sono schifosi e devono essere riscritti da zero, non puoi aiutarli con il cerotto. Potrebbe trovare qualcun altro o lasciarti riscrivere. Se riesci a riscrivere, è quasi come un nuovo progetto, dovresti esserne felice.

Ho visto entrambi i lati di questo. Ho riscritto codice scadente che mi richiederebbe più tempo per capire e correggere che riscrivere. E ho visto persone riscrivere codice che pensavo fosse OK e gestibile (e rompere il mio budget).

Ci deve essere un equilibrio.Se il progetto viene implementato, i bug devono essere corretti e le preoccupazioni degli utenti devono essere affrontate.Ma devono anche essere compiuti progressi nel miglioramento della qualità e della manutenibilità del codice, altrimenti il codice diventerà impossibile da mantenere.Se non vengono effettuati progressi in avanti (o peggio, il codice acquisisce più "soluzioni rapide" e peggiora), è necessario assegnare più risorse.Con un po 'di fortuna, è possibile negoziare con la direzione un buon equilibrio tra il mantenimento del codice funzionante e il miglioramento del codice.
mario diaz
2019-07-07 00:09:22 UTC
view on stackexchange narkive permalink

L'ho affrontato per molto tempo. È diventato qualcosa di insopportabile.

Sfortunatamente, il lavoro consuma la maggior parte del tempo della giornata ed è molto disgustoso svegliarsi pensando di avere a che fare con un sacco di codice difettoso. È una brutta sensazione.

Amo creare e inventare; ecco perché sono diventato un programmatore molto tempo fa. Nemmeno io sono un genio, brillante ma piuttosto creativo.

Ora che hai esperienza, lascia il tuo lavoro e cercane uno che meriti di più la tua devozione. L'ho fatto 2 mesi fa e ora non riesco a capire perché non l'ho fatto prima.

ivan_pozdeev
2019-07-08 08:35:36 UTC
view on stackexchange narkive permalink

Dopo alcune volte ho scoperto che comincio a "odiare" un codice di base, ho iniziato a cercare il motivo.

E ho scoperto che è perché ha alcuni inconvenienti che mi danno costantemente fastidio e rimangono non risolti. La seccatura sta quindi aumentando e ...

Quindi il modo per eliminare l '"odio" è identificare e correggere le cose che ti preoccupano di quel codice!

Che cos'è cosa più importante, le conosci già (dato che ti danno fastidio) ma non ti importava di dare la priorità.

Ne hai già nominate alcune: "non è facile capire il codice, soprattutto se non c'è documentazione". Durante l'esame del codice, è necessario aver identificato che queste e queste parti sono sciatte e soggette a errori; qui e qui, non ci sono test quindi non c'è modo di sapere se il codice è (ancora) corretto in tutti i casi, ecc.

Questo è un buon consiglio, anche se a volte ciò che "odi" è un debito tecnico di anni persona che una persona non può risolvere in modo fattibile, purtroppo.Probabilmente penso per molti grandi codebase legacy.Quindi potrebbe non essere evitabile in molte situazioni.
@bob ancora, è meglio dal punto di vista psicologico aggiustare una cosa alla volta e sentirsi meglio che sprecare le cellule nervose senza fare nulla.Quindi, il debito tecnico sta tassando la manutenzione in corso e quindi non vale la pena ripagarlo solo se il prodotto è vicino al suo EOL.Per il caso di OP, questo non sembra essere il caso (dal momento che dicono di mantenerlo su base continuativa senza una data di fine in vista).
Vero.Se sei bloccato nella situazione o mentre aspetti di uscirne, allora è una buona strategia (di nuovo se puoi; a volte ti viene detto di non toccare un particolare pezzo di codice).Ma alla fine della giornata è meglio fare un lavoro che trovi soddisfacente.Farai il lavoro migliore e si vedrà nella tua carriera.


Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 4.0 con cui è distribuito.
Loading...