I've helped teach CS to high schoolers for a few years. In some years, we've used visual systems like this. In my experience, they help kids get started with programming really easily. They can slowly learn more and more programming concepts with immediate visual feedback. But, in all classes, they get stuck in learning to abstract or plan solutions ahead of time for more complex problems. That's a hard jump with every method of teaching CS, though. In a sense, the immediacy of visual programming can make it hard for them to slowly develop long-range planning and reasoning skills. I'm not sure if a purely symbolic approach is better, still. I do think a bit more practice-oriented learning may help - think multiplication table worksheets.