tags:

views:

2063

answers:

22

I'm just after reading Jeff's 'Five Things You Didn't Know About Me (and my office)' blog entry on Coding Horror and right at the bottom of this page he mentions (to my surprise) that he is terrible at math:

http://www.codinghorror.com/blog/archives/000770.html

He's obviously not that bad as I do reckon that a certain level of math is required to be a half decent programmer; I'm therefore taking his statement with a pinch of salt.

However, I was just wondering if any of you reckon it's possible to be a great programmer but still be mediocre at math?

Related question:
http://stackoverflow.com/questions/16367/do-you-have-to-be-good-at-math-to-be-a-good-programmer

A: 

It depends -- are you counting knowing how to use formulas part of math?

I think you need to be able to solve problems and that usually involves algorithms and formulas.

Ryan Lanciaux
A: 

I am terrible at math and yet I get paid to write software. That said, I was good at math when I needed to be in school, and I understand the underpinnings of how math relates to computer science theory, etc. etc. so that when I come to the point where math is needed, I either hunker down and do it or ask someone that knows.

Knowing when you need to know something is sometimes adequate enough when actually knowing it isn't a practical option. :P


EDIT: What I am really saying is that I am good at math when I need to be, but just don't care for math unless it is applied. Math for the sake of math causes me to slip into a coma.

Jason Bunting
So, what you're saying is that you're not terrible at math?
mquander
Hmmm, I'm not sure what I am saying - I don't quite know, and it's rare that anyone else (especially my wife) knows. :)
Jason Bunting
+3  A: 

Your question is akin to "Can you be terrible at English grammar and still be a great poet?"

My personal view is no. On the other hand, I don't think one needs to be great at math to be a good programmer. However, a minimum level of competency/literacy in math -- probably at a higher level than the general public -- is required.

Just my $0.02.

sundae1888
+1  A: 

This question, Do you have to be good at math to be a good programmer?, can give you some insight. I almost want to tag this question as a duplicate.

Dale Ragan
I would mark it as a dupe, but I am *just* not able to yet. Please do it.
Jason Bunting
As far as I can tell there's no official mechanism for marking something a duplicate other than adding a dupe tag or downvoting it, and you should be capable of both those things.
Kyle Cronin
Yeah, I down voted the question. Unfortunately I cannot find the tag to use to mark it as a dup-question and I cannot close it, because I don't have enough rep.
Dale Ragan
+17  A: 

There's a difference between being a terrible math student (which I was in high school), and being terrible at math. I think a lot of folks who were bad math students were just rebelling against the repetition and "formula memorization" way math is taught (at least in the U.S.).

Once I began to appreciate the theory and purity behind the formulas and exercises, I really took to it, and as you say, I think some level of math aptitude is required to be able to be really productive as a programmer.

Guy Starbuck
I agree entirely. I HATED memorizing formulae but I'm really pretty good at Maths as long as I dont have to remember the formula itself. Why should I remember a particular equation? its written down so I can refer to it!
Mauro
I agree also. If you work in a specific domain there are probably formulas you should remember. I can't remmember half of my physics equations or find the volume of a pyramid off the top of my head, but if I really had to I could figure it out quickly enough.
Steve g
A: 

For many branches of math (probability, anyone?) I'd argue that they, if any at all, only have a minor effect on your programming skills.

Sören Kuklau
A: 

I tell people I went into software development to avoid math - powers of two - that's all ya gotta know baby! I actually run into quite a bit of math, to tell the truth - but that's probably because we develop 3D graphics and image processing software. The linear algebra I need I've managed to teach myself - but I go get help when I see an integral...

Brian Stewart
+2  A: 

I think that Math, like programming, teaches you how to think about problems. You do not need to be a Calculus expert to program a room reservation system. However, knowing how to "divide and conquer" problems comes up in both math and comp sci.

That said, all software developers, should be able to do "just in time learning." Which involves learning a new technology (algorithm, library, etc.) in order to use it. Sometimes this may involve learning new vocabulary, or new math.

Rob Rolnick
A: 

