# Math Skills For Programmers — Necessary Or Not?

#### samzenpus posted about 4 years ago | from the who-needs-theory-when-you-have-practice dept.

609
An anonymous reader writes *"Currently, the nature of most programming work is such that you don't really need math skills to get by or even to do well; after all, linear algebra is no help when building database-driven websites. However, Skorks contends that if you want to do truly interesting work in the software development field, math skills are essential, and furthermore will become increasingly important as we are forced to work with ever larger data sets (making math-intensive algorithm analysis skills a priority)."*

## Given two programmers (5, Insightful)

## Anonymous Coward | about 4 years ago | (#31607882)

The one with more math is the one you want.

## Re:Given two programmers (0, Insightful)

## Anonymous Coward | about 4 years ago | (#31607890)

damn....

I almost got my first first post

## Re:Given two programmers (5, Insightful)

## Fluffeh (1273756) | about 4 years ago | (#31607928)

Can I google and find the formulas? Sure, yeah, but do I have the level of understanding with all of Kelper's Laws and bits to change them to what I want for my game? Nope.

Anyone who says that maths isn't needed for a programmer is utterly kidding themselves - or working at the low end of the food chain.

## Re:Given two programmers (4, Funny)

## Thanshin (1188877) | about 4 years ago | (#31607976)

do I have the level of understanding with all of

Kelper's Laws and bits to change them to what I want for my game? Nope.You needed to change that bit for your game?

## Re:Given two programmers (1, Insightful)

## juasko (1720212) | about 4 years ago | (#31608148)

## Re:Given two programmers (1, Interesting)

## Anonymous Coward | about 4 years ago | (#31608208)

The much more important item is that with a hard math background you are already well trained and prepared for abstract thinking.

While most programmers might not need to know how to prove that a holomorph transform maps an open set onto an open set (except if the transform is constant)

the amount of abstract thinking skills this kind of background provides makes a very superior programmer to a java-ape that cant think outside of his ide.

It is no coincidence that all big/good/important programmers have been matehmaticians and not computer scientists. (Knuth, et al)

## Re:Given two programmers (5, Insightful)

## ghostdoc (1235612) | about 4 years ago | (#31608108)

Actually the one with better people skills is the one you want.

Maths is great for some coding problems, I'm not saying it isn't, but you rarely bump into a commercial coding problem that requires any degree of serious maths. I've been commercial coding for nearly 20 years, and I've hit a maths problem 3 times (and the last two were solved by a half-day of Googling).

But you will bump into a people problem in commercial coding. Every. Single. Day. Knowing how to cope with those is massively more important (and Google can't help you with them).

But the article wasn't really talking about this. The article was talking about becoming a Great Programmer.

To become a Great Programmer, don't spend your days coding CRUD websites. You're never going to build/discover something amazing while doing commercial coding.

## Re:Given two programmers (4, Funny)

## lgw (121541) | about 4 years ago | (#31608132)

There's more to commercial coding than CRUD work, young Skywalker. This kernel API documentation was your father's, but now I pass it on to you.

## Not necessary (1)

## BadAnalogyGuy (945258) | about 4 years ago | (#31607888)

If you are a typical programmer, you'll be using libraries that already have the difficult math-y stuff worked out. If you can understand simple arithmetic, you've got all the math skill you need to be a programmer.

## Re:Not necessary (4, Insightful)

## Joce640k (829181) | about 4 years ago | (#31607910)

OTOH if you can't understand stuff like big-O notation you'll never be a good programmer.

## Re:Not necessary (4, Insightful)

## AuMatar (183847) | about 4 years ago | (#31608050)

You need to understand it, but how often do you actually analyze non-trivial algorithms (one that require more than counting the number of loops and multiplying by known algorithm times)? In a 10 year career I don't think I've ever done more than that. Not saying more math hurts, and its interesting in and of itself. Unless you're doing 3D graphics (which require trig and linear algebra), you rarely use more than basic algebra and some discrete math concepts. I honestly say I've never used calculus or differential equations professionally.

## Maybe it's cart horse... (4, Interesting)

## Joce640k (829181) | about 4 years ago | (#31608090)

Looking at whether math is necessary to be a good programmer could be like putting the cart before the horse. I think it's more likely that good programmers are usually good at math because that's they way their brain works.

## Re:Maybe it's cart horse... (1)

## AuMatar (183847) | about 4 years ago | (#31608106)

That's a good way of putting it. I'd also point out that programming and math are very similar- they're both formal languages for discussing abstract concepts. I'd think if you're one of those people who see a line of math and have to puzzle out each symbol individually, you'll have problems with programming. If you can actually think in terms of those symbols, you'll be able to do the same in $LANGUAGE_OF_CHOICE.

## Re:Maybe it's cart horse... (5, Insightful)

## lgw (121541) | about 4 years ago | (#31608164)

Heck, perhaps my favorite college course was the one where we proved the equivalence of various math and programming problems. The more ways you learn to think about problems, the less details like the "language of choice" matters, and the more you can think in terms of "what's the right tool for this job".

Plus, as Feynman noted, if you merely have a different toolbox than those around you, people wil think you're a genius, as you can often see immediate solutions to problems they've been struggling with for a long time (and the fact that the converse is true only comes up if you let it). Having a large toolbox has worked quite well in my career.

## Re:Maybe it's cart horse... (0)

## Anonymous Coward | about 4 years ago | (#31608260)

You can go on for ages about how maths is the "universal language". I sound like a university recruitment brochure, but it really is true about writing something along the lines of $\int f(z)/(z-a) dx=\ldots$ and being understood as well in Moscow as in Washington as in Brazzaville.

## Re:Not necessary (1)

## Unoriginal_Nickname (1248894) | about 4 years ago | (#31608206)

And to really understand big-O notation, you need to know quite a lot about real analysis.

Programming is 99% math, but if you've never had a rigorous mathematical education you'd never know it. Discrete math/combinatorics has been mentioned. You also have coding theory, set theory, ring theory (we do all math over a quotient ring), many ideas from linear algebra, graph theory. If you have a job that doesn't suck, you probably deal with numerical methods and number theory a bit (e.g. why Karatsuba's algorithm works, why Euler integration is terrible.)

