Should Competent Programmers be "Mathematically Inclined"?

100% agreed. Professional engineering is much more like lego assembly with components than it typically is like doing calculus. The only reference books I actually have are all stats and math ones, not programming ones, and they are plenty sufficient when I need them.

I think what the original author meant was that, when someone is good at math, not necessarily knowledgeable about a specific field in math, but has the brain to seek how and why of mathematical problems as well as knowing how to utilize the current tools and knowledge available to solve the math problem, or even to prove a formula is correct. It is similar idea in programming perspective where you have to think about how to efficiently and effectively design your code and algorithms to solve the business problem, or even just programming problems. Many of our current programming projects are just simply providing interface for data entry and validation. But to write much more complicated software, such as a database (oracle, sql server, …), AI, … etc, you will need to be able to formula your problem, develop steps and coming up with algorithms. Even a simple tetrix game ( we all know how to play that, but it takes a lot more to develop an engine to be able to support the game play) will take a lot of math-like thinking in programming way to do that.

You don’t really need to know math to write code, you just need to know how to apply it. My first love is 3d graphics programming. I have a 9th grade education, so the gap in the math education I have recieved and the math that is used in 3d programming is huge. So first I hunkered down and learned what a vector was, then I hopped my butt into the math channels on IRC and explained what I was trying to do, and can someone hook me up with a formula please?

Nothing to it. I think a monkey could write code. Logic is everything. I spend so much more time trying to figure out how to get my hands on something (like control ā€˜a’ relative to control ā€˜b’) than I do trying to figure out how to solve my problem that it’s not even funny.

Quaternion Rotation still gives me fits though.

Oops, I should have used the words test in reference to programs instead of prove but the idea is similar. To mathematically prove that even the most trivial software is always correct is a tall task. If there are just 32 if statements in your program then there are 2**32 possible different states that your program can be in based on a statement being either true or false.

I’ve come a computer science major and I detest math… none the less, I took a whole lot of it. Way, way more than I ever use (assuming I even remembered how to use it).

It all depends on what area of computing you do… for most, I suspect a strong understanding of advanced math is overkill but absolutely nessassary for a select few.

Jeff… You sound EXACTLY like those people in the TV show Numb3rs who complain that maths won’t help us catch this killer.

no one has ever tried to localize… I had to stop reading right there. You should be teased about that one for a long time. Please tell Joel that you deserve to be the but of a joke on your podcast.

Theres 10 localized symbols for 3 on this page:
http://en.wikipedia.org/wiki/3_(number)
Ian on April 2, 2009 12:53 AM

Jeff PWNED…

:slight_smile:

Do mathematicians believe in god?, i Know programmers do…
:slight_smile:

I’m curious if Jeff is ever embarrassed that he is always misinterpreting things and making terrible generalizations. I guess it gets all of us into an intriguing conversation, so it’s not all bad.

Guys, give jeff a break…whatever he writes on blog need not be 100 % accurate and correct all the time…if he learns that something is wrong he will correct it…
after all he is also a human being and a fellow programmer…he also makes mistakes just like any one of us…
so go easy on him…

The real reason I feel the best programmers have a strong mathematical foundation is because such a base is required for understanding the real performance of your code. It’s difficult to optimize a method/function/routine/etc if you don’t possess the skills require to analyze the running time of said algorithm. Yes, most people can figure out that a for loop is O(n) but as soon as you start talking O(n ln n) lots of people’s eyes cross…

http://en.wikipedia.org/wiki/Big_O_notation

Well… your post don’t follow from your title. It feels rather like something Are competent programmers more likely to be ā€˜mathematically inclined’?.

If ability of logical thinking is seen as a part of mathematics I would definitely say that it helps.

Since I work on the web side of things (for a small e-commerce company) most of the actual math works is of the 1+1 variety… but lately some statistics have begun to creep in (which is interesting and somewhat fun).

(I also like to believe that I have a nice understanding of my native tongue (and an acceptable level of understanding of English).)

To the people who think it’s always ok to learn the maths just in time: Let’s compare this to physical skills.

Would you take anyone seriously if they said they’d learn to swim just before taking a job as a lifeguard? Or someone learning to sew when they get a job as a seamstress?

Some minor maths you can pick up on the spot, but many tasks require too big a chunk of maths to learn like that, and almost anyone who thinks they can do it is simply overestimating their own abilities. (Sure, our lifeguard friend can learn to swim in a week, but he’ll be rubbish at it, and he’s not going to save anyone’s life).

Learning math made me a lot better as a programmer.

Hell, once I was trying to figure out a physics problem in a commercial piece of software I was writing while in college, and realized the solution was actually held in the calculus lecture I’d attended the day before.

Don’t underestimate math at all.

WTF? What are you talking about? programming is not about programming, but about communication skills, so please stop wasting our time and write something usefull. How to control people?,How to humiliate your boss? - thats the kind of programming related articles we would all need to be better programmers.

@Grom…
For people asking about the right way to learn math. Have a read of http://www.maa.org/devlin/LockhartsLament.pdf

Really Excellent article…
I now understand the beauty of math…forget programming…i love math now…
i have wasted 13 years of my schooling in the math…OMG…

one more thing…
MATHEMATICS IS ART AND SO SHOULD PROGRAMMING BE…
WE ARE DOING THE SAME TO SOFTWARE ENGINEERING AND COMPUTER SCIENCE…THAT WE DID TO MATHEMATICS IN SCHOOL…
WHAT A SHAME!!!

There’s no point responding either way. This is just a traffic-building post. The smackdown approach indeed. I’m glad our academia shuns it.

Either you’re mathematically trained programmer, and from your experience you think that it’d be nice for all programmers to have that training and you’ve sure found it useful and you’ve sure noticed other bad code that could be better if the guy didn’t try to reinvent matrix multiplication.

Or you’re not mathematically trained, and you’re defending yourself because you may not have needed the training (although it begs the question that without the knowledge, how can you know what you’ve been missing)

I had a coworker once who had a masters in math from a prestigious school. He could code for sure, but nobody else could decipher his code. It was the classic massive method sort of thing (thousands of lines). It was as if he thrived on mastering large problems. He was creating problems (large puzzles) as he was solving them.

As has been said (http://blogoscoped.com/archive/2005-08-24-n14.html), good programmers are lazy and dumb.

from my experience during college:
people whose really good at math (by I mean really good, they really are like born to be a mathematician, not just someone whose diligent enough), they learn about how to code faster (much faster actually) than someone whose just have an average math skill.
I think it’s because programming mostly are about abstract thinking and reasoning, something that a mathematician’s brain used to.