I actually find that beneficial. Takes me a couple of minutes and ensure that I clean up more often.
> Worse still it never seemed to learn and would often finish its job leaving huge parts of the floor untouched.
That is on purpose. Different than other robots, Roombas don't learn a floor-plan, but follow some simple, "insect-like" rules. (Travel along if you find a wall, turn around if you hit something, etc.)
It uses the length of stretches that it can drive in a straight line, to get an estimate of the room size, which it will use to adjust the runtime of it's cleaning program.
This behaviour ensures that Roomba adapts well to different rooms. It doesn't clean the entire floor in one go, but over some runs it will eventually reach everything.