OP, do you think you have problems following the logic within the code? Or is it like, i don't understand what the bigger picture is so I can't finish this task?
I think it's more that when faced with a code smell, I get into a mental loop where I evaluate each possible solution I can think of over and over without being able to commit to one. Sort of like a simulated annealing algorithm that never cools down.
Haha, I understand exactly what you mean. I used to be the same, I guess it never really goes away. I had a friend who was really quick, he knew as much as me and probably just as smart, the only difference is that he'd make calls and compromise quicker while I'd just ponder on the implications of each decision. It has a lot to do with out personality types I think. I have since learned to punt stuff and solve the problem I have, not problems I might have. It's good to be aware of the problems you might have in the future but trying to come up with a perfect solution will only lead you to produce nothing at the end of the day and frustrate you, like you have probably noticed. It's easier to fail fast and iterate, you learn from your mistakes. Also TDD helped a lot, Good luck!