Zaczynam od dokumentacji projektowej. W szczególności specyfikacja - która określa cel rzeczy, na którą patrzymy.
Jeśli to możliwe, przeglądam notatki projektowe i dokumentację, aby uzyskać ogólny obraz tego, jak zostało to zrobione, procesu myślowego, stylu i charakteru zainteresowanych osób.
Jeśli to możliwe, rozmawiam z ludźmi, którzy nad tym pracowali - co robi? W jaki sposób? Dlaczego? Gdzie są pochowane ciała?
Deweloperzy mają tendencję do przeskakiwania do kodu: „Pozwól, że pokażę ci ten kod”. Jest to dla nich w porządku, ale ma tendencję do przejmowania moich potrzeb - czyli rozumienia wysokiego poziomu, który nadaje kontekst elementom niskiego poziomu.
Wykorzystuje ogromną ilość mocy mózgu, aby spojrzeć na małe fragmenty kodu, poza pełnym kontekstem i zrozumieć wszystko, co ma znaczenie. Jeśli to możliwe, zachęcanie programistów do mówienia o ZASADIE, strukturze, jednostkach, modułach i wszystkim innym, co prowadzi do uznania tego zadania.
Tylko wtedy warto spróbować dostać się do kodu.
W dużym schemacie rzeczy patrzenie na kod przypomina patrzenie na stronę pełną zer i jedynek. Ma znaczenie, ale jego zrozumienie zajmuje dużo czasu. Uzyskanie smaku tego, gdzie szukać i które części są znaczące, pomaga zawęzić przestrzeń wyszukiwania.
Wszystko to powiedziawszy - kiedy nie ma doco, nie ma ludzi, a jedynie kod - nie ma nic innego, jak tylko spojrzeć na kod.
W takim przypadku zwykle nie próbuję zrozumieć tego przez powolne, głębokie czytanie, robię szybkie podanie, przeglądam wszystko. Czasami są to tylko otwarte pliki i siedzą po naciśnięciu klawisza przewijania w dół. Dzięki temu możesz uzyskać niesamowite uznanie dla dużego obrazu. (W niektórych przypadkach nawet zrzucam pliki wykonywalne i przeszukuję je, szukając podpisów i wzorów. To było niesamowicie owocne w ciągu ostatnich 20 lat.)