Difficult: Recursion, Reading other people’s code.
For some problems, I find it exceedingly difficult--and sometimes I’m unable--to figure out a recursive, stateless solution. That kind of shakes my confidence. While for other problems, I can quickly envision a solution, and I start writing code immediately.
When the solutions got more complex, it was tough to debug my own code--much less somebody else’s, so I found it hard to review other people’s code--even though I was already intimately aware of the issues involved in solving the problem. Judicious commenting helped. Tests helped. Then if things were still unclear, digging in and manually following the function execution with some real values helped. If I hadn’t already solved the problem first, I doubt I would have been able to decipher what the heck was going on. I think it would be really hard to revisit someone else’s solution in six months and try to understand