Comincio con la documentazione di progettazione. In particolare, la specifica - che indica l'intento della cosa che viene guardata.
Se possibile, guardo quindi alle note di progettazione e alla documentazione per avere un sapore generale di come è stato fatto, del processo di pensiero, dello stile e della natura delle persone interessate.
Se possibile, allora parlo con le persone che ci hanno lavorato - che cosa fa? Come? Perché? Dove sono sepolti i corpi?
C'è una tendenza tra gli sviluppatori a saltare nel codice: "Lascia che ti mostri questo codice". Questo va bene per loro, ma tende a dirottare le mie esigenze - il che è capire l'alto livello che dà un contesto alle cose di basso livello.
Usa una grande quantità di energia cerebrale per guardare piccoli pezzi di codice, fuori dal contesto completo e capire qualsiasi cosa significhi. Quindi, se possibile, convincere gli sviluppatori a parlare del PRINCIPIO, della struttura, delle unità, dei moduli, qualunque cosa porti a un apprezzamento del compito.
Solo allora vale la pena provare ad entrare nel codice.
Nel grande schema di cose, osservare il codice è come guardare una pagina piena di 0 e di 1. C'è un significato ma ci vuole molto tempo per capirlo. Ottenere un assaggio di dove guardare e quali parti sono significative aiuta a restringere lo spazio di ricerca.
Tutto ciò che ho detto - quando non ci sono documenti, persone e solo codice - allora non c'è niente da fare se non quello di guardare il codice.
In questo caso, di solito non cerco di capirlo da una lenta lettura profonda, faccio un passaggio veloce, sfoglio leggendo su tutto. A volte si tratta solo di file aperti e si siedono premendo il tasto pagina-giù. È possibile ottenere un incredibile apprezzamento di una grande immagine solo facendo questo. (E in alcuni casi eseguo anche il dump di file eseguibili e li scaricano, cercando firme e pattern. Questo è stato incredibilmente fruttuoso negli ultimi 20 anni dispari.)