Yeah, most programmers can probably hack out a solution to most problems without a lot of mathematics knowledge. The best part about reinventing the wheel is getting to decide how many sides it has.

## Re:Not necessary (1)

## saiha (665337) | about 4 years ago | (#31607940)

I would hope that people do not strive to be "typical programmers".

## Re:Not necessary (3, Insightful)

## BadAnalogyGuy (945258) | about 4 years ago | (#31607962)

Why not? The pay is good. The hours are reasonable. The work is easy.

There is a lot more to life than your job.

## Re:Not necessary (1)

## saiha (665337) | about 4 years ago | (#31608002)

That's true, and if someone is doing more with their life then I applaud them. But if you are spending 1/4 or more of your life doing something it seems to make sense that you would want to focus on improving that, and making it fun if possible.

## Re:Not necessary (0)

## Anonymous Coward | about 4 years ago | (#31608018)

I make it fun by hanging around the coffee machine and cracking jokes with my coworkers.

There's a guy down the hall who is a real egghead programmer. Been here at least 15 years. He does all the heavy lifting, and we just send the hard stuff down his way.

## Re:Not necessary (1)

## saiha (665337) | about 4 years ago | (#31608056)

That is the reason we should not discourage math/egghead programmers at all :)

## Re:Not necessary (1)

## beelsebob (529313) | about 4 years ago | (#31608094)

Because I could be doing something where the pay is great, the hours are 0 because I actually enjoy it, and the work is challenging?

There's a lot more to life than lounging about not exercising your brain.

## Re:Not necessary (0)

## Anonymous Coward | about 4 years ago | (#31607942)

so the real programmers write libraries all day then?

## Re:Not necessary (2, Insightful)

## Ihlosi (895663) | about 4 years ago | (#31608184)

If you are a typical programmer, you'll be using libraries that already have the difficult math-y stuff worked out.If you don't have any clue about what these libraries actually do, then they're basically as useful as a typewriter to a monkey. You don't need to reinvent the wheel every time, but at least you need to have a clue about how and why a wheel works.

## Re:Not necessary (4, Insightful)

## BadAnalogyGuy (945258) | about 4 years ago | (#31608204)

The documentation says what the libraries do.

I assure you, reading skills are critical to programming. To just about any job, actually.

## Absolutely (5, Insightful)

## deisama (1745478) | about 4 years ago | (#31607902)

Math KNOWLEDGE may be debatable, but Math skills are essential.

If you don't have the ability to break up and solve mathmatical formulas, how do you expect to be able to solve complex programming tasks?

Plus linear algrebra is awesome. And everytime I do anything even remotely 2d or 3d related, I always wish I had paid more attention in Geometry.

But more than anything, its good to know that there's an equation for that. Even if you don't remember what it is, or how it works, having the simple knowledge that it exists to look up is more than worth the time of taking the class.

## Re:Absolutely (1)

## Antony-Kyre (807195) | about 4 years ago | (#31607920)

YES! Math skills are essential. It's not what you know, but your ability to solve problems. Problem solving is the key. However, as you said, having knowledge is important too.

There can be two types of people. The math nerd (high math skills), and the programming geek. A combination of these would be great, but, who do you think would make it in the LONG RUN?

## Re:Absolutely (4, Insightful)

## Thanshin (1188877) | about 4 years ago | (#31607944)

There can be two types of people. The math nerd (high math skills), and the programming geek. A combination of these would be great, but, who do you think would make it in the LONG RUN?

The first who marries the CEO's daughter.

## Re:Absolutely (5, Funny)