If you think maths means arithmetic, then I suppose it's useful to be able to do. As the study of logical argument and proof, then it's a very useful mindset.

(I have a BSc Hons in mathematics, although I was about 3% below the honours pass mark.)

Tom Hawtin - tackline
A: 

This is a really difficult question to answer. There is a trend that people who are really great programmers are also good at math. Is this is a coincidental positive correlation or is it that they are truly linked? I think the answer you are going to find is: no you don't have to be good at math to be a good programmer. The really hard question is: is someone who is mediocre at math and a good programmer really only mediocre at math. It could be that people who fall into this category either don't really try to understand math and are capable of doing so either because it doesn't interest them or that they have convinced themselves that they can't do it and won't figure it out until they pass that hurddle. Eventhough programming is really based on math concepts it may appear differently to people allowing them to program without knowing they have a knack for math also.

Kevin
+1  A: 

I think a sound knowledge of discrete mathematics is important. Other areas are maybe less useful, unless you are writing software that requires specialised knowledge.

I don't believe that I have particularly strong maths skills. I don't remember a lot of the maths I learned at school. Having said that, it often aids understanding if you are able to appreciate the mathematical concepts underpinning CS theory.

Dan Dyer
+5  A: 

The problem is that you need to be a bit more specific as to what branch of math. I'm sure there have been plenty of great programmers who suck at even giving change.

I have a BS in math which I have mostly forgotten after all these years. The two courses that I feel have done the most to help me program was a class on basic logic and my analysis classes.

Basic logic is important for mostly obvious reasons. I'm sure there are plenty of people who don't know the proper way to "not" a logical expression.

For me, the analysis classes were important because it taught me how to think. In analysis you start from the basic axioms of math and prove mathematics from the ground up. This taught me a lot about breaking problems down into smaller steps and to see abstractions.

So, IMHO do you need to know math? Not really, but it sure helps.

Torlack
+1  A: 

I think if you are staying away from 3D graphics, signal processing or AI then you can get away with an average understanding of pure mathematics (trig, geometry, calculus) and still be a great programmer.

I do not think you can be a great programmer if you can not understand discrete mathematics because it is the basis for most of the core concepts in databases and algorithms in general. Set theory, graph theory and algorithms are essentials.

However, I'm sure there's a lot of people out there programming who have never studied any of the aforementioned concepts who hold down jobs just fine.

My £0.02

Rob Stevenson-Leggett
A: 

Yes you can be, just not in C.

Seriously, I think the more abstract the language/techniques you're using the more programming becomes like domain-specific language design and the less like calculation.

I had to use a derivative once to calculate the rate of something and I was thrilled two weeks ago when I had to write a mathematical proof to assure my boss that what seemed like a large discrepancy between two numbers on a report was not in fact an error. Other than that I find that mathematical concepts are not explicitly useful (though they probably are subconsciously). Keep in mind that programming mostly relates to what college curriculum consider to be off-shoot branches of mathematics such as discrete math, set, and information theory. In other words: Integration is not integral.

George Mauer
A: 

Generally speaking I would say no. But as others have suggested it depends on specifically what you are working on. I work on applications that do financial calculations and I would not consider myself good at math by any stretch of the word.

Dan Adams
A: 

No. You may be able to be a decent or ok to moderately good. But never Great.

Brian Leahy
+2  A: 

The best programmer I have ever encountered was a Latin scholar. He obviously knew some mathematics as any educated person does, but it was not in any way the basis of his programming skill. However, I think that being able to think clearly and logically, which is required in both Latin and mathematics is essential. And I can see no reason that really advanced math skills (differential equations, say) would help you at all. I speak as someone with a bachelor's in mathematics and a PhD in computer science. Apart from a little stuff in complexity theory, I have never used much math at all programming.

Paul
A: 

So are we talking about a great programmer as in (1) the classical doing the most advanced hi tech specialized 1337 piece of code or as in (2) delivering the most value to the end user/customer? They need not be the same.

  1. I'd say Yes.
  2. I'd say No.

:)

//W

superwiren
+1  A: 

