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. Programer večkrat lovi ravnotežje in je prisiljen sklepati kompromise.