I’ve been listening to and transcribing the StackOverflow Podcast 31 in the last couple of days, and something Jeff Atwood said struck a nerve:

Spolsky: Maybe you just don’t like the kind of math they teach in American high schools. I mean, maybe you would like discrete math or set theory or that kind of stuff. The stuff that’s like really interesting math.

Atwood: I think historically the problem has been that I just didn’t really have — couldn’t really grok it at some fundamental level, like I could do it, like you could just show me a problem and I could solve that problem. But I couldn’t really extrapolate that to anywhere interesting. At all.

I can relate to Jeff here. That used to be, and to a very large extent, still is, my problem with math. While I can mechanically apply a solution I’ve learned, actually extracting the underlying principle and being able to identify analogous problems doesn’t come nearly as easily.

Fortunately, university math tends to be taught differently than high school math, and there is a heavy emphasis on being able to prove things and understand why things work, not just learn and apply them. That, and hindsight from the way I botched my high school studies should ensure that I learn at least a thing or two this time.

Listening to that bit in the podcast made me wish I had more time to devote to studying in general, and math specifically. Too bad I’m busy with my Data Structures course (final exam tomorrow) and work. Still, I’m keeping an eye out for math textbooks that seem interesting enough to grab my attention even outside the lecture halls.

Speaking of Data Structures, I have this funny feeling that I’ve both let myself down in terms of what I got from the course, and simultaneously learned more than I thought I had. Simply being familiar with some simple tree and graph traversal algorithms has given me the kind of insight into programming problems I didn’t used to have. It’s great, being able to recognize a concrete problem as an instance of something more abstract I’ve seen before, because it opens up a wide variety of known solutions to the problem. 🙂

Here’s hoping tomorrow’s exam won’t be a complete disaster. \o/

Exercise, debugging and books aplenty.

Phew, finally managed to complete Week 2, Day 1 of the One Hundred Pushups program, even if it was just barely. This is the third time I’m repeating the Week 2 exercises. I decided I’d keep repeating until I can complete each day with at least the minimum number of pushups in the last set. So far I’ve been living up to the decision, too.

Today at work brought to mind a meta-quote from Code Complete:

“If you haven’t spent at least a month working on the same program—working 16 hours a day, dreaming about it during the remaining 8 hours of restless sleep, working several nights straight through truing to eliminate that "one last bug" from the program—then you haven’t really written a complicated computer program. And you may not have the sense that there is something exhilarating about programming. “

—Edward Yourdon

This lusty tribute to programming machismo is pure B.S. and an almost certain recipe for failure. Those all-night programming stints make you feel like the greatest programmer in the world, but then you have to spend several weeks correcting the defects you installed during your blaze of glory. By all means, get excited about programming. But excitement is no substitute for competency. Remember which is more important.

Props to Jeff Atwood for typing this quote out so I didn’t have to.

Both the original quote and McConnell’s commentary sprang to mind as I drank cup after cup of coffee (and my mug is not lacking in volume), tried to debug JITted .NET code by watching the local variables and call stack (because that was the only thing I could understand – you see, I’m not a Real Programmer), and finally, almost by a stroke of luck managing to figure out the cause of the mystery bug.

I had forgotten how strange that combination of excitement and frustration can be. I almost shouted out loud as laid out a solution in my head and went off to explain it to my team members.

Finally managed to get a copy of K&R C, too. I read about half of it in one sittng, pleased with how the book is written and wondering why I ever bothered with a huge monster like C Primer Plus, which drones on and on about basic programming constructs, and is a bitch to carry around. I also got The One-page Project Manager – communicating the status of a project is something I’m interested in, specifically ways to visualize actual progress. A quick glance at the contents of the book suggests this is not the kind of progress or communication I meant. More on that later.

That’s all for today. 🙂