Programming is almost like a mathematical proof with no forgiveness. Not only do you have to have all the steps right, but they have to be exactly right. It's one of those few things where you hand in something that you know is wrong and you really know is wrong because the program just isn't doing what it's meant to be doing. So I think that adds a lot of frustration. The other thing about this precision is reading a question carefully and working out exactly what it requires you of you is a very general life skill. We don't really have that many other opportunities apart from in maths to encourage students to acquire these skills.