I think it's normal yes, but I would also change the way you ask.
A useful strategy I read when my first was about 3 is not asking more than once so SAY - REMIND - MAKE IT HAPPEN.
In reality that looks like
You give the instruction
You remind with a single word "DS - shoes"
If it is still not happening you go to him and lead him to the shoes or bring his shoes to him, and help him to put them on. This way he learns that you won't ask a million times before he "really" has to do it. The first ask is the one that counts.
Another technique is to engage him more fully in the first place before you give any instructions. So whatever he is doing currently, you need to go and actively interrupt that activity. If he's playing or whatever, go to him and give him a 5-10 minute warning that you're leaving soon and he needs to wrap up the activity. Then when it gets closer to the time, go and "offer help" aka start putting it away for him/turn off the TV, and talking about whatever is happening next e.g. we're going to pick up or dinner is ready or whatever it is, and once his attention has transferred to the new activity, he's much more likely to then respond to OK, what do we need to get ready for this.
That may be annoying/impractical for things like dinner or a morning routine which is the same every day - so it can be helpful to pre-empt the situation and ensure he's not starting these highly attention grabbing activities within a small time window of being required to do something else. So for example you may want to establish a rule of no TV in the morning, or come and do colouring in the kitchen or read to me while I make dinner, so that he's already there and somewhat engaged in whatever it is you're doing that's going to need his cooperation.
When you engage with what he's currently doing as well you can also see whether he's seriously engrossed in something and would like 5 more minutes to finish the level/episode/build that he's doing (if this is OK with your plans) or whether he's just not wanting to stop and doesn't really think he has to so he ignores you. If something isn't time sensitive, I tend to have a rule of you don't necessarily need to do it immediately, but I do want a response from you that confirms you've heard, understood, and have put it on your radar e.g. "Can I just finish this bridge first?" I would then normally keep checking his progress to follow up, because 5 year olds do not have such great time/task management that they will always remember what they have promised - they will often finish the bridge and then continue to play because they have already forgotten what they have promised. But at that point you can remind them - hey, you said one bridge! And this is generally accepted much better than being interrupted out of the blue with "Stop having fun and come and do this boring thing", which is how they generally experience a request like this at his age.
Some people do a consequence if an instruction is not followed the first/second time. That's not my way, but it works on the same principle of not asking 1000 times as a general policy, and can be effective.
It will take time for anything to settle in - if he's used to having loads of chances and not really worrying about whatever it is the first time, then he's not going to immediately get into the habit of responding with urgency. But if you're consistent with never asking twice, then he will change his perception.