## Antony-Kyre (807195) | about 4 years ago | (#31608084)

That would be the math nerd... the one who knows how to multiply.

## Re:Absolutely (1)

## Ihmhi (1206036) | about 4 years ago | (#31608212)

Yes, but a programmer has extensive experience with children and parenting.

## Re:Absolutely (1)

## Noughmad (1044096) | about 4 years ago | (#31608140)

## Reminds me of a quote (2, Interesting)

## Moraelin (679338) | about 4 years ago | (#31608272)

Reminds me of a quote by Gene Fowler, "

Keep the company of bums and you will become a bum. But hang around .with rich people and you will end up by picking up the tab and dying broke".Especially given this kind of survival of the assholiest when it comes to who gets to be a CEO in the first place: Is Your Boss a Psychopath? [fastcompany.com]

Don't assume that these guys care about you just because you married their daughter. Not about that daughter in the first place. Or about anyone else than themselves, really. If they did, they wouldn't qualify as psychopaths in the first place.

Though it might be a start if you just want to be their pet sycophant. But then again, if you wanted to be someone's sycophant and were any good at it, you wouldn't need that daughter to rise through the ranks. And you'd have probably become an MBA not a math nerd or a programming geek.

## Re:Absolutely (1, Interesting)

## Anonymous Coward | about 4 years ago | (#31608278)

t in the LONG RUN?

The first who marries the CEO's daughter.

"In the long run" would suggest it to be the _last_ one to marry her...

## Re:Absolutely (0)

## Anonymous Coward | about 4 years ago | (#31608078)

As a professional C programmer working with Kernel programming and one who always had a large math interest... if I had spend all my years studying Math instead of Software Engineering... I would have been a better programmer today... what I lack is the knowledge of what mathematical transformations are possible to solve a problem in the *ultimate way*.

## Re:Absolutely (0)

## Anonymous Coward | about 4 years ago | (#31608210)

Depends on how you see maths. If you see maths as nothing more than a means to an end, then you probably ought not to do maths (yes I sound harsh, but consider that maths exists independently of Slashdot and programming). If you see it as a personal thing about seeing things a different way and appreciating it for its own beauty, then go right ahead.

## Re:Absolutely (1)

## ahaubold (1705608) | about 4 years ago | (#31607946)

## Re:Absolutely (2, Insightful)

## Hognoxious (631665) | about 4 years ago | (#31608040)

That's nothing to do with programming itself. That's to do with the subject you're programming about - the problem domain.

You could program perfectly well just knowing how to add, subtract, multiply and divide if you worked on (yawn) accounting systems.

## Ah there it goes again (5, Insightful)

## TheRagingTowel (724266) | about 4 years ago | (#31607906)

Another person who is ill defining mathematical thinking. I consider mathematical thinking not only Linear Algebra, Infi et al, but everything that requires exact abstract thinking and has the properties of consistency and a formal and defined "language" to represent ideas.

For that matter, I think that mathematical thinking should be defined more broadly, such as conceiving design ideas and representing them with, say, UML or DFDs as mathematical thinking as well.

So yes, mathematical approach is a must in programming.

Just my 0.02c of course.

## Re:Ah there it goes again (1)

## HNS-I (1119771) | about 4 years ago | (#31608134)

## Re:Ah there it goes again (1)

## julesh (229690) | about 4 years ago | (#31608142)

I consider mathematical thinking not only Linear Algebra, Infi et al, but everything that requires exact abstract thinkingExactly. You need to understand maths to, for example, predict what a particular SQL query will do, or to perform any more than the most basic reasoning about how two parts of a program will interact. Maths is a lot broader than dealing with numbers and vectors.

## Re:Ah there it goes again (4, Funny)

## TheVelvetFlamebait (986083) | about 4 years ago | (#31608232)

In a world where people contribute an ostentatious $0.02 to a discussion, you are contributing 0.02c. Your humility amazes me sir!

That, or you're just incredibly stingy. ;-)

## math skills essential (0)

## Anonymous Coward | about 4 years ago | (#31607912)

However, Skorks contends that if you want to do truly interesting work in the software development field, math skills are essential and furthermore, will become increasingly important as we are forced to work with ever larger data sets

Highly subjective - and it's not unreasonable to say that if the above holds for the field of computer science, then it pretty much holds for most other fields also. To do some truly interesting work, math skills are essential. Substitute your prefered value for "truly interesting".

## They Help (3, Insightful)

## ShakaUVM (157947) | about 4 years ago | (#31607916)

It really does help to have math. There have been times when a software solution became ten times easier because I recognized it from a college math class.

Contrawise, when I work on software that uses math beyond my ability, I have trouble debugging it, and constantly have to rely on the math person I'm working with for help.

## Well... (0)

## Anonymous Coward | about 4 years ago | (#31607918)

Do you mean programmer? Or script kiddy who can kludge together a crap program for windows or the web?

