What do you do when you've got a problem? If you're anything like me, you talk to a friend. They ask you questions to identify the core issue. Then you design a strategy and make it work.
This works in programming too: It's called pair programming.
Pair programming sits you in front of a computer with a peer. Together you talk about the problem until you solve it in theory. Then you solve it in code.
When you're learning a new concept or solving a tricky problem, talking out loud forces a clearer understanding. You admit what you don't know and ask questions until you figure out the answer. Simply talking things through promotes teamwork and it produces better code.
This is why we've made pair programming one of the core concepts in our curriculum.
Great teachers make a huge difference, but so do great peers. So much is gained by bringing bright people together and having them cooperate on a challenge. Pair programming does exactly this, and that's why we love it.