2018-04-26 08:23:44 +0000 2018-04-26 08:23:44 +0000
185
185

Come parlare al management del codice "geniale"?

EDIT:

Grazie a tutti per gli ottimi consigli, commenti e feedback.

A quanto pare, nessuno è stato il “cattivo” in questa situazione. I consigli che ho ricevuto qui mi hanno aiutato a tornare in contatto con il precedente responsabile del progetto. A quanto pare, la mia azienda, senza alcun motivo apparente, aveva ricevuto una versione del codice in fase di sviluppo. La vecchia società ci ha inviato una versione pronta per la produzione e, come ciliegina sulla torta, mi ha pubblicamente elogiato per l'efficace reverse engineering di un prodotto incompleto alla profondità che avevo.

TL;DR

ho ereditato un progetto. Per farla breve, il codice che mi è stato affidato il compito di mantenere è pessimo. Tanto male, infatti, che il prodotto non solo è incompleto ma non funziona e lo è stato per anni.

_Come comunico al management, in modo che non sia imbarazzante per loro, in un modo che non mi faccia sembrare pigro o stupido, che un prodotto di valore è in uno stato disastroso? _


Chiarimento: questa domanda contro il debito tecnico

_Questa domanda ha a che fare con me che metto in discussione le mie convinzioni di lunga data su un prodotto senza commettere un suicidio in carriera. _ Piuttosto che occuparsi strettamente del debito tecnico, c'è questo: la direzione suggerisce che forse il codice è così complesso che non riesco a capirlo, e posizionato gli errori sono per progettazione; _che lo sviluppatore originale è così meta, che quelli che sembrano errori sono in realtà colpi di genio. _

Forse un'altra ragione per cui non si tratta proprio di debito tecnico è che la differenza tra il codice “geniale” e il debito tecnico è che il management comunica che io non dovrei alterare il codice “geniale”, e che il codice “geniale” non è il debito tecnico: è la magia nera segreta. Vorrei che il management lo considerasse come debito tecnico. Invece non lo fanno.** La direzione non si preoccupa del tempo, del costo, o del denaro direttamente – anche se questa è una certa preoccupazione.


Dettagli

La maggior parte delle volte, non sarei nervoso a comunicare questo alla direzione. Purtroppo una lunga fila di persone, alcune delle quali avevano poca esperienza di sviluppo, che hanno solo “toccato” il codice abbastanza a lungo da aggiungere una patch qua e là, per poi andare avanti, ha dipinto un quadro al management nel corso degli anni che il progetto è solo ad un passo dalla produzione pronta.

Questo purtroppo non è il caso. Una breve lista di problemi nel genius code che ho incontrato nella ~1.5Gb code base sono…

  • Ci sono la stessa funzione, gli stessi nomi di variabili dello stesso scopo in tutto il codice base (in un linguaggio che non lo supporta).
  • Le funzioni sono definite ma mai chiamate.
  • Uso e inizializzazione di variabili fuori uso.
  • Versioni incompatibili delle librerie usate.
  • URI e indirizzi IP hardcoded senza alcuna documentazione su ciò che fanno.
  • Percorsi API richiesti a caso che non restituiscono nulla o che fanno confusione; ** che poi non vengono utilizzati.**
  • Password non cifrate e non codificate e chiavi ssh private.**

Dovrei aggiungere che quando ho iniziato a lavorarci, _non ha nemmeno compilato. _ E quando l'ho fatto compilare, è fallito durante il runtime.

È un incubo.

Il problema è che il management ha ricevuto la garanzia da chi l'ha ereditata, e da precedenti sviluppatori “gung-ho”, che “funziona”, quindi ci hanno investito molto… E ora la responsabilità è passata a me. E lo vogliono in produzione tra circa 2 mesi.

Quando suggerisco che gli sviluppatori precedenti potrebbero non essere stati del tutto onesti o non aver capito del tutto il prodotto, il management manda segnali contrastanti sul “basta farlo fare”, e “perché non è ancora fatto”… e “non siamo veramente sicuri che abbia mai funzionato” a “funzionava quando l'avete ricevuto”, e “non l'abbiamo mai visto funzionare” a “è già in produzione”.

[EDIT: incollato la maggior parte del paragrafo successivo nella sezione TL;DR. ]

Il management ha anche suggerito che forse è talmente complesso che non riesco a capirlo, e posizionato gli errori sono per progetto; ** che lo sviluppatore originale è così meta, che quelli che sembrano errori sono in realtà colpi di genio.** Concesso, non sono un genio, e forse è così: al quale offro le mie precedenti osservazioni sulle questioni fondamentali che ho trovato.

Forse c'è una politica in gioco al di sopra del mio livello.

Risposte (0)