> Allowing a kid to amass a forest of partially working techniques and then have to hack through it to solve any problem seems ridiculous to me, much like putting a student driver in a car, with no training, and telling them to try various things to see how to drive to a given point without getting killed.
Trying to invent ways to do math operations is not a bad idea per se... it's just that at some moment you should teach them the universal and efficient algorithm instead.
It's like, if you are learning to program, and try your own ways to design the code, and then someone teaches you the design patterns. I don't believe that you were harmed by trying to program your own way first. You will probably appreciate the design patterns more, and maybe understand them on a deeper level, now that you have a first-hand experience of the problem they were designed to solve. I even suspect that without this extra experience, people would be more likely to over-engineer their code, e.g. to use a complicated design pattern where a simple function call would suffice.
Similarly, after trying a few ad-hoc ways to add numbers, you will appreciate the standard "put them in a right-aligned column, proceed from right to left" algorithm more. But you will also notice that you can add 199 and 601 without putting them in a column first.
The crime of these approaches was failing to teach the kids the standard solutions. Experimenting for a while is itself OK.