One WILL need math skills... Guess which.

## Ignorant (1)

## Josh04 (1596071) | about 4 years ago | (#31607932)

I bet you're one of those people who sat in English classes going 'ugh, when is *this* ever going to be useful?'.

## more than just 2+2 (3, Insightful)

## saiha (665337) | about 4 years ago | (#31607934)

I would hope that if you are in the computer programing world you understand that cranking out solutions to formulas is way more suited to computers than it is to humans.

If you want to solve a bunch of math problems then boot up maple, matlab, or any number of programs.

Doing a bunch of calculus or whatever is _not_ the reason that you want mathy people to be computer programmers. Analyzing and quantifying problems, applying appropriate algorithms, optimization, etc are all areas where someone who understands the math behind a problem can far outshine those who don't.

To be honest though I think most software devs are into math anyway.

## Re:more than just 2+2 (4, Informative)

## moteyalpha (1228680) | about 4 years ago | (#31607996)

## Needed. (1, Insightful)

## Anonymous Coward | about 4 years ago | (#31607938)

Whether the actual math knowledge helps or not, the act of learning the math imparts knowledge you'll need. Learning to learn is a skill.

## Math skills are becoming more important (5, Informative)

## TheKingAdrock (834418) | about 4 years ago | (#31607948)

## Re:Math skills are becoming more important (1)

## gravos (912628) | about 4 years ago | (#31608152)

## depends, becoming more important I think (0)

## Anonymous Coward | about 4 years ago | (#31607956)

I have a math degree and worked many years as a programmer without using any math at all. But in the past year or two I've had to use quite a lot, including hitting the books (well, the web) and learning a bunch that I didn't know before. The issue is large data collections, social networks, high volumes of web server logs, etc. Sure you can run logalyzer and find your most popular pages, but if you really want to figure out anything about user behavior, you've got to start using more serious statistical/machine learning methods, and if you want an advantage over the other guys, that means you have to be doing stuff that they're not, so you can't just run some canned package. You don't have to have the Google/AT&T/Microsoft research department at your fingertips, but you've got to be able to put through some mathematical analysis that applies to your own situation. By using just a bit of imagination and some home-cooked math from wikipedia, my underfunded 3-person group was able to beat the results of 100-person teams of corporate java monkeys. I think that is going to become more and more typical. Day to day programming work now hits problems with lots more mathematical angles than in the old days.

Want to know one of the hardest real world math problems that a regular programmer should care about? Look up "Netflix challenge".

## Re:depends, becoming more important I think (1)

## mikael_j (106439) | about 4 years ago | (#31608168)

Day to day programming work now hits problems with lots more mathematical angles than in the old days.

I have the opposite opinion and experience, if you go back 15-20 years and look at the state of software development back then it involved a lot more math for "day to day" programming, platforms where drawing a line across the monitor required writing your own function/subroutine which did the drawing and antialiasing where still quite common, these days you just do "import System.Graphics.Routines; Surface srf = new Surface(width,height); srf.DrawLine(x1,y1,x2,y2,color, width);" or something along those lines. This was of course just an example but it's true for a lot of stuff, back then you had to spend a lot more time optimizing your code as well, these days premature optimization is generally considered a bad thing (since in most cases it ends up being a waste of $500 worth of programmer time to squeeze out a performance gain that $50 in hardware would've have gotten you.

## Re:depends, becoming more important I think (5, Insightful)

## Ihlosi (895663) | about 4 years ago | (#31608234)

This was of course just an example but it's true for a lot of stuff, back then you had to spend a lot more time optimizing your code as well, these days premature optimization is generally considered a bad thing (since in most cases it ends up being a waste of $500 worth of programmer time to squeeze out a performance gain that $50 in hardware would've have gotten you.If you're planning to sell a million units containing both hardware and software, then "wasting" $500 of programmer time to save even $0.01 in hardware per unit is a really sweet deal.

## Necessary (0)

## Anonymous Coward | about 4 years ago | (#31607966)

