Pa privzemimo, da je bilo problem mogoče natančno opisati in je izvedljiv v programski kodi. Za uspešen program bo treba opis problema prevesti v ustrezen programski načrt - algoritme, podatkovne strukture, predmete, vmesnike. Le s pravilno izdelanim načrtom bo problem lahko uspešno rešen, rešitev pa bo prilagodljiva.