I've done a load of assorted licences and ratings. Most I did in near minimum hours, one I did in significantly over minimum hours and in retrospect a great deal of that was about inefficient teaching and a certain amount of padding at the training organisation
On the other hand, as an instructor, I'm very aware of the massively different skillsets and learning rates of different students. Also, whether I'm an instructor or a student, there are only two people in the aeroplane, and if we have two different opinions about how things are going - it's impossible to easily get an additional valid opinion as that additional opinion-former won't be in the cockpit for that training.
So, basically, you can't solve it. But, doing what the OPs son did - switching school to find somewhere more suited to his needs, is the only real solution.