Become a fan of Slashdot on Facebook

 



Forgot your password?
typodupeerror
×
Math Programming

Math Skills For Programmers — Necessary Or Not? 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)."
This discussion has been archived. No new comments can be posted.

Math Skills For Programmers — Necessary Or Not?

Comments Filter:
  • by Anonymous Coward on Thursday March 25, 2010 @03:58AM (#31607882)

    The one with more math is the one you want.

  • by Anonymous Coward on Thursday March 25, 2010 @04:00AM (#31607890)

    damn....

    I almost got my first first post

  • Absolutely (Score:5, Insightful)

    by deisama ( 1745478 ) on Thursday March 25, 2010 @04:04AM (#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.

  • by TheRagingTowel ( 724266 ) on Thursday March 25, 2010 @04:05AM (#31607906) Homepage

    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:Not necessary (Score:5, Insightful)

    by Joce640k ( 829181 ) on Thursday March 25, 2010 @04:06AM (#31607910) Homepage

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

  • They Help (Score:4, Insightful)

    by ShakaUVM ( 157947 ) on Thursday March 25, 2010 @04:06AM (#31607916) Homepage Journal

    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.

  • by Fluffeh ( 1273756 ) on Thursday March 25, 2010 @04:08AM (#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.
  • more than just 2+2 (Score:4, Insightful)

    by saiha ( 665337 ) on Thursday March 25, 2010 @04:09AM (#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.

  • Needed. (Score:1, Insightful)

    by Anonymous Coward on Thursday March 25, 2010 @04:11AM (#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.

  • Re:Absolutely (Score:5, Insightful)

    by Thanshin ( 1188877 ) on Thursday March 25, 2010 @04:11AM (#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:Not necessary (Score:3, Insightful)

    by BadAnalogyGuy ( 945258 ) <BadAnalogyGuy@gmail.com> on Thursday March 25, 2010 @04:14AM (#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.

  • by Statecraftsman ( 718862 ) * on Thursday March 25, 2010 @04:16AM (#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).
  • Re:Absolutely (Score:2, Insightful)

    by Hognoxious ( 631665 ) on Thursday March 25, 2010 @04:26AM (#31608040) Homepage Journal

    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.

  • Re:Not necessary (Score:5, Insightful)

    by AuMatar ( 183847 ) on Thursday March 25, 2010 @04:28AM (#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.

  • Yes and no (Score:5, Insightful)

    by poor_boi ( 548340 ) on Thursday March 25, 2010 @04:32AM (#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.
  • by ghostdoc ( 1235612 ) on Thursday March 25, 2010 @04:40AM (#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.

  • by juasko ( 1720212 ) on Thursday March 25, 2010 @04:49AM (#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.
  • by lgw ( 121541 ) on Thursday March 25, 2010 @04:52AM (#31608164) Journal

    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.

  • by DaScribbler ( 701492 ) on Thursday March 25, 2010 @04:55AM (#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'.
  • Re:Not necessary (Score:3, Insightful)

    by Ihlosi ( 895663 ) on Thursday March 25, 2010 @05:00AM (#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 (Score:4, Insightful)

    by BadAnalogyGuy ( 945258 ) <BadAnalogyGuy@gmail.com> on Thursday March 25, 2010 @05:05AM (#31608204)

    The documentation says what the libraries do.

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

  • by Ihlosi ( 895663 ) on Thursday March 25, 2010 @05:14AM (#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.

  • Food Chain Pyramid (Score:1, Insightful)

    by Anonymous Coward on Thursday March 25, 2010 @05:19AM (#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.

  • Re:code monkeys (Score:3, Insightful)

    by tehcyder ( 746570 ) on Thursday March 25, 2010 @05:37AM (#31608320) Journal

    (Figures totally out of the air.)

    I think you need some statistics training :-)

  • by smallfries ( 601545 ) on Thursday March 25, 2010 @05:47AM (#31608350) Homepage

    but everything that requires exact abstract thinking and has the properties of consistency and a formal and defined "language" to represent ideas.

    So you have redefined "maths" as computer science : the study of formal languages and their computational properties....

    So yes, mathematical approach is a must in programming.

    ... and then you point out that programming requires your redefined maths, which is actually CS. So yes, programming does require CS.

  • by MrNaz ( 730548 ) on Thursday March 25, 2010 @06:03AM (#31608408) Homepage

    Totally disagree. It has been found that the universe reflects math, and much discovery in the field of physics is driven by a previous understanding of mathematical principles.

    Furthermore, there are extremely numerous cases where math skills come in handy for totally unexpected applications. For example, I learned about statistical concepts (standard deviation, interquartile ranges, median, mode, mean, etc) long before I had any application that actually meant anything in my life. In the 11 years since high school, I've lost count of the number of times that that has been useful. From analyzing web statistics to finding patterns in sales in my shop, I've used these skills to great effect. This is even more the case with trigonometry.

    Math does not have to be limited by immediate application of the principles being taught, and doing so results in an unnecessarily constrained syllabus that denies students skills that they may find useful later in life. Mathematics' usefulness just appears in front of you as you go through life encountering problems, assuming you have the skills.

  • by HungryHobo ( 1314109 ) on Thursday March 25, 2010 @06:10AM (#31608432)

    Programming as a skill in itself is totally separate from most of those .

    But to be a good programmer you don't just have to be able to write good code- you have to be able to write good code which does useful things and unless you have a decent understanding of a few of the above you're going to be missing a number of very useful and powerful tools.

  • Divide by Zero (Score:1, Insightful)

    by EdgeyEdgey ( 1172665 ) on Thursday March 25, 2010 @06:14AM (#31608448)
    What do you do to avoid divide by zero errors?
    • Don't spot them
    • Spot them, but ignore them
    • Return 0
    • Return error
    • Replace 0 with 0.00000000001
    • Go back to the original equation and solve the singularity

    Mathematics is essential so that you can spot when things will break, and how to fix them. You can't program solid algorithms without it.

  • by jawtheshark ( 198669 ) * <slashdot@nosPAm.jawtheshark.com> on Thursday March 25, 2010 @06:15AM (#31608450) Homepage Journal

    But IMO math should be physics driven.

    No, absolutely not... Physics uses Math: Physics without Math is unthinkable. Math without Physics is absolutely possible. There was pretty much maths before physics. The old Greeks were more Mathematicians than Physicists.

    There is little need for calculatign stuff you don't know what it's your calculating.

    I present to you Complex Numbers [wikipedia.org]. For all intents and purposes we don't know what we're calculating *but* they are used in all kinds of engineering to find actual useful results. (Scroll down to the Applications part). Understand that Complex Numbers were first, then came the applications.

    I am by no means a Mathematician and I wasn't a big fan of it in school, but loved physics and excelled in it. In a way, I was like you, but I understand that Maths is used in Physics but not limited to Physics.

    Finally: Obligatory XKCD Link. [xkcd.com] (Of course, if you feel bitter about this comment, read the mouse-over text)

  • yes, you need math (Score:3, Insightful)

    by AlgorithMan ( 937244 ) on Thursday March 25, 2010 @06:16AM (#31608452) Homepage
    • Just look up, what the "relational" in "relational database" means... it stems from purest mathematical logics!
    • You need linear algebra and even up to full algebra (anisotropy) for 3d engines
    • artificial intelligence has lots to do with mathematical logic
    • most optimization problems have to do with graph theory - and logic
    • randomized algorithms: pure probability theory
    • string processing, regular expressions, compiler generation: lots of automata theory (which is closely related to graph theory)
    • deep, deep analysis for running time bounds (esp. for recursive programs)
    • lots and lots of logic for semantics
    • etc. etc. etc.

    without profound knowledge of math, you are a tinkerer. you program off the top of your head. To really, deeply understand what you are doing, you need math!

  • Re:Not necessary (Score:3, Insightful)

    by Opportunist ( 166417 ) on Thursday March 25, 2010 @06:34AM (#31608508)

    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.

    Yes, but you at least know of big-O notation and what it means. You know that the "cost" of an algo can be measured and calculated. And that it's important.

    There are far too many "programmers" out there who don't even know that.

  • by Antiocheian ( 859870 ) on Thursday March 25, 2010 @06:41AM (#31608530) Journal

    people who are almost universally respected in our field as great programmers are also great mathematicians. I am talking people like Donald Knuth, Edsger W. Dijkstra, Noam Chomsky, Peter Norvig.

    I don't think these are great programmers. My respect for programmers goes to Phil Katz, Steve Gibson, the author of the Dark Avenger Mutation Engine and generally the people who consider their work to be an art form of elegance, minimalism and speed.

  • math is no help? (Score:5, Insightful)

    by l3v1 ( 787564 ) on Thursday March 25, 2010 @06:51AM (#31608568)
    linear algebra is no help when building database driven websites

    Oh for [whatever]'s sake, who on this earth started spreading the "wisdom" that all apps are database-driven web applications that do nothing more than displaying user-input two-line texts with images and videos?

    I could list dozens of algorithms - even from my day-to-day use - that nobody on this earth would be able to correctly and efficiently implement without proper math skills. And even the term math is too broad, natural language-related stuff, image/video/vision content processing stuff, simulation stuff, overall machine learning stuff plus ai-related fields, control systems - and I could just go on forever - don't come without their associated - sometimes fairly deep - math topics.

    The social web will come and go, but apps and algorithms that do something even remotely useful, won't ever be accomplished by math-knowledge-lacking code monkeys.
  • by ascari ( 1400977 ) on Thursday March 25, 2010 @06:54AM (#31608586)

    Pizza analogy: You can't work in a pizzeria without profound knowledge of chemistry

    Car analogy: Automotive engineers are the best drivers, the rest are tinkerers

    General: Tool makers vs. tool users

    Just because most (all?) programming is based on mathematics it doesn't necessary follow that math is essential or even particularly important to the practice of programing. It could be argued that problem domain knowledge plays a similar role. For example, one could equally plausibly contend that without a profound knowledge of banking you shouldn't write banking software. In my experience hiring managers prefer domain knowledge over generalist skills such as math. Personality is another biggie.

    I suspect that the tone of this thread is reflecting the prevalent commodization of programming. We wish that smarts, maths skills etc. are important factors, so we can feel good about ourselves, feel smart, important whatever. In reality very few of us will ever again have jobs where math skills are truly important. Dumbing down? Maybe. Some might see it as a natural consequence of the fall of the "priesthood" that ruled computing decades ago.

  • by epine ( 68316 ) on Thursday March 25, 2010 @07:01AM (#31608624)

    Leslie Lamport's contributions should be more widely appreciated. He has the knack for reasoning very hard about apparently simple problems that aren't as simple as they first appear. This is a distinct mathematical talent from being able to solve tricky integrals. It's surprisingly hard to reason about computational processes in a completely convincing way. The effort does wonders for the correctness of my embedded code. Note that with the modular behaviour of integers, the normal rules of algebra don't always apply (this shows up most often dealing with pygmy integers).

    Long ago when I was a beginning C programmer I managed to implement a simple binary tree in a wonky way. My comparison operator was deterministic, but didn't form a full order. The tree seemed to work fine. I could add elements and test for membership, it was all golden. Then I tried deleting an element. This worked. But I noticed something funny about the tree afterwards. Since my comparison operator was not a full order, the tree rebalance operation following a deletion could orphan some elements so that they wouldn't be found.

    I showed this to a coworker who told me "What are you worried about? It mostly works doesn't it? Your tree insert and membership test passes doesn't it? We need to move onto another task." But I was stubborn and a voice inside me went "this can't be right". Element inserts and searches in that system were common (like #define in C) but deletions were fairly rare (like #undefine in C). That broken code could have been out in the field causing nightmares for a long time before we tracked the problem down. Half an hour of consternation later, I had figured out how I butchered the order operation in violation of the full order requirement. I had cases where A B && B C && C A. This is not good for a binary tree with deletion. The nasty part is that it limps along further than you expect.

    In that same job I had an improperly initialized pointer that scanned through a memory data structure comparing on a string field on some odd field size such as 23 bytes. (Sue me for my youthful indiscretion if you've ever had to label diskettes by compiler phase). Strangely, the pointer scanned several hundred k of memory not part of the table, then properly aligned with the table it was supposed to find, and returned the correct field. It seemed to work under testing, but I noticed the performance was a bit odd in some cases. This lead me to investigate and I found the unitialized pointer. Once again, if this code had been released, it was a ticking time bomb the first time some random values in low memory simulated a match with the search key.

    I learned a lot in that job about defensive programming. A couple of years later I came across one of Dijkstra's books and the spark jumped from his finger to mine. Bugs have been a rare event in my code ever since. Dijkstra taught me to think properly about all possible orders of statement execution where the program remains correct. The order you first write isn't necessarily the only one that works. The mental discipline is a lot like classifying all the components in your BBQ kit into formal symmetry groups before you begin assembly. It pisses me off immensely when I miss some obscure drill hole and conclude that two panels are entirely identical, only to discover much later they weren't (usually after I've pounded in those flimsy plastic wheels that resemble a hip joint with rickets).

    Try next time *before* assembling the BBQ to formally write down the symmetry group for every little flim flam and see if you can still F up the first assembly. I bet you can't.

    What it comes down to is that math is an attitude as much as a skill. I tell my GF from time to time that math is fundamentally the attitude that 100% of what you don't understand is smaller than a grain of rice. How many programs have I screwed up because of a big mathematical mistake? Can't think of any. Going way back, how many times have I screwed up

  • by Nerdfest ( 867930 ) on Thursday March 25, 2010 @07:04AM (#31608638)

    into a form a computer can understand.

    Having algorithms written in a form humans can understand is just as important in most cases. Someone who writes an unmaintainable implementation of an algorithm may be a good mathematician, but they're not a good programmer.

  • bottom line (Score:3, Insightful)

    by AlgorithMan ( 937244 ) on Thursday March 25, 2010 @07:12AM (#31608658) Homepage
    the bottom line is: yes, you can use libraries (for this, you don't need much math), but to be a GREAT programmer, you need to be able to program things yourself (for this, you need math). If you can only piece together other peoples code (which you don't even remotely understand), then you are a tinkerer. It will be complete coincidence, when your code works reliably and fast.
  • by ByOhTek ( 1181381 ) on Thursday March 25, 2010 @07:29AM (#31608718) Journal

    I'm guessing he meant that you understand the physics conceptually first, and then learn the math that represents it, that way you have a motivation for learning the math and it is more interesting.

    I'd tend to agree with that. Most physics can be understood conceptually without the math, but when you understand the math you can move from qualitative descriptions/predictions to quantitative.

  • by Anonymous Coward on Thursday March 25, 2010 @07:43AM (#31608768)

    CS is merely a *subset* of maths.

  • by NekSnappa ( 803141 ) on Thursday March 25, 2010 @07:44AM (#31608774)
    Come on now. This is /. everything must be stated in absolutes.

    As in, "My opinion is absolutely right, and yours is absolutely wrong"

  • by Anonymous Coward on Thursday March 25, 2010 @07:58AM (#31608820)

    However, Skorks contends that if you want to do truly interesting work in the software development field, math skills are essential

    Oblig
    http://xkcd.com/703/

    You see, he's a math geek saying its interesting work because of the math involved.

    Personally, his view of 'interesting' bores the shit out of me.

  • by TheLeopardsAreComing ( 1206632 ) on Thursday March 25, 2010 @08:08AM (#31608892)
    I write a lot of software for experimental physics applications, statistics is absolutely vital for data analysis software... Calc is essential for PID control methods as well. It really depends on what you want to do, but having higher level math skills will make you a better programmer in the long run.
  • by Livius ( 318358 ) on Thursday March 25, 2010 @08:32AM (#31609060)

    There's no reason that "most programming work" and "truly interesting work" would have anything in common.

  • by Aceticon ( 140883 ) on Thursday March 25, 2010 @08:36AM (#31609102)

    As selection criteria, Professional Experience/Proven Skill pretty much trump everything else.

    (Think about it, who would you rather have, the guy with 10 years Software Engineering experience in the field or the one just fresh out of university with a Maths Doctorate)

    After that you'll go for people which can work well in a team.

    Maths is a nice to have, but except for very specific domains (such as Quants and other positions where you're creating Algorithm engines), it will never outweight Experience and Teamwork skills.

    Most Sofware Engineering work out there is Algorithm-lite and instead is mostly based around Integration, User Interfaces and Workflow.

    That said, Maths is usefull in IT, some times quite unexpectedly. Having a strong Maths foundation does help a lot in understanding many things, especially at the highest levels of Software Engineering (Software Design and Architecture).

  • by BrokenHalo ( 565198 ) on Thursday March 25, 2010 @08:38AM (#31609118)
    A physics professor at my university said "Maths is an auxiliary science to physics."

    Interesting. I had a physics professor who insisted that physics is mathematics. Given that Stephen Hawking was Lucasian Professor of Mathematics at Cambridge for some 30 years, he might have had a point.
  • by AtlantaSteve ( 965777 ) on Thursday March 25, 2010 @09:03AM (#31609364)

    People are saying two things here, and thinking that they're mutually-exclusive. Some point to areas of commercial programming beyond basic CRUD operations, saying that math would be a big help there. Others point out that for standard CRUD and gluing together pre-written software libraries, math skill doesn't much matter either way.

    Hey, they're BOTH right. However, the trend is moving toward the latter type of programming job. Forget high-level math... I seldom use my COMPUTER SCIENCE skills on the job. I vividly remember participating in a code review session around 5 or 6 years ago. I started to point out why a particular function was inefficient, and wrote some O notation on the whiteboard. There were 8 Indian developers in the room, and they had no idea what O notation even was. There were three other Americans, and they had only vague memories of having seen it at one point back when they were in school.

    That was the day when I finally just "gave up". I now approach my professional life as the job that it is. I integrate Spring and Hibernate with your legacy system. I don't get too excited or worked up about it. I leave promptly at 5:00 each day. I'm well-paid for doing what feels like very little work. Most of all, I look for my intellectual stimulation outside of work (mostly on the clock... typical jobs let me spend half the day goofing off online). My point is that I have to disassociate modern programming from real intellectual pursuits, or else I'll get depressed over how trivial and boring this line of work is. If I DID know PhD levels of number theory, it would just be something else going to waste and I'd have to avoid being depressed about that too.

    Having a lot of math knowledge in most programming environments today would be like an experienced patent attorney posting on Slashdot. You'd be surrounded by people who LOVE to talk about your field, yet generally don't have a clue what they're talking about. They misstate basic ideas and rules constantly, and it irritates the hell out of you. However, they all THINK they're experts... and in fact know more about the field than you do.

    No thanks... I would pass.

  • by RulerOf ( 975607 ) on Thursday March 25, 2010 @09:29AM (#31609656)

    Math does not have to be limited by immediate application of the principles being taught, and doing so results in an unnecessarily constrained syllabus that denies students skills that they may find useful later in life.

    I agree. I wish it was easier or perhaps more common to teach the ability to apply more advanced mathematics to a situation when possible. I remember going through school you always heard the line, "We're never going to use this anyway," when referring to math anywhere above algebra, and I have to say that I generally agreed with it. There have been some advanced mathematical skills that I've used since leaving school, but they've all been applied inside of IT or programming, so perhaps I'm a bad example.

    My personal largest problem, though, has to do with literacy. Though I'm quite skilled with language, excessive comma usage notwithstanding, I find that when trying to read about advanced math or physics principles on Wikipedia for example, I'll see a theorem written using symbols and functions that I know were covered in the math classes I had in high school but I can't look at those same symbols and functions and turn them into words that accurately explain or describe the principle I'm reading. Perhaps I'm alone in that situation, but attempting to read advanced theorems and math does give me insight into what text must look like to illiterate people who still know their ABC's.

  • by Kjella ( 173770 ) on Thursday March 25, 2010 @09:30AM (#31609662) Homepage

    Heh. In my experience algorithms like these are those that have been really, really optimized for a computer and would royally suck to understand without comments. Personally I must admit I don't know any sorting algorithms, I could probably reinvent the bubble sort or the B-tree - poorly. What I do know is that if I use a O(n^2) algorithm with n=1000 and time it to 1 second, then doing it with 100,000 records would take (100000/1000)^2*1 second = 10000 seconds. If I have problems, maybe I should use another algorithm but it's still not one I'd write. I just know there are different tradeoffs for append/update/find performance and should have a clue what I want. You absolutely need not need to understand hand-edited assembly to pick the right one.

  • by pjr.cc ( 760528 ) on Thursday March 25, 2010 @10:28AM (#31610342)

    Basic math (i.e. 1+1 = 2) is obviously an absolute requirement.

    Algebra too is mostly a requirement (though if you did programming first, you'd probably find algebra alot less difficult cause you'd dealt with representative values).

    But thats where it ends for almost 99% of programmers. Programming is really about shuffling bits of data around and so you can get by with only those two skills. However, the rest are very useful depending on the field.

    For example trig and calculus are infinitely handy in any kind of spatial programming, but knowing vectors and transformations are often essential if your getting into 3d coding (though u can get by without it, if your using a library).

    The rest are usually straight forward and dependant on you already having the math skills. I.e. if your going to be coding something that deals with statisics, that you obviously need to know statistics.

    Ultimately, any math you know is to your advantage, but not really essential unless you dealing as a coder in a pure math realm (i.e. trying to implement a math algorithm within code). There are indeed many things you could code that are based on math without having to understand the math behind it.

    For example using rand() is easy, is based on math and you can use it without understanding it. You can also learn to understand the difference between random number generators without understand the theory of their operation, and indeed understand what the difference between strong and pseudo random number generators really is - again, without needing to know the maths of their operation and be a very effective coder.

    Another example if neural nets - its easy to understand their operation in terms of a pure coding exercise if your using someone elses neural net library - their operation is quite simple. Writing the library would require a reasonable amount of math intelligence though.

    There are huge numbers of example where these things are fundamentally true, things you may build on that are based entirely within the math realm but understanding their mathematical operation is fairly irrelevant (but useful).

    What alot of people do think (and it annoys me no end) is that you should be able to reinvent the wheel constantly. This is a time waster. If your writing some program that uses a neural net, the only reason to know how to implement your own is if the several out there cant do exactly what you need. This is what most people do anyways, "gimme that library" and reuse peoples work - its the backbone of how we code and ultimately the world as we know it would be alot different if we didnt just use the library that does the thing we want rather then implementing our on constantly.

    But as i said, it depends on what you want to be as a coder. I would say having high-school maths in your head is going to cover 90% of coding jobs easily (i.e. 1+1=2 and algebra). I really dont know too many coders who need more then that myself.

  • by MrNaz ( 730548 ) on Thursday March 25, 2010 @11:22AM (#31611146) Homepage

    Yea, but when confronted by a bag of nails, trying to use a screwdriver is stupid.

  • by DMUTPeregrine ( 612791 ) on Thursday March 25, 2010 @01:10PM (#31613296) Journal
    Proofs are somewhat overrated: you CAN prove that code matches a formal specification, but you can't prove that the specification is correct.
    “Beware of bugs in the above code; I have only proved it correct, not tried it." -- Donald Knuth
    You're right about the maths being important though.

Receiving a million dollars tax free will make you feel better than being flat broke and having a stomach ache. -- Dolph Sharp, "I'm O.K., You're Not So Hot"

Working...