Incolpare i mali di oggi sul debito tecnico di ieri


38

Un numero sorprendente di problemi di qualità, scalabilità e carico si sono verificati su un'applicazione che attualmente supporto e che inizialmente non avevo scritto. Per fortuna ho nuovi progetti che ho fatto da zero per mantenere una parvenza della mia sanità mentale.

Il team originale era composto da 20 sviluppatori (la maggior parte con insiemi di competenze obsoleti), senza documenti relativi ai requisiti aziendali o ai tester di controllo della qualità, e gestiti male fin dall'inizio in maniera a cascata. I primi giorni della produzione furono un incubo imbarazzante che prevedeva la correzione di un fragile codice procedurale con correzioni ancora più fragili. Successivamente sono state aggiunte funzionalità che sono state integrate in un modello di dati che non è mai stato pensato per supportarle e non è raro vedere lo stesso codice duplicato 10 volte e vedere risorse non essere chiuse in modo sicuro e query ORM che raccolgono decine di migliaia di entità solo buttare via tutto tranne una manciata.

Sono solo io ora e ogni volta che si presenta un nuovo problema, riscrivo un modulo secondo standard migliori e lo rendo MOLTO più stabile, ma la direzione ha bisogno di una spiegazione adeguata sul perché tutto ciò si sta verificando.

Sembrano scioccati e perplessi all'idea che questa applicazione sia di scarsa qualità e che affoghi nel debito tecnico. Fortunatamente comprendono il concetto di debito tecnico e mi supportano nella mia ricerca per sradicarlo e mi supportano e mi apprezzano molto, ma mi sento come se continuassi a incolpare il team originale (che è partito per rovinare un altro progetto in un altro divisione).

La linea di fondo è che non voglio essere "Quel ragazzo" che si lamenta sempre degli sviluppatori del progetto prima di lui. In precedenza ho visto questo atteggiamento da parte di persone della mia carriera che personalmente sentivo ignoranti e non consideravano le circostanze e le influenze progettuali che incoraggiavano le cose a essere come erano.

Di solito vedo questo atteggiamento di incolpare il team precedente per la cattiva progettazione e implementazione da parte di sviluppatori junior idealisti che non hanno avuto le esperienze di vita che più membri senior hanno avuto e di cui hanno beneficiato.

Ritieni che esista un modo migliore, forse più semplice, di segnalare questo tipo di problemi alla direzione senza fare un passo sulla reputazione della persona / squadra davanti a te?


17
È ironico che in una domanda sul fatto di non giocare al gioco della colpa, passi 3 paragrafi completi che comprendono circa il 50% della tua domanda che si lamenta della squadra precedente. E ha taggato la domanda [bad-code] e [bad-programmatore].
Aaronaught,

8
@Aaronaught, Va bene, mordo, l'ho etichettato bad-codeperché il codice sta effettivamente causando bug e problemi. L'ho etichettato bad-programmerperché temo di diventare uno accusando la squadra precedente, una scusa stanca e cliché che tutti abbiamo sentito prima. Per quanto riguarda i primi tre paragrafi, forse non avevo bisogno di essere così descrittivo, ma volevo dipingere un quadro accurato della mia situazione immediata e dare la storia di ciò che ho raccolto finora.
maple_shaft

2
... Quindi c'è un elemento di rabbia lì dentro? Sì, immagino di sì, ma sono stanco di essere la tata di un'applicazione che si comporta come un bambino ADHD con un desiderio di morte.
maple_shaft

2
Ti capisco. Lo voglio. Ma abbiamo un sistema di chat se si desidera eseguire il rant o sfogarsi. Le domande costruttive dovrebbero avere un tono neutro e omettere tali dettagli non necessari.
Aaronaught,

Storia della mia vita
Iulian Onofrei il

Risposte:


46

Il debito tecnico è come il debito finanziario. Lo affronti (si spera) strategicamente nello sviluppo di un programma con l'intenzione che sarà ripagato in futuro. A volte le persone prendono scarse decisioni di debito tecnico (come ad esempio una carta di credito), ma a volte una certa quantità di debito tecnico è semplicemente normale. Decidere di non dedicare il tempo a fare qualcosa nel modo "giusto" oggi supponendo che dovrà essere cambiato in futuro è del tutto normale e dovrebbe essere anticipato. Naturalmente c'è una linea sottile, ma pensare che la prima volta riuscirai a farlo nel modo giusto può causare il suo insieme di problemi (analisi paralisi).

In conclusione, qualsiasi progetto non banale che dura da più di un paio d'anni dovrà dedicare un po 'di tempo di sviluppo a ripagare il debito tecnico. Il fatto è che questo è vero anche se scrivi l'applicazione nel modo giusto . Se non lo fai, stai accumulando debito su debito, e la direzione può certamente capirlo se lo presenti in quel modo.

