It doesn't seem to me that this is "Agile" development in any sense of
the word. It's more like Waterfall, or perhaps best described as
Am I right in thinking that this is not how Agile is supposed to work?
"Agile" doesn't work in any particular way as it is not a process. It's buzzword adjective to describe a set of principles.
If you are doing Scrum, sprints are (should be) locked. If your boss has a priority mid-sprint, it will either have to wait until next sprint, or something in the current sprint backlog as to be taken out and replaced with that, which has minimal impact. If you have an emergency lane in your Scrum, see below in KanBan.
If you are doing KanBan, you have two options:
1) All your boss can do is reorder the backlog stack and put it up top. When the next developer becomes free, he will start work on it as soon as he can.
2) If you have the emergency lane, all work on everything stops when your boss does this. He will soon learn that it better be a real emergency to do this, because the entire pipeline from PM to Dev to QA to Deployment is halted.
Notice that at no time are you being randomly pulled off what you are currently working on and thrown onto something else, unless the entire team is stopping too, so you know it's serious.
We also have no fixed release schedule - we push a release whenever he
tells us to (often with only minimal testing.)
Here's the ideal:
Scrum - Through continuous integration and acceptance (QA), by the end of a sprint the project should be deliverable to the client in a stable state. How else are they to review that sprint's work for correctness and have a tight feedback loop?
KanBan - The way I've done it in the past is simply at any point, the boss can say "release time". At that point we but a little mark at the top of the backlog, and no new work is pulled in until the pipeline clears and the release is built. Through continuous integration, etc. it can work.