'Higher math' in the traditional sense may not be a requirement, but discrete mathematics (http://en.wikipedia.org/wiki/Discrete_mathematics) has long been and continues to remain a highly-valuable (if not crucial) skill for any number of reasons. Many of its concepts map directly to programming constructs. Writing conditional statements based on boolean values? You're enjoying the wonderful world of boolean algebra. Want to use those randomly-generated numbers correctly rather than naively throwing them at a problem? An understanding of set-theory/probability subjects such as the principle of inclusion/exclusion is key. Do you need just one enumeration, or do you need a set of flags? Well, that depends on whether the group of characteristics you're differentiating between form equivalence classes (dividing your input into disjoint subsets) or not.

tl;dr mathematical concepts typically form the underpinnings of even programs that don't manage a single numeric variable.

## Flavors of Math - Simplex-Algo vs Countability (1)

## hashstamp (1685292) | about 4 years ago | (#31607968)

On the other hand I once took a course titled "Functional Analysis" which kicked off with discussions of countability and the Cantor set - IMHO a total waste of time, I'll never get those hours back.

## Re:Flavors of Math - Simplex-Algo vs Countability (0)

## Anonymous Coward | about 4 years ago | (#31608060)

Functional Analysis is supposed to be for mathematicians only.

It is necessary to have this course if you want to do Numerical Analysis 3 or higher (at my university).

So yes, for you it was a waste of time. For those who want to do research in numerical analysis (mathematicians mostly), it's a must.

## Re:Flavors of Math - Simplex-Algo vs Countability (1)

## u38cg (607297) | about 4 years ago | (#31608174)

## Math is not sufficient in most cases. (1)

## Nowhere.Men (878773) | about 4 years ago | (#31607970)

To develop algorithms, Yes, you will need math skills but that will not be sufficient. you will need also the knowledge of the dataset you want to process. You do not analyse Facebook data the same way as Afganistan images from UAVs or LHC events.

So you will have specialists that will tell you how the data need to be analysed.

You as IT specialist will need the basic math skills to apply what they told you to.

Math is not sufficient in most cases.

The best mathematician in the world will not be able to tell you how to simulate a galaxy or how to go from a diffraction pattern to the structure of a protein.

If it is these stuff that you want to code. CS is not the major you should have chosen.

## Re:Math is not sufficient in most cases. (1)

## TeXMaster (593524) | about 4 years ago | (#31608238)

To develop algorithms, Yes, you will need math skills but that will not be sufficient. you will need also the knowledge of the dataset you want to process. You do not analyse Facebook data the same way as Afganistan images from UAVs or LHC events.

So you will have specialists that will tell you how the data need to be analysed. You as IT specialist will need the basic math skills to apply what they told you to.

Math is not sufficient in most cases. The best mathematician in the world will not be able to tell you how to simulate a galaxy or how to go from a diffraction pattern to the structure of a protein.

If it is these stuff that you want to code. CS is not the major you should have chosen.

The question was not whether maths was sufficient, but whether it was necessary. If you had any math skills, you'd know the difference 8-P

## Anecdotally... (0, Offtopic)

## adolf (21054) | about 4 years ago | (#31607972)

I have no more than basic math skills. I don't do much programming, aside from the occasional butchered-together script. I can grok SQL, parse C, and write some shell script and Perl, but only infrequently do I find a need to.

But then, I only know what my job needs me to know, and that changes daily. I don't consider myself a programmer, but those around me in life seem to disagree.

That being whatever it is: Discuss.

## Re:Anecdotally... (0)

## Anonymous Coward | about 4 years ago | (#31608144)

Who cares?

## Create value in your brain (2, Insightful)

## Statecraftsman (718862) | about 4 years ago | (#31607978)

## Math skills essential? Of course, but... (1)

## lowlymarine (1172723) | about 4 years ago | (#31607998)

Math

skillsare undeniably important; but there's no denying that, as with a lot of things, many universities take it to illogical extremes, which is more likely the origin of any math antipathy in the CS community.## Re:Math skills essential? Of course, but... (0)

## Anonymous Coward | about 4 years ago | (#31608188)

For work (e-commerce website), I've used statistics, linear algebra, calculus, differential equations, category theory, operations research, and a bunch of other things that have been so internalized in the course of a comp sci degree and a decade of employment that I don't consciously think of them as math.

I'm pretty sure I haven't found group theory useful for anything yet, but who knows how long that will last.

## I aint taken to cypherin like my cousin Elly-Mae (1)

## NewtonsLaw (409638) | about 4 years ago | (#31608004)

I aint never taken much to cypherin but it t'aint stopped me hankerin to be a brain surgeon and that's whats I'll be, soon as I finish the fifth grade!

Signed

Jethro Bodine.

## Not really (1)

## should_be_linear (779431) | about 4 years ago | (#31608006)

## Necessary. (1)

## Draele (1693326) | about 4 years ago | (#31608008)

## YES! (0)

## Anonymous Coward | about 4 years ago | (#31608022)

What the fuck, computer science is the purest application of math! Software engineering is the usage of computer science to construct practical applications! YES, IT IS GOD DAMN NECESSARY!!!

## linear algebra < math (0)

## Anonymous Coward | about 4 years ago | (#31608028)

linear algebra is ONE PART in mathematics, but handling quantity operations (like on a database) is also an area of mathematics, so no matter what you do - math skills will help while programming !

Many unskilled people do make this mistake, so don't cry but keep learning.

## code monkeys (1)

## Mirar (264502) | about 4 years ago | (#31608042)

Since 99.8% of the "programmers" out there seems to get code monkey jobs where they have to translate an algorithm from one language (or diagram) to another, those don't need many skills at all. Especially not when protected by schemes like MISRA, code reviews and QA.

The other 0.2% wouldn't get the job unless they had skills. I hope. And math is probably included there somewhere.

(Figures totally out of the air.)

## Re:code monkeys (1)

## u38cg (607297) | about 4 years ago | (#31608182)

## No one answer (1)

## ashelton (826) | about 4 years ago | (#31608046)

## If you're asking... (2, Informative)

## vikstar (615372) | about 4 years ago | (#31608058)

If you have to even ask that question, then you won't get a programming job that requires math skills. You'll be the bottom of the barrel in your programming group, and then a few of years later promoted as their manager because you can't do any of the technical stuff but are great friends with the boss, or you'll end up doing system support swapping out tape backups and fixing printer jams.

## Re:If you're asking... (1)

## BadAnalogyGuy (945258) | about 4 years ago | (#31608076)

So to answer the real question: Make friends with the boss.

## Brain for Programmers - Necessary or Not? (0)

## Anonymous Coward | about 4 years ago | (#31608062)

As usually, the answer is "It depends, what exactly do you want to do?"

Just two examples for Programming where you need to know your math:

Scientific calculations / simulations -- definitely yes.

Computer Graphics -- here you need basic linear algebra

Strictly speaking, you can survive without being able to do basic arithmetic by yourself,

but then you will get the boring, stupid jobs that have no need for brains...

If you want to learn something, grab yourself a book on discrete mathematics, the stuff contained in

there will be mostly useful.

Remember: if you program something, and then try reason about whether it does what it's meant to do,

under any circumstances, you essentially use mathematics. That seems like a rather useful ability

for a Programmer to me...

## Logic is important (1)

## zr-rifle (677585) | about 4 years ago | (#31608066)

## Yes and no (5, Insightful)

## poor_boi (548340) | about 4 years ago | (#31608074)

"Programming" is a massive category. Some programmers need incredible math skills to do their jobs. Some programmers convert thousands to hundreds with broken substring operations [experts-exchange.com], then keep their jobs, and make good money doing it. So there's a spectrum.

But if I had to hazard a guess, I'd guess that the majority of programming jobs out there don't require very much mathematical heavy lifting. And often times if you do run into something that could be tricky, it's already been solved by someone else, complete with copy and paste source code.

Yet many programming jobs do require serious math skills, and probably (hopefully) always will.

TBH I don't know if some of the best software engineers I've met are any good at math. They're good at interpreting API documentation, good at structuring code to meet the strengths of the language they're using. Good at project planning, time estimation, and risk analysis. Good at understanding how computer and network systems work and -- often more importantly -- how they fail. They understand how users interact with software, and what users expect and want.

The truth is, software development has become as broad as life & human interest itself, and generalizations about the practice are becoming more and more meaningless.

## "Truly interesting stuff"? (0)

## Anonymous Coward | about 4 years ago | (#31608082)

Oh magnificant one, what is this "interesting stuff", and why is the stuff I'm currently doing (which isn't very math-heavy) not interesting? Seems rather subjective to me. For example, I like games, I like to play games.. A lot. That doesn't mean I want to labor all day building a game. What is "truly interesting" to you may just sound plain ol' boring to others.

