Preden se je uspešnega programiranja sploh mogoče lotiti, je treba razumeti problem, ki ga želimo rešiti. Programer tega ne more narediti uspešno brez izdatne pomoči strokovnjaka za tisto področje, ta pa mora prav tako vsaj približno razumeti metode programiranja, da je lahko pri opisu problema koristen. Velikokrat se prav pri opisu problema izkaže, kako težko ga bo rešiti s programsko kodo, saj je človeški pristop k reševanju pogosto intuitiven in težko prevedljiv v hladno računalniško logiko.