Razumijevanje programa je sposobnost programera da razumije što radi izvorni kod računalnog programa. U nastavi informatike, razumijevanje programa se često zanemaruje u korist učenja mehanike i sintakse računalnog jezika koji se poučava. Pisanje razumljivog koda, međutim, univerzalna je potreba, bez obzira na računalni jezik na kojem je napisan. Ako programer napiše biblioteku ili dio koda, ali nitko ne može odrediti što će učiniti nakon toga, algoritam i logika iza tog koda mogu se lako izgubiti. Sve je češće da programeri ne mogu dešifrirati vlastiti kod, jer često nije napisan jasno i intuitivno.
Postoje dvije glavne strategije koje programeri mogu koristiti za poboljšanje razumijevanja programa, a svaka ima svoje prednosti i nedostatke. Prva metoda je dodavanje dokumentacije kodu tijekom ili nakon kreiranja koda, a druga je pisanje koda s naglaskom na njegovu strukturu. Kombinacija oba pristupa korisna je većini programera, iako postoje neki graditelji koda koji preferiraju jednu strategiju nad drugom. Koju će metodu koristiti, stvar je osobnih preferencija programera, a svaki pokušaj pojašnjenja koda daleko je bolji od nikakvog.
Dodavanje dokumentacije kodu jednostavnija je od dvije metode, a kada se dobro izvede, može biti vrlo korisna štaka programeru koji nije upoznat s jezikom na kojem je kod napisan. Većina računalnih jezika ima specifičan stil dokumentacije koji pomaže u razumijevanju programa. Ako je dokumentacija koda napisana temeljito, prvi korak novog programera može biti da pročita svu dokumentaciju i komentare kako bi stekao razumijevanje o tome kako program radi, a da nije uopće pročitao kod. Umjesto da ovisi o sintaksi koda i mehanici, programer može vidjeti što se događa u običnom tekstu, a zatim povezati tekst s točno onim što se događa na bilo kojem mjestu. Međutim, kada dodaju dokumentaciju kodu, programeri moraju biti oprezni, jer previše dokumentacije može biti zbunjujuće i nametljivo, a ne od pomoći.
Prilikom pisanja koda s naglaskom na strukturi, programer pretpostavlja da će svi drugi održavatelji koji gledaju njegov ili njezin kod imati ekvivalentno znanje o sintaksi i mehanici jezika. Ponekad je to valjana pretpostavka, ali se na nju ne može uvijek pouzdati. Razumijevanje programa temeljeno uglavnom na strukturi je moguće, ali potrebno je znatno više rada od strane izvornog programera da bi to olakšao. Mora se točno slijediti mehanika i sintaksa jezika, kao i sve stilske konvencije i sve mora biti dosljedno. Kada piše kod na ovaj način, programer uvijek mora biti svjestan da ono što je njemu jasno možda neće biti jasno drugoj osobi.
Čak i kod pisanja koda s ciljem kasnijeg razumijevanja programa, naknadno će možda biti potrebna dodatna dokumentacija ili strukturne izmjene. Ovo je prirodni dio održavanja koda, a ne kvar od strane programera. Posao programera je predvidjeti što je moguće više problema s razumijevanjem, ali svi oni nisu uvijek uhvaćeni.