Programförståelse är förmågan hos en programmerare att förstå vad ett datorprograms källkod gör. I datavetenskapsundervisningen förbises ofta förståelsen av ett program till förmån för att lära sig mekaniken och syntaxen för det datorspråk som lärs ut. Att skriva begriplig kod är dock ett universellt behov, oavsett vilket datorspråk den är skriven på. Om en programmerare skriver ett bibliotek eller en bit kod, men ingen kan avgöra vad den gör efteråt, kan algoritmen och logiken bakom den koden lätt gå förlorad. Det är allt vanligare att programmerare inte kan dechiffrera sin egen kod, eftersom den ofta inte är skriven tydligt och intuitivt.
Det finns två huvudstrategier som programmerare kan använda för att förbättra programförståelsen, och var och en har sina egna fördelar och nackdelar. Den första metoden är att lägga till dokumentation till koden under eller efter kodskapandet, och den andra är att skriva kod med betoning på dess struktur. En kombination av båda metoderna är till hjälp för de flesta programmerare, även om det finns några kodbyggare som föredrar en strategi framför en annan. Vilken metod som ska användas är en fråga om personlig preferens av programmeraren, och varje försök att förtydliga kod är mycket bättre än ingen alls.
Att lägga till dokumentation till koden är den enklaste av de två metoderna, och när det görs väl kan det vara en mycket användbar krycka för en programmerare som inte är bekant med språket som koden är skriven på. De flesta datorspråk har en specifik dokumentationsstil för att underlätta programförståelsen. Om koddokumentationen är noggrant skriven kan en ny programmerares första steg vara att läsa all dokumentation och kommentarer för att få en förståelse för hur programmet fungerar, utan att ha läst koden alls. Istället för att vara beroende av kodsyntaxen och mekaniken kan programmeraren se vad som händer i vanlig text och sedan relatera texten till exakt vad som händer på en given plats. När man lägger till dokumentation till kod måste programmerare dock vara försiktiga, eftersom för mycket dokumentation kan vara förvirrande och påträngande, snarare än till hjälp.
När du skriver kod med betoning på struktur, antar en programmerare att alla andra underhållare som tittar på hans eller hennes kod kommer att ha motsvarande kunskaper om språkets syntax och mekanik. Ibland är detta ett giltigt antagande, men det går inte alltid att lita på det. Programförståelse baserad till stor del på struktur är möjlig, men det krävs betydligt mer arbete från den ursprungliga programmeraren för att underlätta det. Språkets mekanik och syntax måste följas exakt, liksom alla stilistiska konventioner, och allt måste vara konsekvent. När man skriver kod på detta sätt måste en programmerare alltid vara medveten om att det som är klart för honom kanske inte är klart för en annan person.
Även när du skriver kod med ett öga för senare programförståelse kan ytterligare dokumentation eller strukturella ändringar behövas senare. Detta är en naturlig del av kodunderhållet, och inte ett fel hos programmeraren. En programmerares jobb är att förutse så många förståelseproblem som möjligt, men alla fångas inte alltid upp.