Razumevanje programa je sposobnost programerja, da razume, kaj počne izvorna koda računalniškega programa. Pri pouku računalništva je razumevanje programa pogosto spregledano v korist učenja mehanike in sintakse računalniškega jezika, ki se poučuje. Pisanje razumljive kode pa je univerzalna potreba, ne glede na računalniški jezik, v katerem je napisana. Če programer napiše knjižnico ali kos kode, vendar nihče ne more določiti, kaj naredi pozneje, se lahko algoritem in logika za to kodo zlahka izgubita. Vse pogosteje je, da programerji ne morejo dešifrirati lastne kode, saj pogosto ni napisana jasno in intuitivno.
Obstajata dve glavni strategiji, ki jih lahko programerji uporabijo za izboljšanje razumevanja programa, in vsaka ima svoje prednosti in slabosti. Prva metoda je dodajanje dokumentacije v kodo med ali po izdelavi kode, druga pa pisanje kode s poudarkom na njeni strukturi. Kombinacija obeh pristopov je koristna za večino programerjev, čeprav obstajajo nekateri ustvarjalci kode, ki imajo raje eno strategijo pred drugo. Katero metodo uporabiti, je stvar osebnih želja programerja in vsak poskus razjasnitve kode je veliko boljši kot noben.
Dodajanje dokumentacije kodi je enostavnejša od obeh metod in če je dobro opravljena, je lahko zelo uporabna za programerja, ki ne pozna jezika, v katerem je koda napisana. Večina računalniških jezikov ima poseben slog dokumentacije, ki pomaga pri razumevanju programa. Če je dokumentacija kode napisana temeljito, je lahko prvi korak novega programerja, da prebere vso dokumentacijo in komentarje, da bi razumel, kako program deluje, ne da bi sploh prebral kodo. Namesto da bi bil odvisen od sintakse in mehanike kode, lahko programer vidi, kaj se dogaja v golem besedilu, nato pa besedilo poveže s tem, kar se dogaja na katerem koli mestu. Pri dodajanju dokumentacije v kodo pa morajo biti programerji previdni, saj je preveč dokumentacije lahko bolj zmedeno in vsiljivo, kot pa koristno.
Pri pisanju kode s poudarkom na strukturi programer domneva, da bodo vsi drugi vzdrževalci, ki si ogledajo njegovo kodo, enakovredno poznali sintakso in mehaniko jezika. Včasih je to veljavna predpostavka, vendar se nanjo ni vedno mogoče zanesti. Razumevanje programa, ki v veliki meri temelji na strukturi, je možno, vendar je potrebno bistveno več dela s strani prvotnega programerja, da ga olajša. Natančno je treba upoštevati mehaniko in sintakso jezika ter vse slogovne konvencije in vse mora biti dosledno. Ko piše kodo na ta način, se mora programer vedno zavedati, da to, kar je njemu jasno, morda ni jasno drugi osebi.
Tudi pri pisanju kode z namenom kasnejšega razumevanja programa bodo morda pozneje potrebna dodatna dokumentacija ali strukturne spremembe. To je naravni del vzdrževanja kode in ne napaka v rokah programerja. Naloga programerja je predvideti čim več težav z razumevanjem, vendar vse niso vedno ujete.