## lamport on math and distributed systems (2, Interesting)

## Paradigma11 (645246) | about 4 years ago | (#31608100)

## Honest answer (0)

## R.Cad0r (612750) | about 4 years ago | (#31608102)

I can answer this honestly, I've been 'programming' nearly 30 years now, I make a very comfortable living, and I actually consider myself to be one of the best at what I do. But I have absolutely horrible math skills.

My math history consist of failing pre-algebra in 9th grade, having to suffer thru remedial math in 10th, an advancing all the way back to pre-algebra again in 11th grade. Where I went to school (GA in the 80's), the only required class in 12th grade was English, so no more math I took. Not that I was dense, I was actually in the gifted programs until I stopped caring about what school was teaching me, and was way more interested in what I was doing in my spare time on the computer.

Now I get paid to solve problems. Mainly big business problems that are worth millions of dollars to my clients. This rarely involves much math. My expertise lies in automating processes, integrating existing systems, and creating simple interfaces for people to work efficiently, with even less skills then myself.

I did eventually spend quite a bit of time teaching myself all the things I missed out on, like geometry and trig, but this was purely for personal reasons, I never use that kind of math in a business environment.

## You'll need mathematical concepts for everything (1)

## Arancaytar (966377) | about 4 years ago | (#31608104)

From sorting data efficiently, to calculating statistics, to drawing geometric shapes.

Programmers should cherish the mathematics and abstract thinking - it's the only part of our expertise that is guaranteed to remain useful until retirement, when all our favorite languages have become either obsolete or unrecognizable. (And visual interface design has been rendered obsolete by brain implants. :P )

## strange FA (1)

## roman_mir (125474) | about 4 years ago | (#31608122)

The thesis in TFA is that developers are mostly busy building CRUD code and 'websites' and that if you don't want to get completely tired of it 5 years down the road, you need to do other things, possibly just for yourself (because at work you only are building CRUD/websites) and then come up with problems where math is King, and this is so that you will get more 'respect' like those great software guys like Dijkstra, Knuth etc.

Well, I'd say if you are only doing CRUD/websites now and that's it, you should be concerned about your job 5 years down the road, that's the kind of stuff that gets automated/outsourced eventually. You are right, do something more than that.

The question really sounded like this:

I am bored with my job. Will it help me to get into heavy math and math related projects to fight this boredom I am experiencing at my work?

Answer:

Who knows? Will you find it personally satisfying getting into some heavy math stuff so you can be like Knuth and Dijkstra? Are you looking for recognition as a 'great' programmer or are you really interested in building stuff for yourself? Sounded more like you hate your job and you want to be famous to me :)

