Beta
×

Welcome to the Slashdot Beta site -- learn more here. Use the link in the footer or click here to return to the Classic version of Slashdot.

Thank you!

Before you choose to head back to the Classic look of the site, we'd appreciate it if you share your thoughts on the Beta; your feedback is what drives our ongoing development.

Beta is different and we value you taking the time to try it out. Please take a look at the changes we've made in Beta and  learn more about it. Thanks for reading, and for making the site better!

Math Skills For Programmers — Necessary Or Not?

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

Math 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)."

Sorry! There are no comments related to the filter you selected.

Given two programmers (5, Insightful)

Anonymous Coward | more than 4 years ago | (#31607882)

The one with more math is the one you want.

Re:Given two programmers (0, Insightful)

Anonymous Coward | more than 4 years ago | (#31607890)

damn....

I almost got my first first post

Re:Given two programmers (5, Insightful)

Fluffeh (1273756) | more than 4 years ago | (#31607928)

I did the highest level of maths in my Australian higher school certificate, but didn't really do much in the way of physics at school or Uni. Even with what I am programming in my spare time (a space based build/conquer/explore type game) I am finding that I have to resort to buying coffee for friends that DID do physics and higher levels of maths at Uni to get some of the formulas I need to work out the things here. Also, I work with numbers ALL day pretty much at work (Senior Performance Analyst for a multinational) - so I ain't exactly derpa derpa derpa when it comes to numbers.

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) | more than 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) | more than 4 years ago | (#31608148)

I find physics more important than math if I have to chose between them. But IMO math should be physics driven. There is little need for calculatign stuff you don't know what it's your calculating. So understanding first method second. Often you can figure out a method if you have the understanding first. That is much how i did physics though being the lazy one not always attending class missing out on some formulas and so. But usually I could figure out a way to come to the result in the tests. Maybe it wasn't the cleanest or simlpest way of calculating, but it's the problem solving and understanding that is meassured int the tests. Or should be if your teacher is worth a penny.

Re:Given two programmers (1, Interesting)

Anonymous Coward | more than 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) | more than 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) | more than 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) | more than 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) | more than 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) | more than 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) | more than 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) | more than 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) | more than 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 | more than 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) | more than 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) | more than 4 years ago | (#31607940)

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

Re:Not necessary (3, Insightful)

BadAnalogyGuy (945258) | more than 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) | more than 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 | more than 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) | more than 4 years ago | (#31608056)

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

Re:Not necessary (1)

beelsebob (529313) | more than 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 | more than 4 years ago | (#31607942)

so the real programmers write libraries all day then?

Re:Not necessary (2, Insightful)

Ihlosi (895663) | more than 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) | more than 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) | more than 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) | more than 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) | more than 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) | more than 4 years ago | (#31608084)

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

Re:Absolutely (1)

Ihmhi (1206036) | more than 4 years ago | (#31608212)

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

Re:Absolutely (1)

Noughmad (1044096) | more than 4 years ago | (#31608140)

Math nerd, programming geek, marries? Really?

Reminds me of a quote (2, Interesting)

Moraelin (679338) | more than 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 | more than 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 | more than 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 | more than 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) | more than 4 years ago | (#31607946)

I totally agree. Especially when it comes to implementation of complex problems. Another part is graphical development. If you have do render or mess around with voxels, shaders and textures you truly need a solid basis of math.

Re:Absolutely (2, Insightful)

Hognoxious (631665) | more than 4 years ago | (#31608040)

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.

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) | more than 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) | more than 4 years ago | (#31608134)

I agree but you've just reversed the transitivity. I would say that mathematical thinking would help in coming up with models and diagrams. UML and DFDs aren't abstract at all, they are super concrete. I know it's called modeling but that doesn't mean it's abstract. It's a very detailed mapping of what goes on for each level of business, organisation, informationflow, etc. To use those model to create other models and finally code, it is very beneficial to have mathematical insight so you can make analogs in your head.

Re:Ah there it goes again (1)

julesh (229690) | more than 4 years ago | (#31608142)

I consider mathematical thinking not only Linear Algebra, Infi et al, but everything that requires exact abstract thinking

Exactly. 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) | more than 4 years ago | (#31608232)

Just my 0.02c of course.

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 | more than 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) | more than 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 | more than 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) | more than 4 years ago | (#31607932)

> after all linear algebra is no help when building database driven websites.

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) | more than 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) | more than 4 years ago | (#31607996)

Absolutely. I do blender and if I didn't understand vector rotation and normals it would be virtually impossible to any good work. You can get the computer to do the heavy lifting, but you have to know what you are asking for. The advantage that exists now is that if anybody is weak on math skills, MIT and others have plenty of open course ware to cover the bases all the way to multi variable calculus.

Needed. (1, Insightful)

Anonymous Coward | more than 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) | more than 4 years ago | (#31607948)

...but it's not the kind of math you might be thinking about, like calculus, etc. Rather statistics, discrete math, combinatorics, etc. are becoming essential skills if you want to be better than average.

Re:Math skills are becoming more important (1)

gravos (912628) | more than 4 years ago | (#31608152)

Calculus is a foundational skill for analysis of algorithms [mit.edu] , which is a bare minimum requirement if you want to work with Google-sized datasets.

depends, becoming more important I think (0)

Anonymous Coward | more than 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) | more than 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) | more than 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 | more than 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) | more than 4 years ago | (#31607968)

Fond memories of the optimization-course I took based on Luenberger's "Linear and Nonlinear Programming", I think my mind was beneficially shaped by that although I've never directly used that knowledge for coding.
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 | more than 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) | more than 4 years ago | (#31608174)

That's because you've never used it were not shown its applications. Functional analysis is one of the most powerful weapons in the applied mathematicians toolkit - it's essential to quantum theory and financial mathematics, for example.

Math is not sufficient in most cases. (1)

Nowhere.Men (878773) | more than 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) | more than 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) | more than 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 | more than 4 years ago | (#31608144)

Who cares?

Create value in your brain (2, Insightful)

Statecraftsman (718862) | more than 4 years ago | (#31607978)

Math is necessary for programmers but also for life. That wasn't the best thing in TFA though. The most insightful nugget in this piece was that we should think strategically about what we choose to learn. One the one hand, a programmer can chase the buzz...Rails, Struts, and the Twitter API and get jobs with the cool kids. Far better is to learn general tools that will be around a long time. This is why I like free software and gnu/*nix. The community has built a core set of tools(scripting/database/web) that stands to be around for 20-50 years or more. Just something to think about as you build your programmer/sysadmin toolset (assuming programming/sysadmin work isn't just a temporary thing for you).

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

lowlymarine (1172723) | more than 4 years ago | (#31607998)

No one's going to argue that you need to understand arithmetic, basic algebra, maybe even some geometry, statistics, and trig depending on what you're doing. That's true frankly not just for computer science and IT, but for any even semi-technical field. But integral calculus? Differential Equations? Nonsense. But yet most colleges require two to three years of calculus for CS majors. A lot of this is probably because CS is part of the Engineering department and it's easier to just make the core requirements the same, and I'm sure a lot of it is just plain greed.

Math skills are 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 | more than 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) | more than 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) | more than 4 years ago | (#31608006)

For graphics you obviously need trigonometry. Lots of things we used to develop earlier is now available as free libraries. Much more important then advanced mathematics is, IMHO, having good estimation of how will certain solution or algorithm perform in various situations. This is developed in programmers head with time.

Necessary. (1)

Draele (1693326) | more than 4 years ago | (#31608008)

Even if you don't end up doing any actual high-level math, the ability to work with complex problems in a mathematical fashion is essential.

YES! (0)

Anonymous Coward | more than 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 | more than 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) | more than 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) | more than 4 years ago | (#31608182)

Which makes me wonder why the 99.8% are doing a CS degree. If you want to be a car mechanic, you don't do a mechanical engineering degree.

No one answer (1)

ashelton (826) | more than 4 years ago | (#31608046)

I think the correct answer is "it depends". Programming can cover an immense range of possibilities, some of which certainly use high level math and a lot of which don't. However it is also true that anything that requires a substantial amount of really high level mathematics should be written once as a library and then re-used.

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

vikstar (615372) | more than 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) | more than 4 years ago | (#31608076)

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

Brain for Programmers - Necessary or Not? (0)

Anonymous Coward | more than 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) | more than 4 years ago | (#31608066)

From my experience I found the understanding of Mathematical Logic [wikipedia.org] to be absolutely essential for any programmer.

Yes and no (5, Insightful)

poor_boi (548340) | more than 4 years ago | (#31608074)

Asking if math-skills are necessary for a programmer is kind of like asking if people-skills are necessary in the field of law. Some lawyers find success by performing in the courtroom and for the camera, while others find success in their skills with research, interpretation and analysis.

"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 | more than 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) | more than 4 years ago | (#31608100)

here is an interesting video with leslie lamport ( http://en.wikipedia.org/wiki/Leslie_Lamport [wikipedia.org] ) : http://channel9.msdn.com/shows/Going+Deep/E2E-Erik-Meijer-and-Leslie-Lamport-Mathematical-Reasoning-and-Distributed-Systems/ [msdn.com] "When you understand something, then you can find the math to express that understanding. The math doesn't provide the understanding." “The mathematics of computing; things like sets and functions and logic, are to computing what real numbers are to physics.”

Honest answer (0)

R.Cad0r (612750) | more than 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) | more than 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) | more than 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) | more than 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) | more than 4 years ago | (#31608136)

I am a C programmer for an equities clearing company. Basically we just work with a lot of data. Higher math skills are completely unnecessary. To go against the programmer stereotype, I don't have a great interest in math. Math, so far as I've seen, is only necessary if you work in the game development world.

Set theory (1)

Alioth (221270) | more than 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) | more than 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) | more than 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) | more than 4 years ago | (#31608172)

A coder with great math skills can write some really slick algorithms. However, more often than not, despite how well their algorithms are documented, if they're working with a team of developers they are usually pushed to dumb down their code so as to accommodate the skills of everybody else on the team ('team' more accurately meaning 'project manager') to make it more 'readable'.

an estimate needs little math (1)

r00t (33219) | more than 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) | more than 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) | more than 4 years ago | (#31608196)

I think more important ability than being good at math is having a very active imagination than can be focused and having the ability to think outside the box. Personally, I have a very active imagination and an open mind and I found them very useful so far in my software engineering.

How should I learn math? (1)

1s44c (552956) | more than 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) | more than 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 | more than 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) | more than 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 | more than 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 | more than 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) | more than 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) | more than 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) | more than 4 years ago | (#31608264)

That and an understanding that the real world keeps trying to break down the barriers of the nice abstract models that computer science likes to use.

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.

Load More Comments
Slashdot Login

Need an Account?

Forgot your password?