Spiega questo alla direzione e invece di "incolpare" il team precedente per tutto il tempo, puoi presentarlo come "affari come al solito".


4
+1 per una spiegazione davvero incolpevole di come un progetto potrebbe scegliere (correttamente!) Di indebitarsi in modo tecnico.
Joris Timmermans,

1
@Nemi: un'importante differenza tra debito tecnico e debito finanziario è che è molto più facile quantificare quest'ultimo. È molto più facile sapere quanto debito finanziario ti è rimasto da ripagare (anche prendendo in considerazione l'accumulo di interessi e gli obblighi finanziari ricorrenti), quindi farlo con il debito tecnico. Lo sottolineo solo perché questa è una cosa che aggrava il problema di maple_shaft.
Ben Hocking,

2
@Ben - hai assolutamente ragione. Come per tutte le analogie, questa si rompe al microscopio. Tuttavia, il confronto è ancora solido a un livello elevato. In sostanza, rinuncia ai dettagli e parla al management al loro livello - come un problema aziendale, non un problema tecnico. In sostanza, qualsiasi progetto di lunga durata accumula un certo debito tecnico e come tale comporta una spesa aggiuntiva per lo sviluppo col passare del tempo. Dal momento che questo è nascosto (e nemmeno ben compreso), è nel miglior interesse di tutti assicurarsi che ne sia parlato.
Nemi,

2
+1 su "questo è vero anche se scrivi l'applicazione nel modo giusto."
Mauricio Scheffer,

1
@radarbob Non sono d'accordo - proprio come il debito finanziario, non importa se l'accumulo è stato fatto intenzionalmente, a causa di sfortuna o stupidità - qualcuno deve pagarlo in futuro. Il termine è intrinsecamente neutro per quanto riguarda la causa.
Hulk,

23

IMO, lo stai già affrontando per lo più nel modo giusto: non stai suggerendo una riscrittura da zero perché "il vecchio codice fa schifo", ma aggiusta una cosa alla volta.

Per evitare di sentirti come se stessi incolpando la vecchia squadra, immagina che probabilmente hanno dovuto produrre questo codice sotto grande pressione del tempo. Il management in quel momento probabilmente non lo capì proprio perché il codice "più o meno funziona" non significa che qualsiasi manutenzione sia possibile senza molto dolore e rilavorazioni.

Apprezzo il vecchio team per essere riuscito a realizzare un prodotto che offra effettivamente un valore aziendale - non sarebbe più in uso se non lo facesse. Potresti essere sorpreso dalla frequenza con cui un progetto non riesce a fornire valore aziendale, anche se è scritto magnificamente.


3
+1: incolpare il vecchio management che non è riuscito a fornire un prodotto di qualità, quindi (si spera) il nuovo management riceverà il messaggio (o si sbarazzerà di te, entrambi i casi sono una vittoria per quanto ti riguarda)
gbjbaanb

15
@gbjbaanb - non dare la colpa a nessuno! Fai di tutto per NON dare la colpa a nessuno. Basta stabilire la situazione attuale e la situazione desiderata e formulare un argomento logico su come e perché è necessario arrivarci.
Joris Timmermans,

Eh, assicurati che ci sia una nuova gestione. Lo stesso capo potrebbe essere ancora lì. E anche se è andato avanti, è da qualche parte là fuori. Assicurati di scoprirlo prima di andare in giro gettando persone sotto l'autobus.
Filippo

Vorrei che fosse semplice come non incolpare nessuno. La direzione insiste su qualcuno / qualcosa a cui puntare il dito. Se non indico una persona o un gruppo di persone a cui indico?
maple_shaft

4
@maple_shaft - quindi esponi l'argomento che ho esposto nella mia risposta alla direzione, e se insistono ancora sulla "colpa", pubblica il tuo curriculum su tutti i siti che puoi trovare, perché le cose andranno molto male per te quando decidere di iniziare incolpare voi per mancanza di chiunque altro a puntare il dito contro.
Joris Timmermans,

7

Quando mi viene chiesto di commentare lo stato attuale di un prodotto problematico, torno sempre indietro, "è quello che è" e quindi inizio a parlare di piani per migliorarlo.

Non conosci tutti i fattori che sono stati presi nella decisione che ha creato questo problema - forse erano persino ragionevoli al momento. Tutto quello che puoi fare è andare avanti e migliorare le cose domani. E sembra che tu stia facendo un buon lavoro: hai l'atteggiamento giusto per questa situazione.

Concentrati solo sulla segnalazione dei fatti quando ti viene chiesto. Non è necessario aggiungere narrativa o commento; dì semplicemente "il sistema non funziona nel caso X" o "i rapporti non sono corretti per il caso Y." Quindi aggiungi rapidamente come intendi migliorare la situazione attuale.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.