Maybe you should quit this and become a professional rock star; that will fix the boredom problem right up, if you are good of-course.

Or maybe you need to find a better job, so you don't work on CRUD/websites all the time?

Or maybe you should realize that working, having a job is kind of boring, it's not there to entertain you, it's there so you can make a living?

Or maybe you'll involve yourself in an interesting project, learn some math or whatever and become like Knuth or Dijkstra or Woz? Or like Gates? Who knows. But my gut feeling is that you are not really a math kind of guy if your primary motivation to learn more math is that you are bored of CRUD/websites job and not math itself :) so don't be too disappointed if any project you involve yourself into will degenerated into CRUD/websites kind of project quite quickly and not too much explicit mathematics will be used.

## Programmer (0)

## BlackHawk-666 (560896) | about 4 years ago | (#31608126)

I've been a programmer for 29 years now. First in BASIC, then PASCAL, MODULA II, C, C++, SQL, C#, and the usual web technologies.

In all those 29 years I have never once needed math skills beyond what an education to Year 12 in Australia provides. It's true I did do the math classes, so had exposure to differentials, matrices, vectors, and other mathy stuff - but none of that was ever needed.

What I did need was logic, algorithms, an understanding of how an algorithm executes on a given piece of hardware, and the ability to convert business requirements into lines of code.

I worked on a range of software which included custom written software for businesses, event driven presentation software, high availability online applications for the London Stock Exchange and FTSE, and tools to manage and value instruments for financial markets.

The financial market tool took the longest to release (1.5 years to phase 2) and had the most intricate math requirements. Of course, all the actually tricky math was in a library with came from Bloomberg, so the hardest part was coming to terms with the various instruments, storing them, linking to the library to get values out using curves, Black-Scholes, or whatever.

As for the best programmers being mathematicians, the single worst programmer I have ever worked with was on this project and he had a masters in Maths. His code was sloppy, poorly written, badly documented, and make itself dependant on an extra framework he decided to add to the program because he always used it. He was also spectacularly boring as a person. This was the first project I have ever asked to be removed from.

Seems like the writer of the article likes maths and is trying to come up with conclusions from there.

## Only needed for game development (1)

## mogness (1697042) | about 4 years ago | (#31608136)

## Set theory (1)

## Alioth (221270) | about 4 years ago | (#31608146)

Set theory (what you need to understand to make effective databases, for your "database driven website") is still mathematics. There's more to mathematics than linear algebra or differential calculus.

## Math vs logic (1)

## bguiz (1627491) | about 4 years ago | (#31608150)

People who are good at math tend to be good at logical thinking.

Similarly, people who are good at logical thinking tend to be good at math.

Relevance? To be a good programmer you need to be really really good at logical thinking - without it, you'd take way too long to "crack" a problem or devise a new algorithm or plan an inheritance hierarchy, etc. A strong background in math is therefore advantageous, but is not an absolute necessity.

It boils down to what exactly you are coding. If you are writing a specialised statistical tool or engineering software or..... no doubt math skills are essential. Otherwise, as several others have already pointed out, there's probably already a library that does the basic things for you.

Case in point: Let's say average Joe programmer is working on a GUI that displays statistics in the form of fancy looking 3D charts. Someone with really good mathematical knowledge of graphing techniques (not to mention the math involved with the 3D bits) created a library that has all the graphing functionality in it. Joe programmer comes along, with a relatively rudimentary knowledge of math, plugs the library into his GUI, and has to figure out how to use its API - overall, the task is quite easily accomplished.

However, let's say that Joe programmer was just a GUI that merely displays the statistics, but one which actually understands it and even does some highly specific detailed analysis of said statistics - then the situation would be completely different - Joe programmer would need to acquire the necessary math skills, before even being able to competently code the application.

## Depends on what you mean by "programming" (2)

## headLITE (171240) | about 4 years ago | (#31608166)

You don't need math skills for programming work.

You do need them for theoretical computer science, and in turn, you need theoretical computer science to invent something new that you could program. Most programmers don't do theoretical work themselves, and most theoretical computer scientists don't finish their software ;-) It's a completely different type of job.

