Lavoro per un'azienda di prodotti software. Abbiamo grandi clienti aziendali che implementano il nostro prodotto e forniamo supporto a loro. Ad esempio, se c'è un difetto, forniamo le patch, ecc. In altre parole, è una configurazione abbastanza tipica.
Recentemente, è stato emesso un ticket che mi è stato assegnato in merito a un'eccezione rilevata da un cliente in un file di registro che ha a che fare con l'accesso simultaneo al database in un'implementazione cluster del nostro prodotto. Pertanto, la configurazione specifica di questo cliente potrebbe essere fondamentale nel verificarsi di questo errore. Tutto quello che abbiamo ricevuto dal cliente era il loro file di registro.
L'approccio che ho proposto al mio team era di tentare di riprodurre il bug in una configurazione di configurazione simile a quella del cliente e ottenere un registro comparabile. Tuttavia, non sono d'accordo con il mio approccio dicendo che non ho bisogno di riprodurre il bug in quanto è troppo dispendioso in termini di tempo e richiederà la simulazione di un cluster di server su VM. Il mio team mi suggerisce semplicemente di "seguire il codice" per vedere dove il codice thread-e / o transazione non è sicuro e inserire la modifica lavorando su un semplice sviluppo locale, che non è un'implementazione di cluster come l'ambiente da cui si verifica l'occorrenza del bug ha origine.
Per me, elaborare un progetto astratto (codice del programma) piuttosto che una manifestazione tangibile e visibile (riproduzione runtime) sembra difficile, quindi volevo porre una domanda generale:
È ragionevole insistere nel riprodurre ogni difetto e debuggarlo prima di diagnosticare e ripararlo?
o
Se sono uno sviluppatore senior, dovrei essere in grado di leggere il codice multithread e creare un'immagine mentale di ciò che fa in tutti gli scenari di casi d'uso piuttosto che richiedere l'esecuzione dell'applicazione, testare diversi scenari di casi d'uso hands-on e passo attraverso il codice riga per riga? O sono un povero sviluppatore per aver richiesto quel tipo di ambiente di lavoro?
Il debug di Sissies?
A mio parere, qualsiasi correzione inviata in risposta a un ticket di incidente dovrebbe essere testata in un ambiente simulato per essere il più vicino possibile all'ambiente originale. In quale altro modo puoi sapere che risolverà davvero il problema? È come liberare un nuovo modello di un veicolo senza crash testandolo con un manichino per dimostrare che gli airbag funzionano davvero.
Ultimo ma non meno importante, se sei d'accordo con me:
Come dovrei parlare con il mio team per convincerli che il mio approccio è ragionevole, prudente e più a prova di proiettile?