“A few weeks into the class, there was a moment where I finally understood recursion. It felt so satisfying that my next thoughts went something like: ‘Wow, that’s awesome. I like that. I think I like computer science.'” – from betabeat.com
I can tell you that I know /exactly/ how she felt. I first “got” recursion (a programming method) after a summer scholarship in DCU, waaay back when I was in secondary school. It was really an awesome moment – understanding the possibilities of it felt like becoming one with the universe. It /really/ felt like that.
It felt “awesome”, and I mean that literally; I was in awe that such a simple concept could create such amazingly powerful solutions.
I’ve used recursion quite a lot over the years. In fact, only yesterday, I wrote a TSP algorithm that uses depth-first recursion to find the shortest distance between a number of points on a map. I’ve also used it for generating flow charts for food industry applications, creating breadcrumbs in website navigation, and for solving other seemingly unrelated problems.
As a father of two kids, I would love to have them take up my own path and become programmers, but I also know that you can’t “teach” the feeling of satisfaction/enlightenment that you get when you finally solve a tricky problem, and that feeling is very important to get early on if a child is to feel an urge to carry on.
Jareth (my son) doesn’t know it yet, but he’s getting Lego Mindstorms this year for Christmas. I already know he’s going to be a good programmer, based on his problem solving skills in some games, and some of the technic creations he’s built. Hopefully Mindstorms will let him have his own “ah hah!” moments early on, encouraging him to go deeper into programming as he gets older.