« Knowledge Sharing | Main | Continuous Partial Atttention »

The Math You Learned

Steve Yegge has posted an essay, entitled Math For Programmers, in which he posits that
  • Most programmers think they don't need to know math
  • Most programmers are correct, but...
  • Math is a lot easier to pick up after you know how to program
  • They teach math all wrong in school (at least, in terms of a future as a programmer)
  • Knowing even a little of the right kinds of math can enable you do write some pretty interesting programs that would otherwise be too hard.
  • Math can be fun

It's an interesting essay; I agree with much of it. I found the follow-up comments to add quite a lot to the discussion (even though a few of the people commenting seem to have stopped reading Yegge's essay at about the third sentence.)

I personally had trouble with math for several years. I hit "New Math" (or it hit me) in 4th grade. My teacher, a few years from retirement, couldn't hack it and neither could I. Things fell apart from there until 8th grade when everything turned around again.

In 8th grade, when most of my peers were taking Algebra 1, I took "Arithmetic II". Somehow, that was the magic charm I needed. After that, I "got" math and things were better. And yes, in many ways math was fun. I enjoyed Geometric Proofs (I can't say I learned anything, but they were enjoyable in the way that a puzzle in today's newspaper can be enjoyable). I somehow managed to understand Trig and (in college) I actually liked Integral Calculus, especially solids of revolution.

But, did any of those classes prepare me for a career as a programmer? Or, for that matter, a career as a Biochemist, which is what I thought I was going into at the time....? I doubt it.

Most of what is taught in school has little bearing on Real Life. As far as I can tell, the purpose of high school math classes is to prepare students to take the SAT. In other words, high school prepares "college-bound" students for college. College prepares students for grad school. If you want "real life" you need to get a job.

In college, I took a required year each in calculus and physics, along with classes in computer science, chemistry, and microbiology. I don't recall ever needing geometry; there may have been a little bit of trig; there was certainly algebra.

Rich reminded me that I might have used calculus in physics class. He said "velocity is the first derivative of position, with respect to time; acceleration is the second derivative". Really? I can't remember. I can't for the life of me recall if anyone ever made that connection for me back then. Maybe they did and I didn't notice. Maybe they said it in some other way. I don't recall any of my instructors going out of their way to relate their classes to to other subjects.

It's been a long time.

For the past two decades, I've been employed as a utilities programmer (awk, shell, Perl) and, more recently, as a web weaver and tech writer. None of those jobs require much math; they certainly don't require geometric proofs, or trig, or calculus. I'm rarely called upon to solve simultaneous equations or matrices. Real Life occasionally offers me the opportunity to do a little bit of simple algebra, or some long division (without a calculator) but nothing more complex than that. My programming projects have occasionally required an understanding of probability, base 16 arithmetic, or simple statistics.

I took a lot of math and science in high school because I enjoyed it and because I thought I would become a scientist. In college, I discovered that I don't enjoy lab research and I do enjoy computers. Over a decade later, the World Wide Web burst on the scene and changed my direction all over again. Most of what I learned in high school and college isn't pertinent to what I do in my job today.

And therein lies both the strength and the fallacy of Steve Yegge's essay. I don't think we're ever going to have much impact on how math (or anything else) is taught in the High Schools. Even if we did, as one commenter put it, "Easily said. Harder to know at age 14 what you want to do with your life." Especially when the world can change substantially over the next few decades.

The strength of Yegge's essay is in his recommendations for today's programmers:

  • Don't assume you'll never need (or want) to know about math.
  • Don't assume math is hard (or boring).
  • You can learn a lot by reading.
  • There are a lot of resources available; use them!
You may discover that new projects are open to you. At the least, you may learn something new, and, possibly, even fun.

March 21, 2006 in category Science, Web/Tech | Permalink

Comments

Elementary algebra provides critical skills for programming. Specifically:

    It introduces a form of abstract reasoning. The "word problems" in algebra classes are thus a precursor to systems analysis.

    Most programming languages (e.g., C, Perl) use algebraic syntax for calculations, etc. Even the exceptions (e.g., COBOL, Lisp, PostScript) require algebraic thinking.

    Algebra is the basis for analytic geometry, which is used for graphing data, generating drawings and images, etc.

Posted by: Rich Morin at Mar 21, 2006 9:44:36 AM

Post a comment

N.B. Comments are moderated and will not appear on this weblog until the author has approved them. Please stay on topic. I reserve the right to edit (or delete) comments before approval.

If you have a TypeKey or TypePad account, please Sign In