Update: I just came across a similar post by raganwald wherein he discusses the need for advanced programming skills…which you don’t get without math. ;)
When I was in high school no-one ever convinced me of why math was important and that is my biggest educational regret. Children, and adults for that matter, will neither seek out, nor retain, knowledge they don’t value. It’s all well and good to tell them algebra is important but unless you show them WHY algebra is important they will have no reason to retain it.
I was one of those kids who grasped geometry without problem, because the practical application of it was inherent in it’s teaching. Algebra, on the other hand, was a series of essentially random numbers written on a board. They taught you how but never really dwelled on why. I left high school honestly believing that I’d never need it because no-one ever gave me reason to believe otherwise.
Sixteen years later I know why. I’ve known why for a while now, but as I never really grasped, or retained, how I’ve been stymied in my forward progress. You see, when it comes to programming? All the cool shit requires math.
Oh yeah, you can build nifty, and useful, apps without any notable math skills. You’ll be able to rework old ideas in new ways. It’s a lot like being a carpenter without any electrical engineering skills. Sure you can use the belt sander, and you may have some good ideas on how to make a better belt sander, but without a good understanding of electrical engineering you’ll never be able to implement those ideas and actually make that better belt sander.
You may be happy being a simple carpenter, but I’ve been nailing boards together long enough to have some ideas on how to do it better and I’ve never been a complacent person. I’m hunting down math skills and eating them whole.
Tonight’s lesson? Untyped lambda calculus. You need to learn it too? Start with the Alligator Eggs game. It’s a sneaky way to introduce it to young children, although, as it mentions near the bottom, it could use some expanding upon for further clarity. Then read this introduction to lambda calculus (pdf)”). If some of the things in the paper are missing the why aspect try and match what they’re saying with the rules you learned in Alligator Eggs.
I still don’t know why the alligators die but at least now I know how, when, and where to kill them.
And, to any youngsters who may be reading this and wondering why I actually need lambda calculus, the answer is “functional” programming languages like Haskell and Erlang. You may be able to go through the motions, and follow the rules of functional programming but you’ll never really understand the why of it if you don’t understand lambda calculus.