I am working with a student on a programming project at present. I can see that he needs to make a fundamental shift in his mentality in terms of working on a project like this, as opposed to the sort of things he's used to doing in school. He is a smart guy, but he is used to thinking things through part way, and getting close to the idea, and having professors tell him "not bad."
But the computer never tells you "not bad." You either got the code right, and it does what you wanted it to, or you got it wrong. Something very close to the right code can often produce results wildly off from the right results. The computer does not give partial credit.