Yes, Programmers Should Be “Mathematically Inclined”

This post is a response to Jeff Atwood’s post/question on Should Competent Programmers be "Mathematically Inclined"?.

I originally intended to just comment that piece, but the sheer amount of comments made me realize that no-one would actually read it anyway. So I might as well write a response in my own blog which about as many will read but which makes me feel better. :-)

I believe the answer is “yes”. I think that a competent programmer needs to be “mathematically inclined”. Not because the average programmer’s typical work includes much math such as applications in 3D, compression, and image manipulation. In those cases it is fairly obvious that a firm grasp of math is required. I believe the answer is “yes” because in my mind “mathematically inclined” also means “good at seeing patterns”, “good at identifying duplication”, “understands basic complexity theory”, or simply “good at groking thinks”. And while a good understanding of math in general is valuable, I think a solid understanding of discrete math and logic is invaluable.

Finally, I liked what the unnamed author mentioned in Jeff’s post wrote enough to reprint it here.

I run a small (4 people) web dev shop and I’m finding that younger coders haven’t had the pleasure of writing assembler or managing without library functions. I’ve always found strong math skills to be one of the most useful skills for coding, and when one has Google and a massive library of functions, one doesn’t have to be good at math to get things working, until it either breaks, has edge cases, or brings out OS or library bugs.

Some quick examples: simplifying tricky equations to determine array indicies or memory offsets; trigonometry to help with physical calculations; mental hex/bin/dec conversion; logic equalities such as DeMorgan’s theorem.