Programmi mõistmine on programmeerija võime mõista, mida arvutiprogrammi lähtekood teeb. Arvutiõpetuses jäetakse sageli tähelepanuta programmi mõistmine, eelistades õpetatava arvutikeele mehaanika ja süntaksi õppimist. Arusaadava koodi kirjutamine on aga universaalne vajadus, sõltumata sellest, millises arvutikeeles see on kirjutatud. Kui programmeerija kirjutab raamatukogu või kooditüki, kuid keegi ei saa hiljem kindlaks teha, mida ta teeb, võib selle koodi taga olev algoritm ja loogika kergesti kaduda. On üha tavalisem, et programmeerijad ei suuda oma koodi dešifreerida, kuna see pole sageli selgelt ja intuitiivselt kirjutatud.
Programmeerijad saavad programmide mõistmise parandamiseks kasutada kahte peamist strateegiat, millest igaühel on oma eelised ja puudused. Esimene meetod on lisada koodile dokumentatsiooni koodi loomise ajal või pärast seda ja teine on kirjutada kood rõhuasetusega selle struktuurile. Mõlema lähenemisviisi kombinatsioon on abiks enamikule programmeerijatele, kuigi mõned koodiehitajad eelistavad ühte strateegiat teisele. Millist meetodit kasutada, on programmeerija isiklik eelistus ja iga katse koodi selgitada on palju parem kui mitte midagi.
Dokumentatsiooni lisamine koodile on kahest meetodist lihtsam ja kui see on hästi tehtud, võib see olla väga kasulik abimees programmeerijale, kes ei tunne koodi kirjutamise keelt. Enamikul arvutikeeltel on konkreetne dokumentatsioonistiil, mis aitab programmist aru saada. Kui koodi dokumentatsioon on põhjalikult kirjutatud, võib uue programmeerija esimeseks sammuks lugeda kogu dokumentatsioon ja kommentaarid, et saada aru, kuidas programm töötab, ilma koodi üldse lugemata. Selle asemel, et sõltuda koodi süntaksist ja mehaanikast, saab programmeerija näha toimuvat lihttekstina, seejärel seostada teksti täpselt mis tahes kohas toimuvaga. Programmeerijad peavad aga koodile dokumentatsiooni lisades olema ettevaatlikud, sest liiga palju dokumentatsiooni võib pigem segadust tekitada ja pealetükkiv olla, mitte abiks olla.
Struktuurile rõhuasetusega koodi kirjutamisel eeldab programmeerija, et kõik teised tema koodi vaatavad hooldajad omavad samaväärseid teadmisi keele süntaksi ja mehaanika kohta. Mõnikord on see õige oletus, kuid sellele ei saa alati tugineda. Suures osas struktuuril põhinev programmi mõistmine on võimalik, kuid selle hõlbustamiseks kulub algse programmeerija poolt oluliselt rohkem tööd. Täpselt tuleb järgida nii keele mehaanikat ja süntaksit kui ka kõiki stiilikokkuleppeid ning kõik peab olema ühtlane. Sel viisil koodi kirjutades peab programmeerija alati olema teadlik, et see, mis on talle selge, ei pruugi teisele inimesele selge olla.
Isegi kui kirjutate koodi silmaga, et programmi hiljem mõista, võib hiljem vaja minna täiendavat dokumentatsiooni või struktuurimuudatusi. See on koodi hoolduse loomulik osa, mitte programmeerija tõrge. Programmeerija ülesanne on ette näha võimalikult palju mõistmisprobleeme, kuid neid kõiki ei tabata alati.