For me, one of the absolute most stressful and unpleasant things when writing software is when you're working with an external component and eventually become lost. There's no documentation, or at least insufficient documentation, and you've run out of samples and other sources of help. You're at the end of the rope. You've exhausted your resources. Often the only thing you can do at this point is just move to working on something else, hoping that you'll receive a flash of inspiration that solves your first problem. Or, you have to decide that you don't want to use that external component, or need to use it in an entirely different way.
I find that very frustrating. Engineers are pretty resourceful, and in general good at eventually finding solutions to their problems. (They may not always be pretty, but eventually we can figure something out.) Most problems can at least be inelegantly solved with brute force. But these types of problems often can't. Engineers work by making some sense out of vast amounts of information. In this case, there's not enough information, and no matter how much you try, it still seems that there's not enough information.
I hit that point last night. I had been poking at the same thing all day, and eventually I ran out of resources. I'd searched through mountains of code, talked to every knowledgeable person I knew, and tried a hundred little variations, none of which worked. I got to that point where trying harder just wasn't going to be feasible. So, I went home, cooled off, and then worked on something entirely different later.
[Train of thought continued in the next post for those who skipped this one since it's about coding.]