I have been thinking about math education for more than fifteen years. An initiation rite for me was the following story. I was training three students for the math olympics in some school. They worked with me for one year without previous trainment. Then they went to the National Mathematical Olympiad in Chile and they obtained the three gold medals that were given that year. In that moment I was very moved and I realized that the method that I implemented (a method that has been evolving ever since) was interesting.
The key ideas are the following. To learn math is similar to learn to play a sport (say football) and the usual way of teaching math (the professor standing up and "explaining" things the students don't want to hear) is as if football was taught in the blackboard. The main thing a teacher can do is to make his students to be better in solving problems, inventing problems, seeing beauty in mathematics and to be deeply motivated. I believe that the physical attitude is important, I prefer students to be standing up, and it is also fundamental to work in groups, mostly when solving and inventing problems.
I believe that students should be trained in problems of all levels of difficulty. Easy, medium, hard and super hard. They should solve problems that take for them ten minutes, thirty, one hour, three hours, weeks and months. They need for them different skills, like someone being trained to run 50 mts, 100 mts, 1 km or 42 kms. The fuel to do all this is motivation and this is obtained by the feeling of beauty in math, by the feeling of unity in math and most importantly by the feeling that THEY CAN solve the problems, i.e. to have high self-esteem.
The course that I do every year in the University, called "Problem-solving" is as follows. The first hour some student brings a problem for me and I try to solve it in real time (without knowing the problem) in front of the students. Then they see how I try to solve the problems, they see what to do when you don't know what to do. This is a meta-mathematical learning. Then I give them a problem that they solve (or maybe not) in one or two more hours. Finally, we try the last hour to generalize the problem or to invent similar problems and to solve them. While the students work, they are standing up, facing the blackboard, and they work in groups. Voilà.