There’s also the very usual problem of the scope of the tasks not being well defined and many times too big, so juniors get overwhelmed and it’s difficult for them to focus on small things to actually progress or identify that they are blocked.
I remember well that when I was junior and not having yet a proper notion of when to call it “I’m blocked” since many times it seems one is blocked but is not, like spending 1 or 2 days reading and understanding the code and how all things work are very legitimate things, which are needed to even know what to ask about. But other times I was actually blocked but could not understand that I was because it felt I was just trying to understand the code and was actually going in circles not knowing when to stop.
It’s all a balance, but the one important thing to do is communicate about it, not just a “I’m doing it”. Usually pairing with someone and take some time to explain the “thought process” and the “current understanding” helps a lot. But, a junior kinda stuck will many times not ask for that time. What I usually do is just after a daily be the one to approach the junior and ask him to pair for a while to help him, without him even asking. Many times this solves the problem.