Comienzo con la documentación de diseño. En particular, la especificación, que indica la intención de lo que se está mirando.
Si es posible, luego miro las notas de diseño y la documentación para obtener una idea general de cómo se ha hecho, el proceso de pensamiento, el estilo y la naturaleza de las personas involucradas.
Si es posible, entonces hablo con las personas que trabajaron en él, ¿qué hace? ¿Cómo? ¿Por qué? ¿Dónde están enterrados los cuerpos?
Hay una tendencia entre los desarrolladores a saltar al código: "Déjame mostrarte este código". Esto está bien para ellos, pero tiende a secuestrar mis necesidades, que es entender el alto nivel que da contexto a las cosas de bajo nivel.
Utiliza grandes cantidades de poder cerebral para mirar pequeños fragmentos de código, fuera de contexto completo y comprender cualquier cosa significativa. Entonces, si es posible, hacer que los desarrolladores hablen sobre el PRINCIPIO, la estructura, las unidades, los módulos, lo que sea que conduzca a una apreciación de la tarea.
Solo entonces vale la pena intentar ingresar al código.
En el gran esquema de cosas, mirar el código es como mirar una página llena de 0 y 1. Hay significado, pero lleva mucho tiempo resolverlo. Obtener una idea de dónde mirar y qué partes son significativas ayuda a reducir el espacio de búsqueda.
Todo lo dicho: cuando no hay doco, no hay personas y solo el código, entonces no hay nada más que mirar el código.
En ese caso, normalmente no trato de entenderlo con una lectura lenta y profunda, hago un pase rápido, leyendo rápidamente todo. A veces esto es solo abrir archivos y sentarse presionando la tecla de página hacia abajo. Puede obtener una apreciación increíble de una imagen general con solo hacer esto. (Y en algunos casos, incluso volcado en cadena los archivos ejecutables y los rastreo, buscando firmas y patrones. Esto ha sido increíblemente fructífero en los últimos 20 años).