## Strong Math Skills often get dumbed down (3, Insightful)

## DaScribbler (701492) | about 4 years ago | (#31608172)

## an estimate needs little math (1)

## r00t (33219) | about 4 years ago | (#31608176)

Count the loop nesting, look up any well-studied algorithms, and don't be a dummy about computation/storage hidden behind layers of object-oriented obfuscation. It's easy.

Seldom does anybody need to determine things down to the last byte or CPU cycle. You can't do that anyway unless you use something like assembly. In the time you might spend improving your estimate, computers will get faster and your software project will get later.

Just doing rough estimates puts you way ahead of everybody else, allowing you to avoid severe stupidity. BTW, remember that any libraries you depend on may become worse in future revisions, and you're screwed if you don't have the source code to fix it.

## No, but Logic is mandatory. (3, Interesting)

## unity100 (970058) | about 4 years ago | (#31608190)

most of programming inevitably consists of creating logic constructs in algorithms. if this happens it has to be that, but also if that happens with that and it also has to be this and that and so on. they constitute the backbone of programming. anyone lacking understanding of logic would have a hard time. the rest, can easily remedied - we have innumerable libraries, classes, frameworks performing many complex mathematical operations. its better to have very strong logic, and make up for the rest with this approach, and efficient. furthermore, you can receive interdisciplinary help, hell, even help from internet in that regard, if you come up with some problem that has to be solved with a math equation. a mathematician can also help you with that. but the rest, the logic part, you gotta be sharp at that.

## Imagination (1)

## lordmatrix (1439871) | about 4 years ago | (#31608196)

## How should I learn math? (1)

## 1s44c (552956) | about 4 years ago | (#31608216)

What I would like to know is what are the best resources to learn math? I find wikipedia's math pages are written in such a way that they are pretty near impossible to read, they are all technical accuracy and no explanation.

Are there better resources that don't involve taking 3 years off work to go back to university?

## Re:How should I learn math? (1)

## Fallingcow (213461) | about 4 years ago | (#31608270)

Wikipedia's entire mathematics section is pretty much useless for learning new concepts--its only value is as a reference for specifics about things one already understands well. Hell, even when I look up stuff I already know their explanations of it often make no sense to me.

MIT OpenCourseWare, maybe?

## Re:How should I learn math? (0)

## Anonymous Coward | about 4 years ago | (#31608280)

Wikipedia math articles tend to be terse and designed for people who need to look something up that they already know something about.

what are the best resources to learn math?

That depends on what you want to learn, and where you want to start, but there are some resources available at Wikibooks [wikibooks.org]. There's a lot missing there, but plenty to learn. If you want complete resources, I would suggest buying a book--for the full learning experience, possibly taking a class at a local community college or university (just one class, mind you). I don't know about other countries, but it is far from unheard-of in the US (which by your singularization of math is probably your nationality if not your location).

## My degree is in history and classical studies (1)

## rpjs (126615) | about 4 years ago | (#31608218)

Next month marks my having worked professionally as a programmer for twenty years.

That is all.

## You need math(s) for DBs (0)

## Anonymous Coward | about 4 years ago | (#31608242)

How can understand database properly if you don't know Set Theory and Boolean Predicate Logic?

## Food Chain Pyramid (1, Insightful)

## Anonymous Coward | about 4 years ago | (#31608250)

Many of you are operating under the assumption that there isn't a need for lower-rung programmers.

Much of programming is understanding workflow, UI design and other things that don't involve complex math.

I'll take the guy who understands the APIs and doesn't know math over the guy who understands math and doesn't get the APIs.

## Programming is a very broad category.. (1)

## Seth Kriticos (1227934) | about 4 years ago | (#31608254)

Yes, you will have to have *some* understanding of math, but how much and what kind is really dependent on what you are developing. If it is a database fed, scripted web page, the required calculus won't be that much compared with a missile guidance system or a 3D rendering engine / driver (because it is a completely different problem domain).

In most development cases you have to break down complex problems to many simpler ones to make it maintainable. This breaking down strongly reduces the math complexity in most cases. Writing maintainable code is often more important than fiddling around with the fastest algorithm (but there are exceptions, few).

## Depends upon your field (1)

## AlecC (512609) | about 4 years ago | (#31608256)

Programming is not a monolithic field. It depends what you do. Obviously, if you work with large datasets, then there are some statistical things you have to do. On the other hand, in my field, embedded software, you don't usually get much further than simple multiply/divide loading estimates. If there is a complex algorithm, it comes from the field specialists. That said, I had to dig into the maths a bit to implement Raid6 - but it was still a matter of understanding someone else's work.

## Statistics not Maths (1)

## DrInequality (521068) | about 4 years ago | (#31608264)

For example, the TCP protocol is hopelessly broken for any real time communications yet countless real time applications use it. Same with the use of blocking IO models.