To some people, being "good at math" requires an "interest in numbers" (e.g. number theory). To others, it's all about proofs (e.g. logical discourse). Folks that are capable of peforming a long series of arithmetic operations in their heads are rarely accused of being poor at math. Hence, being "good at math" has a myriad of different meanings. Programming is no different. Of course, being immersed in the field of software engineering, as many of us are, each of us have our own convictions as to what makes a good programmer. Nonetheless, until one is able to rank the skill level of a UI framework engineer against an OS Kernel engineer: we find ourselves ill-equipped to make such generalizations on the "goodness" of a programmer.

When it comes down to it, there's skill in the use of rigor and the understanding of abstract concepts as well as a proper intuition to utilize these concepts that is required of any mathematician or computer programmer. Without getting too philosophical (I'm probably a tad late on that one), suffice it to say: One who is unable to grasp at least one non-trivial aspect of mathematics, is unlikely to make much headway as a programmer.

Ryan Delucchi
+2  A: 

Can you be terrible at math and still a great programmer?

There is research that shows smart people perform equally well at english and math. Think about it -- When was the last time you read a science journal and the researchers had terrible writing skills? They never do. Take a look at this site. Most people here are programmers and typically the writing is above average.

Its just a matter of interest. Some people become experts in a particular field, math for instance, and then later go into programming. They may attribute their programming skill to being good at math, but really they are just smart people and would excel at whatever they spent time working on.

One of the best programmers I work with has a journalism degree from Auburn. He writes very well. He was never taught programming in school. Yet, he got a job as a programmer and has excelled at it. I attribute this to his natural intelligence.

I have worked with some very smart business types. I am surprised when they can relate to me in ways only fellow programmers typically do. They pick up on technical topics quickly and make the most use of any application. Had some of these people chosen programming as a career I'm sure they would have done well.

Finally, to answer your question: No. I would assume that poor math skills would also lead to poor performance in any activity, programming or otherwise.

Mashed Potato
A: 

Can you be an excellent guitarist and be missing a bunch of fingers?

It worked for Django Reinhardt, but the odds are stacked seriously against it.

Fortunately, learning math is easier than regrowing fingers.

I'd suggest that any would-be programmers that consider themselves "terrible at math" take the effort to redress the problem; the benefit to their coding will be apparent.

Michael Dorfman
A: 

I think that's an interesting question. I studied Maths at undergraduate level and also took some programming modules.

  • There is some similarity between programming and Maths
  • You do not need to understand the vast majority of Mathematical content to be a good programmer. I would say you only need some basic Maths and perhaps some very early first year undergrad Maths.
  • You will need Algebra and Arithmetic (e.g. if x>y then ). You dont have to go off the wall by understanding the deepest inner workings of linear algebra.
  • You will need to understand the idea of the function (input and output etc)
  • Be able to understand boolean logic when applied to variables/functions etc. This is an area where some programmers whose skill set does not include strengths in logic can come unstuck. For example, a simpler example might be IF ((x>5) OR (y>6)) THEN ... It can get more complicated if you wanted for example IF (((x>5) OR (y>6)) AND z>9). I have seen first hand software being developed and the developer, who was a very talented programmer in general it seemed did not have a firm grasp of boolean logic in his arsenal. There is a good way to understand these sorts of things and that is the use of Venn Diagrams.

On the other hand, I think there are some qualities that Mathematicians may not have that some good programmers might do as well! That is:

  • Attention to detail (decent function/variable names, good comments etc)
  • Book depth: There are a lot of functions and what they do that require time to learn and practice.

I hope I have given you an idea of some of areas of Maths that are essential for programming however there may be more areas as I am not a professional programmer. I do know from personal experience that a lot of programmers will not know the answer to the question you asked because they have not necessarily had exposure to a great deal of Maths. Equally I would say, unless a Mathematician has had exposure to programming they will not be well placed to tell you what you want to know.

One final note of caution: I think you have to be careful when taking advice on this and other things, I know my humble education in GCSE History taught me the basics of qualifying what people say. Peoples' opinions can be subject to bias and blatant inaccurate reasoning. Be warned!