In prav ti deli so za uspeh projekta najpomembnejši. 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.