Slashdot Mirror


Math Skills For Programmers — Necessary Or Not?

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

609 comments

  1. Given two programmers by Anonymous Coward · · Score: 5, Insightful

    The one with more math is the one you want.

    1. Re:Given two programmers by Anonymous Coward · · Score: 0, Insightful

      damn....

      I almost got my first first post

    2. Re:Given two programmers by Fluffeh · · Score: 5, Insightful

      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.

      --
      Moved to http://soylentnews.org/. You are invited to join us too!
    3. Re:Given two programmers by Thanshin · · Score: 4, Funny

      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?

    4. Re:Given two programmers by ghostdoc · · Score: 5, Insightful

      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.

      --
      Business/App ideas are like arseholes: everyone's got one, they're mostly shit, but very rarely they contain a diamond
    5. Re:Given two programmers by lgw · · Score: 4, Funny

      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.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    6. Re:Given two programmers by juasko · · Score: 1, Insightful

      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.

    7. Re:Given two programmers by Anonymous Coward · · Score: 1, Interesting

      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)

    8. Re:Given two programmers by Anonymous Coward · · Score: 4, Funny

      Nooooooo!

    9. Re:Given two programmers by smallfries · · Score: 5, Informative

      I'd go further than that - most chunks of maths are things that are absolutely essential for some area of programming. You may not need to know everything all of the time, but for any particular task you will need to know some of this (non-exhaustive) list :

      Statistics - useful just about everywhere, but in particular if you have to do any kind of data analysis in your work. Knowing particular distributions and how to compute the properties of them is essential.

      Probability - if you use any kind of randomness in your work this is essential and in quite a few places where you don't deliberately use randomness but you are using non-determinism to model lack of knowledge i.e packing and filling of sparse data-structures.

      Algebra - the daddy. Knowing a simple formal language that lets you rearrange expressions is an essential first step towards understanding a programming language. The more you learn the more it will help. If you head down to the Category Theory end of the pool then Monads and Arrows come in useful if you swim away from imperative languages and find something more interesting.

      Logic - the other foundation. Learning to apply logic is relevant in any area of programming as it is an elementary part of programming. A deeper understanding of propositional and predicate logics is essential to do any work in compilers and will aid your understanding of control and data-flow in any language that you work in.

      Linear Algebra - anything that touches the "real world" requires a bit of LA, as the parent mentioned physics, 3D graphics and I would add Vision to that list.

      Set Theory - these are your basic building blocks, use them well. Whether it is building the right data-structure or using a database this is the foundation that you need to understand.

      Graph Theory - some people never need anything more complex than a relational database, but some people only care about the relations. If you want to model any large network (the internet, or social interactions, economics), or perhaps programs within a compiler, or just the relationships between discrete objects then you will either learn some Graph Theory first, or rediscover it yourself the hard way.

      Combinatorics - counting is fun! Counting (and enumerating in the programmer's sense) complex objects is basic problem that crops up in almost every area. For people without some grounding in combinatorics it is the kind of question that will get kicked up to the "office guru".

      Now, if only maths graduates could program their way out of a wet cardboard box, then we could truly start designing giant flame breathing killer robots.

      --
      Slashdot: where don knuth is an idiot because he cant grasp the awesome power of php
    10. Re:Given two programmers by laughing_badger · · Score: 1, Interesting

      Same length of commercial coding, and I hit maths problems every day - people problems, not so much. It depends on the field - space industry ground segments for me; you?

      --
      Help children born unable to swallow - www.tofs.org.uk
    11. Re:Given two programmers by MrNaz · · Score: 5, Insightful

      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.

      --
      I hate printers.
    12. Re:Given two programmers by HungryHobo · · Score: 5, Insightful

      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.

    13. Re:Given two programmers by blake1 · · Score: 1

      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...

      You might have had more luck if you were Googling "Kepler's Laws".

    14. Re:Given two programmers by jawtheshark · · Score: 5, Insightful

      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. 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. (Of course, if you feel bitter about this comment, read the mouse-over text)

      --
      Ahhh...the great dumpster continuum. Many a free computer will be found there. -- sowth (748135)
    15. Re:Given two programmers by Fluffeh · · Score: 1

      I wrote:

      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...

      You wrote:

      You might have had more luck if you were Googling "Kepler's Laws".

      *throws on Three Stooges Voice*
      Wise guy huh?
      *takes off Three Stooges Voice*

      --
      Moved to http://soylentnews.org/. You are invited to join us too!
    16. Re:Given two programmers by Opportunist · · Score: 5, Informative

      I dare to disagree. Programming is basically putting algorithms into a form a computer can understand. Nothing more. And where do these algos come from?

      It baffles me to no end every time I see "programmers" apply who consider math as some sort of secondary skill. It's not. It is the primary skill for a good programmer. I do not need someone who can "translate" my algorithm into code. I need someone who can take my problem and develop an algo for it. Coding it is the most trivial part of the solution.

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    17. Re:Given two programmers by Opportunist · · Score: 1

      Depends entirely on the team size. If he's the only programmer or if your team is small and without a dedicated lead, then I agree with you.

      If there is a team manager, a project leader, I don't care whether that progger has people skills. That's not his job, and any person going to him with their problem is addressing the wrong person. That's the job of a project manager.

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    18. Re:Given two programmers by DoofusOfDeath · · Score: 1

      Here's how I read the parent post:

      blah blah blah "so I ain't exactly derpa derpa derpa when it comes to numbers." [Hah! Australians are funny!] blah blah blah

    19. Re:Given two programmers by galorin · · Score: 1

      I have been programming for one year, sysadminning for the better part of ten years. Not a single programming day goes by where I am not working with mathematics. Sometimes it is low level stuff A + B /c^2 things, this last one though was implementing a timber Engineering equation, which integrates shear forces and bending moments, as well as environmental factors. I not just need to have a good understanding of raw mathematics, but also of a specific sector of Engineering in order to do my job.

      Yes, math is important for the really interesting stuff.

    20. Re:Given two programmers by Anonymous Coward · · Score: 0

      More like: The one who fails at basic math, is the one that you don't want as a programmer, but will work out all right as a manager.
      I mean, 2 years of programming is possible in 24 hours if you add more people, right?

    21. Re:Given two programmers by Anonymous Coward · · Score: 0

      It's not a question of having Math OR People skills. It's a question of having Math skills or not having math skills. Talking about people skills when the issue is math is a non sequitur, and one of those who is made by those who try to cover their shortcomings.

      And by the way, "people skills" also translates to "weasel your way out of the problems you created by shifting the blame and dumping them onto others".

    22. Re:Given two programmers by Nerdfest · · Score: 1, Insightful

      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.

    23. Re:Given two programmers by TaggartAleslayer · · Score: 1

      So, different positions have different requirements. That's the thing Slashdot leaves out more often than not. It's always either math is good or math is completely unnecessary. How about math is useful in applied fields and positions?

    24. Re:Given two programmers by Anonymous Coward · · Score: 0

      but you rarely bump into a commercial coding problem that requires any degree of serious maths.

      Maybe they don't necessarily require the math, but that doesn't mean they couldn't benefit from it. Or maybe, no offense intended, you just don't notice what you don't know.

    25. Re:Given two programmers by heidaro · · Score: 1

      A physics professor at my university said "Maths is an auxiliary science to physics." Even though he is kidding it is kind of true.

    26. Re:Given two programmers by Anonymous Coward · · Score: 0

      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.

      Asking the question: " Math Skills For Programmers - Necessary Or Not?" is like asking "Wheels for Cars - Necessary Or Not?". I suppose it depends on what you are doing but maths is about a lot more than differential equations and linear algebra and IMHO programmers would benefit immensely from even just the maths and math related stuff they teach BSc. level CS students. People skills are nice but Math skills are better if only because most of even the mundane tools you use in commercial coding such as databases and frameworks like spring and hibernate, etc.. are heavily based on discrete math and having a good math foundation is likely to help you write less naive and inefficient apps.

    27. Re:Given two programmers by outsider007 · · Score: 5, Funny

      My people skills would give your math skills a wedgie.

      --
      If you mod me down the terrorists will have won
    28. Re:Given two programmers by vanderbosch · · Score: 3, Interesting

      Those are all things I did as a CS undergrad, but there was also huge importance put on proofs. Everyone is talking about writing good code doing useful things quickly, but (and this is especially important in real time applications, such as autopilot on planes), if you can't prove that the code you have written is going to do what you want 100% of the time or its not 100% accurate, then really what is its worth. Maths is vital (ok not if your connecting up a website, although it does have applications in scaling and databases) and should be being used in the design phase even before the programming starts, that way people might be able to cut out buggy crappy software. I'm not sure how many people on my course got to grips with it, not many I think as most of then changed over to software engineering in our final year. I know I never did and I regret it.

    29. Re:Given two programmers by dkf · · Score: 1

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

      It's applied logic. Every other piece of math is only useful some of the time (even algebra!) but logic is utterly embedded throughout, and even a low-level programmer needs it. OK, maybe not the fancy parts of logic, but nor do most physicists need the fancier parts of math all the time.

      --
      "Little does he know, but there is no 'I' in 'Idiot'!"
    30. Re:Given two programmers by ByOhTek · · Score: 2, Insightful

      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.

      --
      Self proclaimed typo king, and inventor of the bear destroying coffee table (patent not pending).
    31. Re:Given two programmers by arth1 · · Score: 1

      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.

      This is only partially true, I believe. A well implemented algorithm should have to be maintained. The framework around the algorithm, sure, but if you have a need to modify the code of an algorithm itself, it was either not correctly implemented in the first place, or you try to be lazy and adjust an algorithm to fit your variables, instead of the other way around. (In the latter case, you're very likely to break elegance that once might have been there, as well as future maintainability.)

      But then again, a good programmer should be able to rewrite an algorithm too, without looking at the original code, so I think this isn't much of a problem overall.

      But then again, some people programme while others merely write code.

    32. Re:Given two programmers by Anonymous Coward · · Score: 0

      even if they are just writing a web front end for you? i think i'll choose the best programmer for the job, and if that means a maths requirement then so be it, but if not i won't weight the maths at all, thank you very much.

    33. Re:Given two programmers by stuckinphp · · Score: 0, Flamebait

      "I hate printers."

      totally ruined any sense of expertise you built up in the text.

      --
      if only
    34. Re:Given two programmers by NekSnappa · · Score: 2, Insightful
      Come on now. This is /. everything must be stated in absolutes.

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

      --
      I want to shoot the messenger!
    35. Re:Given two programmers by PRMan · · Score: 0

      In my experience, I couldn't disagree more.

      As a person who took Computer Science in college, I have never used any Calculus or Physics. I have worked in the health care, mortgage and law enforcement industries and it has never come up. Sure, there are times when an understanding of a math concept has helped, but those could be easily looked up and understood by most smart non-mathematicians.

      The three best programmers I know, who came up with incredibly clever algorithms and got large projects done in amazing ways were all high school dropouts. They were guys that were so smart that school bored them. They didn't need math to get things done, they had logic that was never trained but they were really clever and wrote very little code, because they figured out efficient ways to do things without code.

      On the other hand, we had a guy working for us that solved and unsolved math problem in his spare time! He was an amazing mathematician but a really average coder. His code was boring, poor and did things in the least elegant most straightforward way possible. It took him a long time to do things that were seemingly easy for many of the rest of us. Sure, his code worked, but there was nothing great about it.

      I would venture to say that if I were presented with equal programmers, I would take the guy who loves to code in his spare time for fun and has written something really cool where his eyes light up when he talks about it. Secondly, I would take the better artist, because finding really elegant coders who can make beautiful, logical and useful UIs is extremely rare.

      --
      Peter predicted that you would "deliberately forget" creation 2000 years ago...
    36. Re:Given two programmers by Anonymous Coward · · Score: 0

      Absolutely!!! Nothing makes you look more stupid as a programmer, if you're asked to write something that does basic math and the calculations are wrong...

    37. Re:Given two programmers by Anonymous Coward · · Score: 0

      If you work, you will run into people problems. Programming is no special case. Even if your social skills are well below average (like me), all you really have to do is be polite and mind your own business. Avoid conflict, even when you're right and they're wrong. Your work is still interesting, and you're still going home to what really matters at the end of the day.

      No, I'm never going to climb the corporate ladder by minding my own business and avoiding conflict, but on the other hand, the company has no choice but to judge me on performance alone. If your work speaks for itself, you have no problem.

    38. Re:Given two programmers by smpoole7 · · Score: 4, Interesting

      I dare to disagree. Programming is basically putting algorithms into a form a computer can understand. Nothing more. And where do these algos come from?

      It baffles me to no end every time I see "programmers" apply who consider math as some sort of secondary skill. It's not. It is the primary skill for a good programmer.

      .

      Absolutely. And an old dog like me can even provide a classic example: older OS's like DOS and CPM had to cram a lot of functionality into a relatively small amount of memory. They also had to perform decently on small, slow (by today's standards) processors. The approach that they used was the vector table.

      Simply put, the functions were numbered in order: get OS version was typically the first (function 0), and successive numbers were for all of the other important functions: open file, write file, get system time, and so on.

      Now: can you imagine how inefficient that would be if the original programmer had used a "switch" statement (or the assembly equivalent, with a bunch of "compare and jumps")? Instead, the function number was left shifted (equivalent to multiplying by a factor of two), then used to find an index in a vector table that contained the addresses of all the functions. Neat, compact and lightning-fast.

      This technique is still used today in small embedded processors that suffer from similar low speed and limited memory problems. I used it myself on a small controller in a contract job back in the 1990's. It allowed me to cram everything (read keyboard, activate relays, check temperatures, and more ... even including a quick and dirty "config" option ... in a PIC micro with 2048 bytes of memory. :)

      I have never met a really good, really world-changing programmer who wasn't also good at math. Not necessarily with high-end math, but just good at the fundamentals of algebra, and with the ability to "think" in numerical calculations and offsets.

      --
      Cogito, igitur comedam pizza.
    39. Re:Given two programmers by Anonymous Coward · · Score: 1, Insightful

      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.

    40. Re:Given two programmers by rhsanborn · · Score: 1

      DO NOT WANT!!!!!

      (sorry, we're outsourcing)

    41. Re:Given two programmers by Kagetsuki · · Score: 1

      That's absolutely not true. Particularly depending on what language you are talking about and what your application is. In *most* instances programming skill and technique will easily outweigh pure math skill. However, when developing things like 3D engines trigonometry, a thorough understanding of matrixes, and good knowledge of things like affine transformations are necessary. Other applications like signal processing will require calculus skills. Certain languages will also favor math knowledge (Erlang, to a degree OCaml) whereas straight up C/C++ really don't - and knowledge of how to write good data structures and how memory and pointers work will be useful whereas intense math skills won't really have any direct impact at all on code efficiency.

      And by the way, bitwise operators are usually faster than traditional math operators - so particularly for very tight embedded applications thorough knowledge of binary-specific operations can help you implement many operations more efficiently than simply pushing in traditional math.

    42. Re:Given two programmers by Anonymous Coward · · Score: 0

      To paraphrase Feynman "If we were to get rid of the field of mathematics, physics would be set back by about a week."
      The math provides the language and structure to build the predictive models that elevates physics above the likes of biology and psychology. Yes you can do math without some application but then how is it different then philosophy? If I remember correctly, Plato even stated that mathematics was one step below philosophy in usefulness. The best argument for research in pure mathematics is that it COULD be used in the future for some application.

      So let me conclude with my favorite quote from grad school (in physics) about how the two are intertwined. 'Physics without calculus is like sex without a partner.'

    43. Re:Given two programmers by juasko · · Score: 2

      Einstein did not find out what he found out by calculatign, first he understood the physics behind it after eh calculated for us the formula E=MC^2

    44. Re:Given two programmers by snd_chaser · · Score: 1

      I have to say, this has been my experience as well.

      15 years as a programmer, and I've almost never had to use anything I learned past high school algebra. The couple times I needed something more than algebra, and it was statistics.

      Programs should have more focus on statistics than calculus.

    45. Re:Given two programmers by juasko · · Score: 1

      Yes I do know this, It's not that I dont understand the realtion between them. Physics do require math. But before you start calulating friction or plank constant you need to know what it's your trying to figure out. You need a perpose four your math. But to be presice I do not belive math could exist without physics or wiser versa. Theorietically yes but without physics what would you use math for?

    46. Re:Given two programmers by Mongoose+Disciple · · Score: 1

      Yes, math is important for the really interesting stuff.

      It depends on what you consider to be interesting stuff.

      Working my current contract, I deal with what I would consider to be interesting business problems most days. None of them have a thing to do with math. (Yes, you can make an argument that computer science is basically math or that everything has to do with math somehow, but... no, not really.) Resolving these problems well does take skills that I didn't have as a fresh-out-of-college programmer, but I wouldn't call any of them math-related.

    47. Re:Given two programmers by The+Mighty+Buzzard · · Score: 1

      Eh, I'm pretty sure physics came first. Little things like sticking to a planet because gravity is holding you and an atmosphere there were fairly important to the development of the abstract concept that is math. Good old physics. Works the same whether you understand and study it or not.

      --
      Violence is like duct tape. If it doesn't solve the problem, you didn't use enough.
    48. Re:Given two programmers by Anonymous Coward · · Score: 1, Interesting

      I've got many years of c and c++ experience, very good skills in every math category you mention, and no job. While I agree that software often suffers due to developers' poor math skills, I don't think that math is necessarily very helpful from a career standpoint. It's my niche, being the only one I'm cut out for, but it's a narrow one.

    49. Re:Given two programmers by Aceticon · · Score: 2, Insightful

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

    50. Re:Given two programmers by BrokenHalo · · Score: 2, Insightful

      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.

    51. Re:Given two programmers by Anonymous Coward · · Score: 0

      I agree, especially with the last line. I have a bad math backround and I'm seeing the effects of missed opportunities at work ( I'm a prop DBA at a financial ). I had all the skills necessary to move on to a better position at work and missed out on two opportunities due to my lack of quantitative skills :-(

    52. Re:Given two programmers by jmknsd · · Score: 1

      I have a degree in Math and CS. The math degree doesn't seem to be helping me get accepted to grad school, or getting a job.

      Any idea what fields/companies would have a strong demand for a CS/Math person?

    53. Re:Given two programmers by Anonymous Coward · · Score: 2, Funny

      You can stick with your opinions. I will stick with the facts.

    54. Re:Given two programmers by PopeRatzo · · Score: 0

      Anyone who says that maths isn't needed for a programmer is utterly kidding themselves

      Math skills demonstrate more about a person than the ability to do math. They show the ability to deal with abstract, sometimes difficult concepts and the capacity to think creatively. I'm not talking about 200-level math courses, but about 400-level. If I was hiring someone, no matter the job, and saw that they had studied math at a level beyond the basic, it would differentiate them in my mind in a positive way.

      I was a punk as an undergraduate and neglected math studies because I saw myself as an artiste. Now I struggle with a brain 25 years older to try to learn combinatorics and numerical analysis. Not because I need them or because I want to be a mathematician, but because they are to thinking what tai chi chuan is to calisthenics. They are pure and abstract and beautiful. My work doesn't require math, I require math.

      Screw learning math to be a better programmer. Learn math to be a better soul.

      --
      You are welcome on my lawn.
    55. Re:Given two programmers by vtcodger · · Score: 1

      ***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.***

      The Greeks and Romans didn't have that much in the way of math really. Plane geometry, trigonometry -- that's about it. They didn't have calculus, cartesian coordinates, vector spaces, matrices, or even numeric notation that was easy to work with. Try division with Roman numerals some time. But they were still able to build big buildings, build bridges, figure out that the Earth was spherical and to calculate its diameter, and even propose a heliocentric model of the solar system.

      --
      You can't see ANYTHING from a car, You've got to get out of the goddamned contraption and walk...Edward Abbey
    56. Re:Given two programmers by B1oodAnge1 · · Score: 1

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

      Sociology is just applied History....but that doesn't really make me feel any better. :-\

      --
      RUGBYRUGBYRUGBY
    57. Re:Given two programmers by Anonymous Coward · · Score: 0

      Parent post was talking about general, almost philosophical concepts, and you reply with a highly specific, single instance that seems to (but actually does not) refute it? Well done.

      FWIW, Einstein never managed to practically demonstrate E=MC^2, the math came first. You even said "first he understood the physics behind it after eh (sic) calculated for us the formula E=MC^2" (emphasis mine). The matter/energy equivalence discovery was the result of mathematics, NOT advances in physics.

    58. Re:Given two programmers by JoeMerchant · · Score: 1

      Discrete maths (logic, proof by induction, etc.) is really underlying most of procedural programming, if you have that, Calculus, diffeqs, etc. are interesting gravy that comes up in a very few, though sometimes critical, junctures.

      In high school I used a logarithm to predict the outcome length of a base conversion string. It wasn't necessary, but it saved a bit of code, reduced a 5-10 line solution to maybe 2 or 3 lines. By contrast, the class (and teacher) who were doing base conversion without much grasp of the logical process were coming up with solutions in the several hundreds of lines. It's not that what they were doing was "wrong" - but it took them much longer to do it, and in the end it was much more error prone due to its sheer bulk.

      I know an installation line manager who makes 6 figures and (according to his wife) doesn't really know how to read - he can read the drawings that pertain to his responsibility at work, and more importantly, he knows how to get the people he is given to work with to do their jobs correctly. We have had a very competent appliance repair tech (as measured by the fact that his repairs stay working), who apparently thinks "wire" is spelled "wier," it doesn't seem to affect his work, but it probably is holding him back in other areas.

      So, no, you don't need to understand "higher maths" to be a programmer, or even to be a good programmer, but it doesn't hurt, and many of the math-snobs you end up working with will put you down if it comes out that you don't know what the derivative of sin() is.

    59. Re:Given two programmers by SWPadnos · · Score: 4, Funny

      Now that's funny.

      I had a professor who said it like this:

      Math is the only pure science
      Physics is chunky math
      Chemistry is wet physics
      Biology is gooey chemistry

      (or something like that)

      --
      - The Sigless Wonder
    60. Re:Given two programmers by juasko · · Score: 1

      you need a UI guy?

    61. Re:Given two programmers by Ukab+the+Great · · Score: 1

      I'd take the one with more psychology. Knowledge of how human memories are built and rebuilt is important for dealing with users who complain about bugs in features that were never implemented.

      And yes, you will encounter this as a programmer, especially if you inherit someone else's old legacy code.

    62. Re:Given two programmers by Anonymous Coward · · Score: 0

      I think you're confusing physics, the study of natural laws with the actual existence of those laws. Without physics we wouldn't understand the universe but it wouldn't stop working or disappear and we'd still have plenty of other applications for math too.

    63. Re:Given two programmers by Anonymous Coward · · Score: 1, Interesting

      Actually, he understood the math behind the physics and derived E=MC^2. Math is the language used to speak about physics. Physics cannot be done without math. Math can easily be done without physics.

    64. Re:Given two programmers by Anonymous Coward · · Score: 0

      Nope. It's the one that can use it best.

      75 / 100 beats 20 / 300. And whatever training and incentive you mete out, will probably - also - be better retained and applied by the former, rather than the latter..

      Besides, analysts and programmers have progressively being called upon to port area-specific knowledge into programs. They are expected to know beforehand the subject they're programming for, instead of 'wasting time' on 'what is this / how do you do this' analysis. Will it be easier for everyone to become a programmer in their area ? Maths is essential everywhere.

      Maths profficiency-understanding-use enhances every aspect of life. Life is full of flows, measures, quantities, ratios, relations, functions... You already have the natural firmware to deal with it. Formal maths just can give it power-tools and turbo-charges it.

      If you have formal maths, decently taught and learned, there's a "back room" in your brain adding estimates, calculations and prognostics - or just plain knowledge, understanding - to every perception of life. Automatically. Unconsciously.

      Hidden superpowers. For life (barring accidents and Alzheimer's, etc. :> ). -Who- wouldn't want everyone to have such enhancements ?

      Of course, the US system - mass producing idiot-savants and selecting them in mass trial-by-(educational)combat - has worked for quite a while.

    65. Re:Given two programmers by Yvan256 · · Score: 1

      It's related if we're talking about firmware for a popcorn machine.

    66. Re:Given two programmers by Anonymous Coward · · Score: 0

      Quantitative Finance.

    67. Re:Given two programmers by Anonymous Coward · · Score: 0

      The common thread in these is the ability to handle abstraction. If you can't do it, you can't program, and you can't do mathematics. Of course that doesn't formally imply that if you _can_ do one, you can do the other. But the correlation is high.

    68. Re:Given two programmers by RulerOf · · Score: 3, Insightful

      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.

      --
      Boot Windows, Linux, and ESX over the network for free.
    69. Re:Given two programmers by Kjella · · Score: 1, Insightful

      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.

      --
      Live today, because you never know what tomorrow brings
    70. Re:Given two programmers by ChronoFish · · Score: 1


      Right - because the math genius can relate to the end user so well
      </sarcasm>

      Whether a you want a "math person" or an "art person" is almost as ridiculous a question as "which is the best language to program in?"

      The answer is so problem specific that without the knowledge of what the goal is, any answer is speculative at best.

      If you're building a system that is inherently math based (CAD systems are the easy example) then yeah - lots of math.

      If you're building an app that shoves files around and loads databases - then math is practically unnecessary.

      If you're building an GUI interface to a social network app - then math takes a back seat to aesthetics.

      -CF

    71. Re:Given two programmers by jholzer · · Score: 1

      The study of physics doesn't need math. Humans were studying physics before they could talk. If I throw the rock this way it makes it to the tree. If I throw it a second way it makes it to that rock. I would consider that the study of physics.

      A lot of maths were created by physicists to study physics. No physics were created to study maths.

    72. Re:Given two programmers by Brian+Feldman · · Score: 1

      Er, yeah, I also work on space ground system software and "math" per se is in my experience so far not even close to the priority of what the developer needs in his skill-set.

      --
      Brian Fundakowski Feldman
    73. Re:Given two programmers by Jane_Dozey · · Score: 1

      Good point. As a programmer with very little taught maths (British high school level) I have to say I keep trying to improve myself and my maths skills so that I can write better code and design better systems. Maybe I'll try a bit of physics to help me along.

      --
      Silly rabbit
    74. Re:Given two programmers by mario_grgic · · Score: 1

      Sounds to me like you did not get too deep into either physics or math. It's easy to develop intuition about mechanical processes in the macro world. You can observe things and sort of figure it out.

      Things get a little weirder when you step into theory of relativity (much less intuitive) and intuition completely breaks down when you get into quantum mechanics, which is more like pure math than physics.

      Besides pure mathematicians do develop intuition about abstract mathematical theories with no "application" is sight. Pure mathematicians are willing to study properties of almost arbitrary axiomatic systems that have no bearing or "image" in observed universe (e..g non-eucledian geometries, but there are other examples).

      It is exactly this quality of the mathematically trained mind that has developed this fifth sense for mastering abstraction that is most valuable rather than the concrete pure mathematical/physical knowledge or its applications.

      A good mathematician will re-invent things on the spot when he needs them (and really good mathematicians don't learn proofs, but just key ideas, and they literally invent them on the spot in exam/application setting).

      And this is also the ability that is most transferable to other disciplines. Why is psychology, biology and things like mind understanding (we don't have a theory of mind to this date) still so backward? Precisely because people who do these disciplines are not trained and good at creating theories and models and abstractions. This is why recently the fields have tried to recruit mathematicians for some help.

      Computer science on the other hand is much much closer to mathematics itself and it's a natural extension of the field. Math skills are directly applicable to it. Yes, being a programming janitor may not require education of any kind, but personally I would hate to spend my whole life doing that kind of work.

      --
      As the island of our knowledge grows, so does the shore of our ignorance.
    75. Re:Given two programmers by Anonymous Coward · · Score: 0

      I dare to disagree. Programming is basically putting algorithms into a form a computer can understand. Nothing more. And where do these algos come from?

      If you call arbitrary business rules or pushing tokens from system to system algorithms; sure.

    76. Re:Given two programmers by Ultra64 · · Score: 1

      Why? Printers are shit.

    77. Re:Given two programmers by Anonymous Coward · · Score: 0

      While I actually agree that maths skills are essential for a half way decent programmer, I feel that I should point out that the programmer least able to think outside of the box that I've met, started out as a Mathematician. Really, he couldn't even figure out how to quickly google his way to finding out how to change the text color for his macbook terminal program or even connect to the wireless router. He also had problems understanding that just because something is a good idea doesn't mean it's what the client wants. Smart guy, capable enough programmer, but useless if you want to get on and do something useful.

      I'd also like to say that it's more likely that the big names in programming and computer science so far have been mathematicians, because computer science as a discipline is incredibly young and most of my professors couldn't do CS because it wasn't offered as a degree, so they went with physics or maths instead. I'd imagine that in 50 more years you'll see a lot less hard maths in CS. Of course, I still think it should be taught and that it would be incredibly stupid to allow maths standards to slip but the CS landscape will because a lot clearer that maths is used in CS but that CS isn't really a branch of maths.

    78. Re:Given two programmers by pnewhook · · Score: 2, Informative

      Physics *IS* math. However Math also includes algorithms and concepts that have no physical basis, or at least none discovered yet.

      --
      Tesla was a genius. Edison however was a overrated hack who liked to torture puppies.
    79. Re:Given two programmers by halowolf · · Score: 1

      I'm a computer programmer. And going by the reaction of my peers, a good one. I enjoyed science, physics and chemistry theory were easy for me, but I never had any aptitude for mathematics (though I could do some mean stoichiometry). Simple stuff wasn't a problem, logic, stats, discrete mathematics, translating mathematical equations into computer code, all the basics I can handle, but when it came to the complex stuff I was just completely useless at it. I could program neural networks, but when it came to things like calculus I could barely hang on while others found it easy.

      Everything says that I should be good at maths but I'm just not, but programming I have an aptitude for, the problem solving aspect of it, breaking things down, I just get. If I get a complex maths type problem to overcome in my job, then I know how to do the research to get me to a solution and get on with doing what I do best. I've finished systems that other programmers were fired from because they couldn't handle the complexity of what had to be done (and when I say finished, I mean I threw away what was there and started again because it was just so awful, just don't tell the boss lol).

      I've worked with super smart people whose maths skills dwarf mine, but have produced the most awfully complex code that just wasn't necessary to get the job done. My philosophy, keep it as simple as possible all the time. I've had interesting work which required some good maths work to get done, while it wasn't my forte, I at least have a skill set where I can research what I need to get to an understanding to get the job done.

      While I think TFA makes some good points, i don't think its the be all and end all if like me, your math just sucks, but you have an aptitude for programming itself.

    80. Re:Given two programmers by LateArthurDent · · Score: 2, Interesting

      Einstein did not find out what he found out by calculatign[sic], first he understood the physics behind it after eh calculated for us the formula E=MC^2

      Man, you have no idea what you're talking about. Einstein was having severe problems with General Relativity until his mathematician friend, Mercel Grossman, looked at what he was doing and pointed out, "hey, you need to describe this using these things called tensors.": look here

      Before that, Hermann Minkowski, a mathematician, had looked at Einstein's Special Relativity and thought, "hey...if we describe these things in four dimensions, these equations become really elegant." Yes, Minkowski space was derived from the physics, but the math dealing with higher dimensions than just three was around long before.

    81. Re:Given two programmers by BattleApple · · Score: 2, Funny

      :( Sincerely, Paul Kinko

    82. Re:Given two programmers by BrianRoach · · Score: 1

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

      Oh, I've worked at a place that does that.

      They don't get a whole lot done, and what they do get done generally doesn't work quite right.
      But the endless meetings... Let me tell you, they can talk about doing work really, really well.

    83. Re:Given two programmers by Bodhammer · · Score: 1

      I second this - I had a very good friend who was a math major. She helped me through calculus, I helped her through programming. We were both equally intelligent, practical, motivated people. I could "see" data structures and algorithms, she could "see" curves and proofs. Our brains just worked differently in these domains.

      --
      "I say we take off, nuke the site from orbit. It's the only way to be sure."
    84. Re:Given two programmers by Anonymous Coward · · Score: 0

      In my opinion, your facts are stupid.

    85. Re:Given two programmers by rgviza · · Score: 0

      Yup. The very concept of putting a value into a variable is math.

      Your programming ability is roughly limited by your math ability, especially when it comes to working visually. I've used graph theory, sets, lattices and all kinds of advanced math professionally. Even though I understand the stuff I still google it. If you don't go around thinking about the stuff all the time you tend to forget some details.

      Programming is nothing but math, though most of the dirty details have been abstracted. Without at least mid level training in advanced math, you aren't crap as a programmer.

      --
      Don't kid yourself. It's the size of the regexp AND how you use it that counts.
    86. Re:Given two programmers by Anonymous Coward · · Score: 0

      I'm in a similar boat maths wise. If it helps, I've found more and more that people who "get" calculus have only learned the methods in order to DO calculus. In my time at university I was keen to learn some more maths and so asked some of the people who had done maths at college (British college which is post high school but before university) about calculus. I found that while they could all work with calculus they couldn't answer most of my simple inquiries while I was trying to really understand it, mainly because they'd never actually been taught to understand what calculus is, just how to use it.

    87. Re:Given two programmers by dkh2 · · Score: 1

      There are 10 types of programmers.

      • Those who understand binary math
      • Those who don't
      --
      My office has been taken over by iPod people.
    88. Re:Given two programmers by rgviza · · Score: 1

      Without physics, you don't exist, let alone math. Math is simply a way to describe physics. The universe would continue to operate whether or not humans invented math to describe it. Physics could care less about math. Math only matters to people.

      --
      Don't kid yourself. It's the size of the regexp AND how you use it that counts.
    89. Re:Given two programmers by Anonymous Coward · · Score: 0

      The math and algorithms side of things is completely separate from actual programming. Most of the university graduates I've met have the math and algorithms, yet can't write 500 lines of code that does what it's supposed to. The "math experts" are frequently the ones who put code into production that isn't tested, has dozens of severe crippling bugs, and leaves gaping holes like SQL injection, etc.

      Almost every coder I've come across is either really good with the math and algorithm theory or else really good at programming. The majority of people are not good at both. I think it comes down to areas of interest. Those with the math skills prefer to invest their work time researching and playing with new equations/algorithms and spend precious little time actually learning how to code. Those without the math skills spend the majority of their time actually typing out code and learning from their mistakes.

      Both types of expertise are needed. Sometimes you need the guy who knows his math to most efficiently solve a specific problem. Sometimes you need the programmer who can hammer out decent code the first time around. Realistically, you're rarely going to find both expertises in the same person.

    90. Re:Given two programmers by Idarubicin · · Score: 1

      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

      I know the snap answer my gut wants to give, and I know the answer that the parent is looking for - and those two answers are the same - but something still gives me pause.

      It occurs to me that the fellow with the math PhD just spent the last four to seven years of his life learning how to use novel tools to solve difficult problems, and the fact that he managed to write a thesis suggests that he actually did learn a little bit about how to work in a self-directed manner on a long-term project.

      It also occurs to me to wonder why the guy with ten years of work experience is willing to work for the same money as the guy who's fresh out of school. Did I write the job description poorly, are someone's expectations poorly calibrated, did a local company go bankrupt, or is the guy with ten years' experience looking at entry-level positions for a less-than-flattering reason?

      Realistically, there are some projects that I would want the PhD on, and some for which I would prefer the highly-experienced software engineer.

      --
      ~Idarubicin
    91. Re:Given two programmers by Ihlosi · · Score: 1

      What about the other 0E?

    92. Re:Given two programmers by uberjack · · Score: 1

      Growing up, I hated math, but loved programming. I remember my parents telling me that I couldn't be a programmer without knowing math, and at the time I blew them off, thinking that they didn't know any better. Years passed, and I tried my hand at writing simple Java games, and quickly realized how correct my parents were. Even basic things required moderate math skills - division, modulo, geometry knowledge.

    93. Re:Given two programmers by johnlcallaway · · Score: 1

      I've been doing this for 30 years .. basic math, algebra, and maybe some trig are all you need for most jobs. Basic statistics is also a good thing to have, but more for testing and analyzing results than for writing code. Do some jobs need them?? Sure .. if you are writing game code and need to do trajectories. Or high level analytics that require lots of statistical analysis. But many jobs are 'I need a TPC report by friday' type jobs that require extracting data from a database, formatting it, and outputting it.

      So .. get the education if you can and can afford it, but don't sweat it if you can't. I'm currently working for a firm that does equity analysis for stock decisions. There are PhDs figuring out the statistical models .. I just have to write the code. And most of it is taking data from data sources and putting it into a database for the models to run against. You know .. read a record, insert/update/delete a row in the database. Hardly high-level math stuff. It's nice that I understand what standard deviations, averages, means, etc. are ... but someone else tells me where I need to use them because they know the results they want. The type of education I would need to be able to write models from scratch would pigeonhole me into a specific line of work .. and I prefer a more eclectic choice. Oh .. I make a 6 figure income ....

      That being said .. if there were two programmers of equal stature and one had more music experience or math or physics education, I would choose the musician or math/physics guy. The type of people that are good in those areas seem to also be good at programing. I think it has something to do with spatial and process capabilities and the ability to keep track of code in your head as you are working on it. Or to take all this disparate pieces of code and put them together into something that works.

      By another standard, if someone had a degree in chemistry or biology, I probably wouldn't pick them (unless the project needed that type of knowledge). I knew a guy who had a PhD in organic chemistry that was terrible at IT .. he couldn't figure anything out unless it was 100% documented. Those disciplines require someone who has great memory skills, which are helpful in programming but not as good as spatial skills. For some reason, I can't remember faces or chemical formulas, but I can remember all that code. I think it has something to do with process v/s rote memorization. I can remember how something works, I just can't remember the guys name I just talked to.

      --
      I rarely read replies, it's my opinion and if you thought about your opinion a little more, I'm OK with that.
    94. Re:Given two programmers by nitehawk214 · · Score: 1

      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?

      Kelper's laws deals health food.

      --
      I'm a good cook. I'm a fantastic eater. - Steven Brust
    95. Re:Given two programmers by marcosdumay · · Score: 1

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

      Well, when you only have a hammer, everything starts to look like a nail.

    96. Re:Given two programmers by marcosdumay · · Score: 1

      The problem with that is that most math that is usefull for a programer won't come intuitively from physics. Of course, you can always map you favorite mechanics into information theory, or something like that, but you won't learn it at first.

    97. Re:Given two programmers by azmodean+1 · · Score: 1

      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.

      Not just you at all. My CS Coursework included a moderate amount of math, and I got through it fine, but I never did develop the ability to "read" a new equation fluently. I have to break it down into pieces and analyze each piece in order to understand it. It still gets in the way when I stumble across some bit of math I need for programming. The worst time I've had with it though was trying to grokk lambda calculus.

    98. Re:Given two programmers by computational+super · · Score: 2, Funny
      if you can't prove that the code you have written is going to do what you want 100% of the time or its not 100% accurate

      Bah! If it works on my machine, my work is done.

      --
      Proud neuron in the Slashdot hivemind since 2002.
    99. Re:Given two programmers by Anonymous Coward · · Score: 0

      >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.

      You sir do not know what you are talking about.

      I studied computer science but never finished due to the higher level math classes. But that did not stop me from designing and building the world's largest publishing system based SGML and XML. One that on a daily basis can generate 10 million plus unique complex PDF pages from non-presentational markup. The system has been in operation for over decade and will more than likely still be operational in another decade. How many systems have you designed or built that will be around that long.

      All I needed was basic arithmetic to determine the proper loading of nodes within a cluster and simple statistics. with those basic skills I was able to determine that the STL Set algorithms for union and intersection do not scale vary well. A few simple changes in how the STL represents a set and creating custom union and intersection algorithms yielded a ten plus fold increase in performance. A process not directly related to publishing when from 24+ hours down to less than 2! We did not need to rewrite the application, using differential equations or any other complex maths, just use better algorithms. Look at the complexity bound for STL Set algorithms, look at the implementation and you'll see what needs to change.

      The one maxim that has served me well and never failed me - loose coupling strong cohesion. Understand that basic principal at the micro and macro level and you will do well.

    100. Re:Given two programmers by dwood520 · · Score: 1

      I was a professional programmer for 15 years.

      I SUCKED at math!!

      (I took programming in high school to get out of caculus).

    101. Re:Given two programmers by introspekt.i · · Score: 1

      Why are you saying that math skills and people skills are mutually exclusive?

    102. Re:Given two programmers by Tablizer · · Score: 0

      A "good" programmer should know everything, not just math, but business, people skills, law, etc. etc. etc. etc. Why single out math? The problem is that we only live one lifetime and cannot master everything in the library.

    103. Re:Given two programmers by computational+super · · Score: 2, Funny
      The three best programmers I know, who came up with incredibly clever algorithms and got large projects done in amazing ways were all high school dropouts.

      So anecdotally then, should we assume that the best programmers would be those who didn't even make it to high school?

      Susie: "Yeah, that's it. You're too smart for the class."

      Calvin: "Believe it, lady! You know how Einstein got bad grades when he was a kid? Well, mine are even worse!"

      --
      Proud neuron in the Slashdot hivemind since 2002.
    104. Re:Given two programmers by MrNaz · · Score: 2, Insightful

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

      --
      I hate printers.
    105. Re:Given two programmers by TheRaven64 · · Score: 1

      You don't need to qualify this by saying old operating systems. Pretty much all modern operating systems use a similar mechanism. When you make a system call on Linux or *BSD on x86, for example, you put the system call number eax and then jump to the kernel (interrupt 80h or syscall/sysenter if the CPU supports them). The system call handler then calls the function at this index in a table. Oh, and most compilers these days will implement a switch statement as a jump table where possible; a switch statement is the high-level equivalent of a jump table, not of a nested conditional.

      --
      I am TheRaven on Soylent News
    106. Re:Given two programmers by MachDelta · · Score: 1

      There's an XKCD for that.

    107. Re:Given two programmers by TheRaven64 · · Score: 0

      I've used calculus once since leaving school, but I can't imagine writing any nontrivial programs without applying a big blob of graph theory, a sprinkling of set theory and a dash of game theory. If you use Java, you also need some category theory for the generics and you might find group theory useful in a few cases too.

      So, I disagree with both you and the grandparent. You need a lot of maths for programming, but just knowing 'more' is not better if it's not the relevant bits. I'd take someone with one year of graph theory over someone with two years of calculus knowledge.

      --
      I am TheRaven on Soylent News
    108. Re:Given two programmers by Anonymous Coward · · Score: 0

      Programming is mathematics.

      You can't understand the type system without mathematics.
      You can't understand the flow of control without mathematics.
      You can't understand the interactions of threads without mathematics.
      Never mind complicated things like O(NlogN) sorts.

      Every part of a program is a mathematical object. The computer is simply a machine for doing math. There is no possibility of a working programmer *not* having any math skills.

      But when people say "math skills" they usually mean an understanding of matrices and dot products. Well, shucks, if you don't have the discipline to study those things, or other things as they arise, then you are limiting yourself for all time. But this isn't "math skills" this is "study skills". Hell, yes, you're going to need those.

    109. Re:Given two programmers by BlueWaterBaboonFarm · · Score: 1

      The derivative of sin() wrt ()?

    110. Re:Given two programmers by PerfectionLost · · Score: 1

      +1 Funny

    111. Re:Given two programmers by PerfectionLost · · Score: 1

      Depends if you want a technical lead or an engineer. A good engineer needs the math. A good lead needs the math AND the people skills. The lead needs to be able to understand what his engineers are telling him in order to dumb it down for the business people.

    112. Re:Given two programmers by I'm+not+really+here · · Score: 1

      Yes. Without math knowledge, how will you code that Tax application or build out the Accounts Payable and Accounts Receivable applications? Without math, how would you make those minor tweaks to a game's physics engine? Without math, how would you develop the code that operates an aircraft or spacecraft? You might get away with not having math to code simple stuff, but to do the real coding, there is no way around it, math is required.

      --
      Before commenting on the Bible, please read it first
    113. Re:Given two programmers by PsiCTO · · Score: 2, Interesting
      Riiiiight...

      I have a hammer, and wrenches, and screwdrivers, and many other tools in my shop. I have over 100 books on mathematics and many more on applied mathematics (physics, engineering, comp sci, etc.).

      I have TOOLS.

      Making an analogy between Mathematics and a hammer is like saying I have only hammers in my shop.

      When you have only one analogy in your life, all like looks like your analogy :-)

    114. Re:Given two programmers by Rich0 · · Score: 1

      They aren't.

      Nor are math skills and medical skills. Should all programmers be doctors in case they need to work on an EMRS?

      You could spend 50 years of your life in college, and you could probably learn useful skills every one of those years. However, college is a means to an end, and not an end in itself unless you're financially independent.

      The question is, given a finite amount of money and time, where am I best off spending it to maximize my return given that I want to do software development?

    115. Re:Given two programmers by vanderbosch · · Score: 1

      Fair point, but how do you know its working on your machine? If one part of an algorithm is spitting out the wrong answer the whole thing is flawed

    116. Re:Given two programmers by Anonymous Coward · · Score: 0

      I disagree

    117. Re:Given two programmers by ufoolme · · Score: 0

      Logic is programming! And its from the school of philosophy :)
      Philosophy > Math. I agree math skills are needed, but programming is more an art than a science.
      At least I see a little beauty in awesome code, even if it is awesomely bad.
      In everything creativity is king.

    118. Re:Given two programmers by ReedYoung · · Score: 1

      How long do you think a new hire with two years of calculus would need, to fully understand all the necessary graph theory and then exceed everybody else on your team who knows only lower level math? The learning curve for things like graph theory and set theory is trivial once you've learned something as difficult as calculus.

      --
      "I can't imagine how things could get any worse!" (some guy) "That could just be failure of imaginatioÂn on your p
    119. Re:Given two programmers by Anonymous Coward · · Score: 0

      You are not alone with this problem...

    120. Re:Given two programmers by Anonymous Coward · · Score: 0

      A lot of maths were created by physicists to study physics. No physics were created to study maths.

      That alone implies that mathematics is more fundamental than physics.

    121. Re:Given two programmers by Anonymous Coward · · Score: 0

      If that is what you want then hire a math major at half the price.

    122. Re:Given two programmers by Anonymous Coward · · Score: 0

      Now: can you imagine how inefficient that would be if the original programmer had used a "switch" statement (or the assembly equivalent, with a bunch of "compare and jumps")? Instead, the function number was left shifted (equivalent to multiplying by a factor of two), then used to find an index in a vector table that contained the addresses of all the functions.

      You bring up a good point, programming requires skills that aren't just math.

      In C/C++ switch statements are often compiled into jump tables anyway. Programming requires understanding the tools you use.

    123. Re:Given two programmers by warrior · · Score: 1

      If you're going to do anything in the way of signal processing you will need much more advanced math skills. You're going to need to know calculus, fourier transforms, laplace transforms along with their discrete versions (dft, fft, z). These are extremely useful, powerful mathematical techniques for analyzing data. The mathematics behind them are amazing and elegant. Examples of their use include the enabling of the 'digital' content age through video and audio compression. That's just one example, they can be used to analyze any data stream. It is amazing using DSP to find data in a sea of noise.

      --
      Intel transfer the difficult from Hadware to software, for get more power, programmer need more technology. -- chinaitn
    124. Re:Given two programmers by Anonymous Coward · · Score: 0

      I work in a commercial coding environment. We use math, and a lot of it, all the time. I work in graphics. The math is important in order to get our code optimized enough to ship.

    125. Re:Given two programmers by benj_e · · Score: 1

      Spot on. I use nearly all those on a daily basis doing GIS development. I am just now finishing up a tool that creates isopleth maps from soil sample data, and have also created code to make choropleth maps from all kinds of sales data. That's Linear Algebra, Graph Theory, and Stats in a big way.

      When I was a Math student, back in the day, Programming was considered by many to be a branch of Applied Mathematics. I still hold that to be true.

      --
      The Tao that can be spoken is not the one eternal Tao
    126. Re:Given two programmers by Anonymous Coward · · Score: 0

      I notice your user ID is "HungryHobo". Is this because you are one of those code monkeys that do not know enough math to stay employed as a programmer for very long?

    127. Re:Given two programmers by Dare+nMc · · Score: 1

      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.

      It is possible for experience to allow people to learn a feel, and get by without doing the math. Seams non-optimal to say the least, but it seams typical even to those capable, to either over design, it or just be reactionary in more of a "who knew" response. Of course it is impossible to have decent documentation/specifications for code without a known background.

    128. Re:Given two programmers by Anonymous Coward · · Score: 0

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

      You have an idealistic perspective. As do I in thinking that Ideas exist independent of their manifestation. The realist would say something like that we derive the ideas from manifestations.

      So here's a question: What does math look like when no physical universe exists (which therefore cannot give rise to any form of thinking/processing thing).

      Math is a number of things. It can be stated basically as: categorization of patterns and relationships according to other pattern and relationships (logic).

      If there are no patterns, no forms, no relationships, what does it mean to say "Math exists".

      It's a deep philosophical situation that will forever be unresolved, because it makes no sense to ask the question in the first place. All answers are equally plausible, and neither are at the same time.

    129. Re:Given two programmers by sgt+scrub · · Score: 1

      You are correct. I would never "says that".

      --
      Having to work for a living is the root of all evil.
    130. Re:Given two programmers by DMUTPeregrine · · Score: 3, Insightful

      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.

      --
      Not a sentence!
    131. Re:Given two programmers by DrVomact · · Score: 1

      The one with more math is the one you want.

      No, I want the one who can listen to non-technical people and understand the problem, write documentation that is comprehensible to end users (or at least comprehensible enough to serve as a starting point for the tech writer), and that I can take to a customer site with a reasonable degree of assurance that he will not commit an egregious offense that violates basic primate sensibilities.

      Or do you suppose we could have refined this question a bit more?

      --
      Great men are almost always bad men--Lord Acton's Corollary
    132. Re:Given two programmers by Anonymous Coward · · Score: 0

      More like: The one who fails at basic math, is the one that you don't want as a programmer, but will work out all right as a manager. I mean, 2 years of programming is possible in 24 hours if you add more people, right?

      I'm not sure. Why don't you do the math and get to me, thanks.

    133. Re:Given two programmers by geekoid · · Score: 1

      Why?

      --
      The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
    134. Re:Given two programmers by mdielmann · · Score: 1

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

      Every time I hear this, I think of the caveman using rocks for hammers. Sure, it gets the job done, but they could have done the job so much better if only they'd had a better tool.

      --
      Sure I'm paranoid, but am I paranoid enough?
    135. Re:Given two programmers by MobyDisk · · Score: 1

      rogramming is basically putting algorithms into a form a computer can understand. Nothing more. And where do these algos come from?

      Most software today is business workflows, so it requires little math. The "algorithms" become things like "send the approval form to the purchasing manager, and verify that the form is signed within 7 days from the publication date." - Yes, it is math, but it isn't very complicated.

      When math is involved, it is probably encapsulated by something like a SQL server or a collections object. The programmer probably chooses which tools to use, and lets those tools do the hard math for them.

      It's almost like we need another term to distinguish "person who places business rules into a high-level language" as opposed to someone who takes complex mathematical algorithms, writes them into code, and optimizes them. I tend to use "programmer" -vs- "computer scientist" but that's not entirely satisfactory either.

    136. Re:Given two programmers by Blakey+Rat · · Score: 1

      Depends on the type of program.

      I don't want a super-math-nerd programming GUIs, for example. I can't even come close to imagining a scenario where they'd make anything even resembling usable.

    137. Re:Given two programmers by Blakey+Rat · · Score: 2, Interesting

      I think people are looking at the problem wrong.

      Programming is programming; it's a discipline independent of anything else. It involves logic, but not math. (Unless you include logic in math, in which case the answer to this question is "duh" and there's no point in having this discussion.)

      If you're writing a program in a domain where math is important, for example calculating spaceship orbits or rendering 3D graphics, then math is important. This is also kind of a duh.

      But here's the fun part: if you're writing a program in a domain where accounting is important, then the principles of accounting are far more important than anything else. If you're writing a program to run a coffeemaker, knowledge of making espresso is more important than knowledge of math. If you're writing a front-end to a database, then you need to know the principles of good GUI design much more-so than math.

      Math isn't something fundamental to computer programming, it's simply a problem domain like any other. You can write a program to do accounting, you can write a program to schedule meetings, you can write a program to make coffee-- each of those problem domains are perfectly valid, and yet don't include anything like linear algebra in them.

      Last time we had a discussion like this, I mentioned that colleges would better serve their students by teaching them GAAP (Generally Accepted Accounting Principles) rather than advanced math, because the number of graduates working with money is an order of magnitude higher than the number working with, say, calculating orbits. I stand by that.

    138. Re:Given two programmers by nilbog · · Score: 1

      Hey I want to play that game. Just last night I was searching for a space based build/conquer/explore type game for my Android phone. I found Space STG which seems pretty cool. I'd like to hear more about your game though.

      --
      or else!
    139. Re:Given two programmers by destp · · Score: 1

      Couldn't agree with this more. The Symbolic Logic courses (from the Philosophy department) were some of the most useful that I took at university. While having a strong grasp of other mathematical disciplines can be useful in various situations, most of it comes down to an ability to think logically.

    140. Re:Given two programmers by Citizen+of+Earth · · Score: 1

      My required math as an undergrad was four calculus courses. I aced them all, but as it turns out, this was almost completely worthless. I haven't used calcuseless even once since then.

    141. Re:Given two programmers by Anonymous Coward · · Score: 0

      Correct me if I'm wrong but aren't most switches implemented as jump tables which is exactly what you're describing?

    142. Re:Given two programmers by Darinbob · · Score: 1

      To go further, you will learn to think better when you learn mathematics, whether or not you actually use the mathematics in a future career and whether or not you eventually forget the maths that you learned. A good education is invaluable. I think it's better to prefer a broad and deep education to a simple tech-school training.

    143. Re:Given two programmers by Anonymous Coward · · Score: 0

      .

      Absolutely. And an old dog like me can even provide a classic example: older OS's like DOS and CPM had to cram a lot of functionality into a relatively small amount of memory. They also had to perform decently on small, slow (by today's standards) processors. The approach that they used was the vector table.

      Simply put, the functions were numbered in order: get OS version was typically the first (function 0), and successive numbers were for all of the other important functions: open file, write file, get system time, and so on.

      Now: can you imagine how inefficient that would be if the original programmer had used a "switch" statement (or the assembly equivalent, with a bunch of "compare and jumps")? Instead, the function number was left shifted (equivalent to multiplying by a factor of two), then used to find an index in a vector table that contained the addresses of all the functions. Neat, compact and lightning-fast.

      This technique is still used today in small embedded processors that suffer from similar low speed and limited memory problems.

      Evidently you are not a sufficently ancient canine...this technique (the Interrupt Vector) has been in use in OSes since the 1960s, well before the advent of the microprocessor. Ditto for Fault Vectors.

      Nothing new here and certainly nothing invented by the CP/NM or DOS folks.

    144. Re:Given two programmers by tholomyes · · Score: 1

      In most schools, Computer Science is a math discipline; it's largely discrete mathematics. Computer and Information Sciences degrees, however, tend to be less math and more application development oriented.

      --
      When did the future switch from being a promise to a threat? -C. Palahniuk
    145. Re:Given two programmers by KlaymenDK · · Score: 1

      if only "I hate printers." totally ruined any sense of expertise you built up in the text...

    146. Re:Given two programmers by thetoadwarrior · · Score: 1

      The one with math will probably want more money so if he's doing more basic programming then I'd go with the one without. You don't really need a math wiz to knock out JSP pages calling a few beans. But for graphics or anything serious then yes, the math guy will likely win hands down.

    147. Re:Given two programmers by Anonymous Coward · · Score: 0

      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.

      English sucks when you are dealing with math or logic. At least in most other European languages (my knowledge of languages is limited to Europe), you don't have to use mathematical notation as much as you have to in English. If you have to use Wikipedia to read about math (Wikipedia has a tendence to oversimplify math stuff to the level at being impossible to understand), I suggest you look at other language versions of Wikipedia before you look at English Wikipedia and from them get a natural language explanation. It will improve your knowledge of both mathematical notation and those other natural languages.

      Wikipedia should really have a "Look up this article in other languages" link on every page.

    148. Re:Given two programmers by Anonymous Coward · · Score: 0

      The one with more math isn't necessarily the better programmer though. These days the only thing that is important to know is the logic behind accomplishing a specific goal. The computer can, and should, be doing the math for you.

    149. Re:Given two programmers by Anonymous Coward · · Score: 0

      I agree with almost all of this list (not convinced about a universal need for linear algebra), but I'd add one more area of mathematics: Number Theory, aka Finite Arithmetic.

      Basically it's the mathematics of integers, and I think everyone would agree that the average programmer spends more time working with integers than real numbers.

      BTW: I'd prefer to use the term "software developer" rather than "programmer" :-)

    150. Re:Given two programmers by Fluffeh · · Score: 1

      Well, the plan is to have an online universe in which everyone interacts with one another rather than standalone gameplay.

      Having tended to always take the crafting part of a game rather seriously, I have made a very strong focus on a complex, but detailed crafting portion of the game - which basically allows for totally unlimited craft. To give you an idea, A spaceship will perform as well as the components have been built within it, which will be affected by the skill level/crafting systems they were build on, which will be affected by the quality of the resources that have gone into them. That's not even taking into account that you can basically put almost anything onto a ship if it has the room (apart from a few "must have" components. Same goes for stations, bases etc.

      The rest is pretty much a straightforward explore/build/conquer concept. Three races (major factions) with a sprinkling in the middle.

      It's a good ways off yet though, still in early to middle of getting all the code working.

      Sound like something you were looking for, or no?

      --
      Moved to http://soylentnews.org/. You are invited to join us too!
    151. Re:Given two programmers by Anonymous Coward · · Score: 0

      Math is just applied logic.

    152. Re:Given two programmers by Anonymous Coward · · Score: 0

      Did you know that Archimedes actually had a form of integral calculus that he used to come up with many of his proofs, but he thought it was a mathematical trick. He often would then find a more normal proof that didn't use his trick. He also came up with an approximation of pi that wasn't made better until the 16th century.

      Oh, and there were two forms of numerals used by (I presume different sets) of greeks. One was something akin to the roman numerals we know and a second form which had a 27 different characters and seems to me likely similar to the arabic digits we use today

    153. Re:Given two programmers by Anonymous Coward · · Score: 0

      > Now, if only maths graduates could program their way out of a wet cardboard box, then we could truly start designing giant flame breathing killer robots. This guy's pretty good: http://www.laptopmag.com/business/feature/25-most-influential-people-in-mobile-technology.aspx?page=4

    154. Re:Given two programmers by sjames · · Score: 1

      Such proof for the actual software is intractable except in the most trivial case. That said, the chances are a lot better if the algorithm it implements is proven correct.

    155. Re:Given two programmers by JJKun · · Score: 1

      Now, if only maths graduates could program their way out of a wet cardboard box.

      Whoa there, let's not forget all of the programmers who couldn't prove their way out of a wet POJO.

      I'm an undergrad who was studying computer science and switched to math, and at every job fair I go to I get a blatant "We don't hire math majors," until I mention that (oh yeah) I've done SOA and database programming in C++, Android Apps in Java, and I enjoy working on my compiler.

      My experience with subjects like real analysis, topology, and abstract algebra (which are crucial to truly understanding mathematics) are very undervalued in the job application process, and I feel bitter toward most tech companies because of this. At the same time, I attribute my skills in programming (abstraction, data analysis, algorithm design) to the skills I gained studying those same "irrelevant" subjects.

      The truth is that math isn't valuable for the knowledge you gain. Honestly, with a bit of research you can look up an algorithm to solve any problem, and probably get a pseudocode implementation as well. Math is valuable simply because it makes you smarter, better at analyzing problems, and better at thinking about solutions before you attempt to code them. It doesn't matter whether you study finite group theory or differential equations, the skills you would gain allow you to sort through complex problems that have no established Theory. And then if you do need to work with linear algebra specifically, it will be relatively easy to become familiar with the terminology and methods, because the whole point of math is to do cool things with new concepts and rules. As mathematicians we breathe abstraction, analysis, and invention.

      And hirers just don't seem to care about that if you haven't memorized algorithms on C strings. With that attitude, it's no wonder math people don't want to program and programmers don't want to learn math.

    156. Re:Given two programmers by Anonymous Coward · · Score: 0

      False dichotomy. When comparing A and A+B the second will always be greater unless B is a negative. I don't think anyone would reasonably argue that more math skills is a detriment or have absolutely no impact on a hiring evaluation. And I don't think the argument is strong enough to say, that if the person doesn't have math skills you don't want him. There are plenty of good programmers without DiffyQ under their belts.

    157. Re:Given two programmers by ObscureCoder · · Score: 1

      Programming is basically putting algorithms into a form a computer can understand. Nothing more.

      I will agree with you here.

      It baffles me to no end every time I see "programmers" apply who consider math as some sort of secondary skill. It's not. It is the primary skill for a good programmer.

      I would say this is more dependent on what field they are programming in. I know a really good web developer who has worked with just about every language needed to generate a webpage and is currently employed by a fortune 500 company to run their website as lead dev. Yet he failed out of college and never took higher math then calc I. Smart guy when it comes to web design, but I frequently find myself having to explain the math jokes in Futurama (and similar shows)...

      I do not need someone who can "translate" my algorithm into code. I need someone who can take my problem and develop an algo for it. Coding it is the most trivial part of the solution.

      It all depends.

      I don't claim to be good at a lot of things. However, I like my job and consider myself pretty damn good at what I do. I run a giant Linux cluster. Most of the projects we get are from groups who have a basic understanding of how to write code for a cluster/parallel and a firm understanding of what they want to accomplish. This make my job easy because all we have to do is tweak the code and run it. The new project passed on to me involves physics and math calculations that are way over my head. When the math gurus gave me a sample of their code, my team and I split up the math (knowing little about what it does) and dumped it across the nodes. Turns out how we split the function screws up the results and a big meeting was called. There were two options. 1) Have a parallel programming class for the Math gurus who are very knowledgeable about Math but have only enough programming skills to churn out a inefficient piece of Fortran code (most of which they cut and pasted from another similar program) or 2) send me and my team back to school for more Math. So while it has been years since I graduated school, I am currently working on my masters (Paid for by work! Whoohoo!).

      My point is that these guys have the math part down pat. I don't have and won't ever get the Math that they understand just as they don't have and won't get the programming I have. They absolutely need someone to translate their Math into functional code. Now part of that is developing an efficient parallel algo, but without these Math classes my team and I would be struggling to get this project working efficiently. We need to be able to understand the basics of what they want accomplished.

      Another guy I frequently communicate with runs a big Linux cluster render farm. He has got the basic ideas behind the math and he is not a strong programmer. Heck of an eye for detail in the rendering and a much better graphics designer then I will ever be, but give him a stack of code in Fortran with MPI bindings and he is lost. He knows how to create his animation and dump it to the farm for processing and that is all his job requires.

      My personal opinion on this whole necessary or not question is this: Math classes sucked and I hated them in college (still do), however, to prepare kids for all aspects of what they can do in the future they should have a good solid background in these classes. In fact, I REALLY wish more schools would put the Math classes in the CS dept or have more CS classes that leaned heavy on the Math. Just having the skill isn't worth a lot unless you can put it to practical use. Is it absolutely necessary though? Not really. Plenty of fields in the computer world don't need a lot of math. Flip side of coin. Good luck getting one of those jobs where you never need Math and remember the scientific world is pretty much always hiring and will want a strong background in Math....

      Computers can do a lot of things. Just depends on what you are trying to accomplish with them.

    158. Re:Given two programmers by mr_mischief · · Score: 1

      That's all not to mention rather more mundane uses like figuring a bill at a restaurant, figuring the tip from the bill, paying your taxes, or figuring out how many gallons of water your utility needs to provide for X number of households when the weather dictates Y average consumption per household. Three of those have nothing to do with physics, and one is only a degenerate case of almost being related to physics (as in you can't create extra water in the main line by some trick of multiplication).

    159. Re:Given two programmers by marcosdumay · · Score: 1

      Well, that "the uneverse reflects math" sentence implies you never tried to use a screwdriver. And how would you? We only have a hammer.

      But assuming that everything is explained by math when we only have math to explain it isn't right. We still can't explain everything, have no idea on what the universe really reflects (if it does in fact reflect anything) and have several problems already with the tools we have.

    160. Re:Given two programmers by JAlexoi · · Score: 1

      I have to agree. Mathematics and the abstract fields are really not the ones that should be most values in CS. Physics should be. Sometimes people forget that computers are real and physical. And most of it is actually deeply based in physics. They are even designed by physicists and not mathematicians.

    161. Re:Given two programmers by JAlexoi · · Score: 1

      There should be philosophy at the end of that line of XKCD. The old Greeks were first and foremost philosophers, and only later mathematicians and physicists.

  2. Not necessary by BadAnalogyGuy · · Score: 1

    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.

    1. Re:Not necessary by Joce640k · · Score: 4, Insightful

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

      --
      No sig today...
    2. Re:Not necessary by saiha · · Score: 1

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

    3. Re:Not necessary by Anonymous Coward · · Score: 0

      so the real programmers write libraries all day then?

    4. Re:Not necessary by BadAnalogyGuy · · Score: 3, Insightful

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

      There is a lot more to life than your job.

    5. Re:Not necessary by saiha · · Score: 1

      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.

    6. Re:Not necessary by Anonymous Coward · · Score: 0

      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.

    7. Re:Not necessary by AuMatar · · Score: 4, Insightful

      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.

      --
      I still have more fans than freaks. WTF is wrong with you people?
    8. Re:Not necessary by saiha · · Score: 1

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

    9. Re:Not necessary by beelsebob · · Score: 1

      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.

    10. Re:Not necessary by Ihlosi · · Score: 2, Insightful

      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.

    11. Re:Not necessary by BadAnalogyGuy · · Score: 4, Insightful

      The documentation says what the libraries do.

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

    12. Re:Not necessary by Unoriginal_Nickname · · Score: 1

      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.

    13. Re:Not necessary by AlgorithMan · · Score: 1

      bullshit! if you just botch together some code and are even unable to analyze the running time, let alone the correctness (since you don't even really know, what it's doing), then you are a tinkerer and your products will be shit! when they work, it'll be coincidence or luck that your customers don't get in the situations where your code fails.

      and what do you do, when you don't find a library for some problem? or what do you do, if you have a library for doing something (say solving linear optimization problems), but you don't understand how to create its input from your problem (say it needs canonical linear programs)?

      If you can understand simple arithmetic, you've got all the math skill you need to be a LOUSY programmer! a script kiddie!
      I think your post is an insult to all the GOOD programmers, who develop the libraries you are using, you tinkerer!

      --
      The MAFIAA is a bunch of mindless jerks who will be the first up against the wall when the revolution comes
    14. Re:Not necessary by Sique · · Score: 1

      I was doing some work with real time stuff, and it helped me greatly to be able to imagine parameters like jitter as parameters in an integral over time, where the maximum of the integral was the size of the buffer I need. I never worked out the math completely, because I didn't need to. But it was a very productive model for me.
      And no, you don't find that kind of math ready-made in a library for coding.

      --
      .sig: Sique *sigh*
    15. Re:Not necessary by Opportunist · · Score: 2, Insightful

      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.

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    16. Re:Not necessary by Opportunist · · Score: 1

      Yes, and that library offers you bubble sort, insertion sort, quicksort and a few more. Which one do you choose?

      Umm... bubble sort. Why? Umm... because I looked up "sort algos" in the msdn and it was alphabetically the first in the list. Why, what do you mean "depends on your problem", I wanna sort, that's my problem!

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    17. Re:Not necessary by AlgorithMan · · Score: 1

      once I wrote a program, that should create schedules for a tournament. It used backtracking (because back then I wasn't a computer scientist - just a tinkerer) and the program was so slow, that it could not be used (it must have been in O(n!^n) or so)
      today I know the 1-factorization of complete graphs, by kirkman and reiß, which can do that in O(n^2)...

      without deep math knowledge, I wouldn't even be able to find out, that the problem can be solved like that, because I wouldn't even be able to see that it can be stated by means of graph theory... btw. here's a link to my program that creates tournament schedules in O(n^2)

      --
      The MAFIAA is a bunch of mindless jerks who will be the first up against the wall when the revolution comes
    18. Re:Not necessary by johny42 · · Score: 1

      Even when you're only using libraries, math helps you a lot to pick the right one for the job. The difference between a TreeSet and a HashSet is just math. You also don't need to know what regular languages are to successfully use regular expressions, but for some problems, it might come handy.

    19. Re:Not necessary by digitalhermit · · Score: 1

      I honestly say I've never used calculus or differential equations professionally.

      I've found myself using calculus for some GPS related apps that I'm writing. Previously I've used lots of algebra and statistics. Algebra is a fairly routine necessity. I don't so much *use* statistics as need to know it in order to figure out what to use and whether it's valid or not (doing some pointy headed boss apps and need to calculate some statistical metrics for process validation). In previous jobs I needed enough math to understand how to interpret a performance graph and determine whether or not the code was running at expected throughput. I needed to know enough logic in order to optimize some very slow Remedy code.

      So in 15 years, maybe I've used non-trivial math maybe 20 times (and I suppose that's relative.. non-trivial is anything beyond calculus 1 for me). There are libraries and tools now that can do all this, but I do believe that to use them effectively you'd need to understand the math.

    20. Re:Not necessary by PRMan · · Score: 1

      I know the 1-factorization of complete graphs, by kirkman and reiß

      Wow, you really used your math skills to solve that one...

      And the rest of us just solved that problem with no math skills at all... Thanks for the link.

      --
      Peter predicted that you would "deliberately forget" creation 2000 years ago...
    21. Re:Not necessary by Anonymous Coward · · Score: 0

      Find a job you love and you'll never have to work a day in your life.

    22. Re:Not necessary by blai · · Score: 1

      it is also something you can just Google and actually understand afterwards. big O, big deal.

      --
      In soviet Russia, God creates you!
    23. Re:Not necessary by Gr8Apes · · Score: 1

      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.

      At one job a little while ago - Multi-variable partial differential equations were used continuously. It's what happens when you're modeling high load rates on orthotropic non-linear strain rate sensitive materials.

      Knowing linear algebra allows me to deal with large scale transforms efficiently between multiple array sets, especially when those arrays are multi-dimensional.

      Having learned various optimization techniques and algorithms for large data sets sent me down the path of parallelism.

      Having learned to think analytically through complex problems and with a few years (ahem) of coding experience allows me to analyze current codebases, follow the flow and optimize or redesign it to improve functionality and performance, or just to find out why that one time in a million, a particular "bad" result pops up.

      So no, math is not important at all.

      --
      The cesspool just got a check and balance.
    24. Re:Not necessary by Mongoose+Disciple · · Score: 1

      Of course, for 99% of real world problems, just about any of those sorts is good enough.

    25. Re:Not necessary by infalliable · · Score: 1

      As you've basically said, it will really depend on what type of coding you're doing and for who.

      For some jobs, you'll probably never need anything more complex than calc I and linear algebra. For others, partial differential equations and multivariable calculus are important.

    26. Re:Not necessary by Opportunist · · Score: 1

      Yeah, CPUs are fast now. And if it's still too slow, why bother optimizing the algo, get a faster CPU...

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    27. Re:Not necessary by alphamikefoxtrot · · Score: 1

      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.

      Are you kidding? Partial Differential Equations are used to simulate effect of ocean waves, zebra stripes, noise filters, rigid bodies, image compression ... Just because you don't use them doesn't mean the rest of us don't

    28. Re:Not necessary by Anonymous Coward · · Score: 0

      > 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.

      Let's see... You've heard of the page-rank algorithm? Maybe there's reason why the founders of Google have made more money in their last 10 years than you have?

    29. Re:Not necessary by liquiddark · · Score: 1

      Because we hope for a better standard of living someday, and if many people are striving to be a typical programmer civilization is slowly but surely walking towards an information apocalypse.

    30. Re:Not necessary by Anonymous Coward · · Score: 0

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

      Apparently we have different standards; I want my developers to write reusable and maintainable code.

    31. Re:Not necessary by Bodhammer · · Score: 1

      The above post shows the difference between math, computer science, and engineering!

      --
      "I say we take off, nuke the site from orbit. It's the only way to be sure."
    32. Re:Not necessary by Rob+the+Bold · · Score: 1

      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.

      There's plenty of "math-y" stuff that the libraries can do for you, but if you don't know what to do with them they don't help much.

      I'd like to see programmers knowing more about the basics of using math (or even arithmetic) at least for the application they're working in.

      Example: When numbers are used to represent real-world values like quantities, volumes, speeds, and amounts of currency, you need to know how to properly handle such things as rounding and truncation for your particular application. If a number is the result of a sensor measurement of mass (or if you prefer, weight of the mass at 1g), your sensor will have a certain precision. Maybe you measure 2.608 pounds and your sensor is precise to +/- .001 pounds. Your application needs to be able to present or store this in other metrics. So you call PoundsToKg from your math library. You'd saved your pounds as a floating point number, so your result is floating point as well. Perhaps you know the range of expected values well enough that you pick the proper size of float. Well, I just did this with Google. They query "what is 2.608 pounds in kg" yields: "2.60800 pounds = 1.1829689 kilograms". Google apparently assume that my 2.608 was accurate to the limit of single precision floating point. If you ask about 1 pound, you get "1 pound = 0.45359237 kilograms". So google's library knows the ratio of lb to kg to 8 significant figures. So google's result is not only more precise than my original data (4 places) or even of google's assumption of my original data's precision (6 places), it's the 8 places from the kg/lb value it used. In reality, we only know the result to be 1.183 kg.

      Is the Google calculator wrong? Not really, it's just behaving as a calculator or a math library. This is where it's important for the user/programmer to know the limitations of the data and the libraries operating on the data. I've had this situation come up with programmers. I was an EE working with other EEs and Computer Engineers on a measurement and recording system. When it came time to write the PC interface to the system, we brought in temporary CS-type guys to provide more manpower to the app written. On multiple occasions, I had just this sort of problem with the programmers. I'd tell them to round to the actual precision of the data and they'd be shocked, asking me why I would throw away all those perfectly good digits the libraries gave them! In cases where this was merely cosmetic, I just let it slide because there was no way in Hell I was going to convince them that the computer was "wrong". In more crucial areas, I noted where the problem was and came back to fix it after the temps were gone.

      Lest anyone think that ignorance of this issue is unimportant, consider this example that predates the modern practice of "programming": THE FIELD ARTILLERY JOURNAL - NOVEMBER - DECEMBER - 1929.

      If you use numbers from the real world in your programming you need to know enough math to manipulate them properly, even if you are relying on your software libraries to do the heavy lifting. Perhaps the errors/miscalculations/misrepresentations/etc. are trivial or cosmetic. But if you don't know your math, how do you know that? How do you even know to think of it?

      And we haven't even begun to discuss the limitations of floating point representation itself. Let alone all the other issues with numbers that can come up.

      --
      I am not a crackpot.
    33. Re:Not necessary by marcosdumay · · Score: 1

      I see you understand algorithm complexity. Take a look around and count the number of people that don't fully grasp complexity but is able to count the number of loops and multiply by their complexity. Do you see any? I was never able to count more than 0.

      You don't need to remember how to do all that fancy calculations you learned in undergrad, but if you didn't learn it, you wouldn't also be able to apply the simple stuf you use now.

    34. Re:Not necessary by slodan · · Score: 1

      I am a software engineer working in product development, mostly prototyping on embedded systems. There are few cases that require more math than I could reasonably do in my head. Anything more complex than that usually should requires the input of a domain expert, simply because it isn't time effective for me to learn it.

    35. Re:Not necessary by TheRaven64 · · Score: 2, Funny

      You choose 'quicksort' because it says 'quick' on the label. Your data is mostly sorted already, so it should be really fast, right?

      --
      I am TheRaven on Soylent News
    36. Re:Not necessary by hal2814 · · Score: 1

      I don't know anyone who actually analyzes non-trivial algorithms as part of a professional programming job, but I know plenty who eyeball it. For example, if part of your solution involves a piece that runs in O(n!) time and you're not absolutely sure you can keep the input set small, you need to find a better solution.

    37. Re:Not necessary by Opportunist · · Score: 1

      Nah, of course I took Radixsort. First of all, I have no idea what radix means, prolly something like radical or so, and that's cool, and it sure as hell sounds like something my boss couldn't even spell, so he thinks I know what I'm doing.

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    38. Re:Not necessary by Actually,+I+do+RTFA · · Score: 1

      The documentation says what the libraries do.

      What libraries do you use?

      I find the documentation is adequate 80% of the time, inadequate filler 10% of the time, and obsolete/incorrect 10% of the time. This includes things like writing out what the mathematical operations will do, looking at the results, and reverse engineering the mistakes in the documentation. Equivalent to, but far more complex then, documentation says func1 ( x, y) returns X+Y. func1 ( 2, 2 ) returns 4 as expected. Someday, someone changes the way it is used so now it is called with ( 3, 1). Suddenly a small error in what appeared to be working crops up, because it returned 3, because it really returns X*Y. That's a good deal of documentation.

      I do agree reading skills are important. But I put logic/math above reading. That said, I wouldn't work with anyone (well, any programmer) who lacked either.

      --
      Your ad here. Ask me how!
    39. Re:Not necessary by jbengt · · Score: 1

      Of course, if 99% of the time your day's work is just good enough, but it results in serious problems for your product on the other 1% of working days, your real world employment is precarious.

    40. Re:Not necessary by AlgorithMan · · Score: 1

      without math skills I wouldn't have known where to look...

      --
      The MAFIAA is a bunch of mindless jerks who will be the first up against the wall when the revolution comes
    41. Re:Not necessary by Mongoose+Disciple · · Score: 1

      Of course, if 99% of the time your day's work is just good enough, but it results in serious problems for your product on the other 1% of working days, your real world employment is precarious.

      That's really only true if you're not doing testing of any kind, in which case I would argue you have much bigger problems.

      A pragmatic programmer comes up with a solution that seems good enough, then verifies that it is. If it's not, they replace or refine it from there. If it is, they move on to the next task.

      A programmer who instead ruthlessly examines everything they do to make sure it's optimally efficient is probably wasting a lot of time. That guy's going to have much more trouble staying employed in the real world.

      For some things, efficiency means a lot. For most things, it doesn't. There are projects where this isn't the case, but they're in the minority. A good programmer can tell where the extra effort is important and where it's a waste of his time and therefore his employer's money.

  3. Absolutely by deisama · · Score: 5, Insightful

    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.

    1. Re:Absolutely by Antony-Kyre · · Score: 1

      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?

    2. Re:Absolutely by Thanshin · · Score: 4, Insightful

      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.

    3. Re:Absolutely by ahaubold · · Score: 1

      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.

      --
      Nope, I think you mistook me for someone else.
    4. Re:Absolutely by Hognoxious · · Score: 2, Insightful

      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.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    5. Re:Absolutely by Anonymous Coward · · Score: 0

      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*.

    6. Re:Absolutely by Antony-Kyre · · Score: 5, Funny

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

    7. Re:Absolutely by Noughmad · · Score: 1

      Math nerd, programming geek, marries? Really?

      --
      PlusFive Slashdot reader for Android. Can post comments.
    8. Re:Absolutely by Anonymous Coward · · Score: 0

      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.

    9. Re:Absolutely by Ihmhi · · Score: 1

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

    10. Re:Absolutely by Anonymous Coward · · Score: 1, Interesting

      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...

    11. Re:Absolutely by Anonymous Coward · · Score: 0

      So he will be the babysitter

    12. Re:Absolutely by Anonymous Coward · · Score: 0

      a programmer has extensive experience with children and parenting.

      No matter what she says, I have no experience with children. I just deal with leaves, tranches and nodes.

    13. Re:Absolutely by X10 · · Score: 1

      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?

      I couldn't agree more. It's about the ability to make complex abstractions and to create a complex model in your mind. People with proven skills in math or physics have that ability. You don't have the ability, you're not an excellent programmer.

      I'm used to working in or with teams of programmers that have proper university education in science. This week, I left a job because the programmers in my team did not have proper education in math. I could see it in their code.

      Proper math skills are essential.

      --
      no, I don't have a sig
    14. Re:Absolutely by Dzonatas · · Score: 0

      Mathematics is generally limited to Physics, or at least it's resources. Computations, and computation models, can go beyond physics, and thus advanced arithmetics are more useful the mathematics itself. I agree math knowledge is quite helpful, yet it is arithmetic skills that are essential.

      Computers are more based on symbolic functions and their rearrangement rather than on knowledge of methods to balance the numbers in equations.

    15. Re:Absolutely by LukeWebber · · Score: 1

      You've got my vote. For that matter, a pure mathematician isn't likely to be happy hacking code. Take somebody who has done well in maths to a given level, and that person probably has the logical skills that a programmer needs. Among other important factors, of course. A wizard coder who can't communicate, or who won't follow instructions, or who can't organise his/her time, or who smells because s/he doesn't wash, or... well, you get the drift.
      A talent for maths is part of what makes a good programmer, but by no means is it the only part, or even the most important part.

    16. Re:Absolutely by kaizokuace · · Score: 2, Interesting

      the sociopathic management will get to her first...

      --
      Balderdash!
    17. Re:Absolutely by migla · · Score: 1

      I thought it might be the other way around: With math knowledge, but little skills, one would still know what math to tell the computer to do (and find the libraries with the simple apis to do it).

      Obviously, someone with skills but without knowledge is in a better position in the long run, since the knowledge is probably easier to aquire than the skills...

      But, I don't know. I have very little of either.

      --
      Some of my favourite people are from th US; Vonnegut, Chomsky, Bill Hicks.
    18. Re:Absolutely by Anonymous Coward · · Score: 0

      The computational scientist.

    19. Re:Absolutely by pionzypher · · Score: 1

      Trumped by the SQL guy and his INSERT statement.

        Captcha is fertile.

      --
      I'll believe in corporations having personhood when Texas executes one... - advocate_one
    20. Re:Absolutely by Anonymous Coward · · Score: 0

      The mathematician. If the software development field its a dry spell it's SOL for the programmer. But even if all computers suddenly disappear, the math guy can do a ton of different stuff (basically just with his math degree and maybe a couple of courses at the local U): accounting, parts of finance, actuarial work (admittedly there are tests, but our math friend is far more likely to breeze through them (or even get hired to an actuarial position that allows him to attain them) than our programmer friend), etc.

      Plus, it doesn't take a CS degree to be a competent commercial programmer.

      So.... I'm going with the more VERSATILE and PRACTICAL skill set: math. (ironic, right? Time to face it, the old mantra "math is to science x as philosophy is to sociology/economics/teaching" is just plain wrong.)

    21. Re:Absolutely by Anonymous Coward · · Score: 0

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

      good thing us programmers know how to divide and conquer!

    22. Re:Absolutely by Xtravar · · Score: 1

      After 5 years at a fairly large company that only hires the best, I haven't met the math nerd. Only the programming geek. And they aren't always the quickest programmers. We've got to dispel this silly notion that you must like anime and play WOW to be a programmer.

      --
      Buckle your ROFL belt, we're in for some LOLs.
    23. Re:Absolutely by turing_m · · Score: 1

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

      Basic arithmetic is still math. And despite accounting being "just basic arithmetic", somehow a lot of people who can do basic arithmetic still struggle with accounting, or everyone would get an A in it. They don't. Accounting is a mathematical system with its own laws, and to do anything interesting with it (e.g. answer various flavors of the question "how do I make more money?") as the OP was getting at, requires ability to pose questions to that system and answer them correctly. Depending on the exact question, the answers may require anything up to graduate level mathematics, or at least, a brain capable of such thinking.

      --
      If I have seen further it is by stealing the Intellectual Property of giants.
    24. Re:Absolutely by EdgeyEdgey · · Score: 1

      Nah. The math nerd needs to learn to integrate first. Then multiply.

      --
      [Intentionally left blank]
    25. Re:Absolutely by plopez · · Score: 1

      Math guy:
      "You want fries with that? Here's your change... did you realize that's a prime number? Did you realize there are some forms of encryption... hey, where'd he go?"

      WOW programmer wanna be:
      "I'm gold mining on WOW!"

      --
      putting the 'B' in LGBTQ+
    26. Re:Absolutely by Anonymous Coward · · Score: 0

      The first who marries the CEO's daughter.

      I'd think it is the last one to marry her that wins in the long run...

    27. Re:Absolutely by Hells+Ranger · · Score: 1

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

      good thing us programmers know how to divide and conquer!

      I wish the moderation option "scary" was there.

    28. Re:Absolutely by Hognoxious · · Score: 1

      Basic arithmetic is still math.

      True it's maths, but it's such a basic level that only a pedant would even mention it. I guess physical fitness is a necessity too, as it requires the ability to move a mouse or press keys.

      And despite accounting being "just basic arithmetic"

      Who said that? Involve != equals.

      Accounting is a mathematical system with its own laws, and to do anything interesting with it (e.g. answer various flavors of the question "how do I make more money?") as the OP was getting at, requires ability to pose questions to that system and answer them correctly.

      That's not normally the responsibility of a programmer.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
  4. Ah there it goes again by TheRagingTowel · · Score: 5, Insightful

    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.

    --
    4Z5TX
    1. Re:Ah there it goes again by HNS-I · · Score: 1

      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.

    2. Re:Ah there it goes again by julesh · · Score: 1

      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.

    3. Re:Ah there it goes again by TheVelvetFlamebait · · Score: 4, Funny

      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. ;-)

      --
      You know, there is a difference between trolling and pointing out the flaws in your reasoning. Just saying.
    4. Re:Ah there it goes again by TheRagingTowel · · Score: 1

      Hey, i'm gonna have a baby child soon, I need the money! :)
      (thanks for making me laugh though)

      --
      4Z5TX
    5. Re:Ah there it goes again by TheRagingTowel · · Score: 1

      UML and DFDs aren't abstract at all, they are super concrete

      I disagree, these are things that are completely imaginary, got not tangible presentation and are therefore completely abstract.
      From wikipedia:

      an abstract object is an object which does not exist at any particular time or place, but rather exists as a type of thing (as an idea, or abstraction). In philosophy, an important distinction is whether an object is considered abstract or concrete.

      And these are the type of things that math is all about.

      --
      4Z5TX
    6. Re:Ah there it goes again by smallfries · · Score: 2, Insightful

      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.

      --
      Slashdot: where don knuth is an idiot because he cant grasp the awesome power of php
    7. Re:Ah there it goes again by TheLink · · Score: 1

      > You need to understand maths to, for example, predict what a particular SQL query will do,

      You don't need to understand a lot of math to predict what most SQL queries will do, anymore than a basketball player needs to understand a lot of physics and maths to shoot 3 pointers.

      Understanding how that particular DB works and its idiosyncrasies (some DBs interpret/parse queries differently) will be more useful than "knowing math".

      I know that requires logical thinking and the able to grasp abstract concepts, but if we keep broadening what we mean by math, then those basketballers are math geniuses too. And similarly by that definition most programmers already do math. Which is not that useful given the topic of this article/story.

      --
    8. Re:Ah there it goes again by smallfries · · Score: 1

      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.

      Let's ignore the obvious problem with your statement: "concrete" is a binary property. Something is either concrete or not and so being "super concrete" sounds somewhat like an excitable teenage girl on a construction site.

      If UML or DFD is concrete then how do you execute it? If you can't execute it then it is abstract.

      --
      Slashdot: where don knuth is an idiot because he cant grasp the awesome power of php
    9. Re:Ah there it goes again by Rakshasa+Taisab · · Score: 1

      http://xkcd.com/verizon/

      I must admit I've never heard anyone experience anything similar regarding kroner and øre... ^_^

      --
      - These characters were randomly selected.
    10. Re:Ah there it goes again by Anonymous Coward · · Score: 0

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

      He could also work for Verizon.

      Though they usually make the inverse of that mistake...

    11. Re:Ah there it goes again by selven · · Score: 1

      They're the same thing.

      Just Verizon's 0.002 cents.

    12. Re:Ah there it goes again by francium+de+neobie · · Score: 2, Funny

      He's contributing 5 995 849.16 m/s, which is much faster than the max speed of your car, sir.

    13. Re:Ah there it goes again by Anonymous Coward · · Score: 0

      or he works for verizon.....

      http://verizonmath.blogspot.com/

    14. Re:Ah there it goes again by Anonymous Coward · · Score: 1, Insightful

      CS is merely a *subset* of maths.

    15. Re:Ah there it goes again by Anonymous Coward · · Score: 0

      He is fucking contributing a 2% of the speed of light! He's as humble as Paris Hilton. Only that he has never had sex.

    16. Re:Ah there it goes again by Aceticon · · Score: 1

      A software program is essentially a complex logic structure. One of the disciplines in Maths is Logic.

      One could thus assume that a deep understanding of at least one of the areas in Maths is needed for Software Development.

      However Logic (the Mathematical discipline) is just a formalization of an innate human ability - one can think logically and create logical structures without actually knowing the formalization.

      Thus, in my view, a deep understanding of Math is thus not needed for Software Development.

      That said, knowing the basics of Maths is needed and in fact expected of everybody in Software Development, so much so that it's pretty much assumed that anyboy in or wanting to get into Software Development knows them.

    17. Re:Ah there it goes again by Anonymous Coward · · Score: 0

      Either that or (s)he's contributing a not-inconsiderable 5 995 849.16 m/s to the discution, speeding it along to a satisfactory conclusion.

    18. Re:Ah there it goes again by khallow · · Score: 1

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

      It's worth noting here that CS came from math back in the 60s and 70s. A lot of the earliest algorithms and related work were done by mathematicians and physicists.

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

      One doesn't need CS to program either. There's a lot of simple programming that doesn't need that. But knowing these skills empower a programmer and allow them to do a lot more than HTML layout.

    19. Re:Ah there it goes again by Anonymous Coward · · Score: 0

      This is why community college / certificate programmers are just terrible, and never come up with any unique solutions to difficult problems they can't solve on google. As a math+CS major, my mathematical foundation isn't important *every day* but often enough that I'd be inferior without it. This harkens back to a person saying Knuth and his book were obsolete in this python/php/java/.net/cocoa/easy-to-code high level world we live in a few weeks ago in a comment. Its simply not true.

    20. Re:Ah there it goes again by Anonymous Coward · · Score: 0

      No, he just works for verizon...

      http://verizonmath.blogspot.com/2006/12/verizon-doesnt-know-dollars-from-cents.html

    21. Re:Ah there it goes again by gy+equals+c · · Score: 1

      Perhaps he's contributing 2% of the speed of light, c.

    22. Re:Ah there it goes again by Anonymous Coward · · Score: 0

      but theoretical computer science is maths so yes, by his definition, maths is required. Of course, what he described is pretty much algebra, which again, is maths.

    23. Re:Ah there it goes again by Anonymous Coward · · Score: 0

      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. ;-)

      No, he works at Verizon: http://www.youtube.com/watch?v=zN9LZ3ojnxY

    24. Re:Ah there it goes again by Anonymous Coward · · Score: 0

      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. ;-)

      No, he works for Verizon

    25. Re:Ah there it goes again by Anonymous Coward · · Score: 0

      That or he works for Verizon.

      http://verizonmath.blogspot.com/

    26. Re:Ah there it goes again by mgessner · · Score: 1

      I was trying to figure out how to make a funny comment in which c represented the speed of light, and not $0.01.

      I failed massively.

      Any takers?

      --
      "Sometimes the truth is stupid." - Lawrence, creator of Prime Intellect
    27. Re:Ah there it goes again by Anonymous Coward · · Score: 0

      I agree 100% percent.

    28. Re:Ah there it goes again by Anonymous Coward · · Score: 0

      Consistency? Boy does Kurt Gödel have some news for you, my friend...

    29. Re:Ah there it goes again by Anonymous Coward · · Score: 0

      He works for Verizon.

    30. Re:Ah there it goes again by Anonymous Coward · · Score: 0

      "That, or"

      Neither, he works (or worked) for Verizon.

      See, proofs for 100% certainty in programming _are_ important.

    31. Re:Ah there it goes again by mr_mischief · · Score: 1

      CS is a subset of mathematics. Programming involves very little CS, though, unless you're working on an unsolved or especially thorny problem. Boolean logic, arithmetic, and very basic algebra can get a programmer very far in certain domains. Lots of programming domains involve higher math as part of the domain knowledge, though. I'd let someone without calculus write me a USB driver for some new device without hesitation. A good log analyzer doesn't take much mathematics and can be really useful.

      I'd really like the Census Bureau, NASA, the publisher of my accounting software, the game developer providing the 3D and physics engines for my new games, the utility company, the IRS, the guy recreating a car accident with simulation software for court, and the guys modeling the effects of the fertilizer plant upstream on my town's drinking water to have programmers who know more mathematics than is necessary for a log analyzer program.

      I think when people say that all "interesting" programs require higher mathematics, what they generally mean is that any program which is interesting to sit down and write does. Interest is a subjective thing, but there are certainly people who are interested in complex problems. Most complex problems in programming require lots of mathematics. Complex problems can exist in design and usability of applications which are fairly straightforward to actually implement after they are designed.

      If someone wants to develop software which doesn't require a lot of mathematics, there are certainly opportunities to do that. They may not be as interesting as those opportunities that do require lots of mathematics. A job that's boring is still a job. Whether someone wants to put up with a boring job is another issue.

  5. math skills essential by Anonymous Coward · · Score: 0

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

  6. They Help by ShakaUVM · · Score: 3, Insightful

    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.

  7. Well... by Anonymous Coward · · Score: 0

    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.

  8. Ignorant by Josh04 · · Score: 1

    > 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?'.

    1. Re:Ignorant by Anonymous Coward · · Score: 0

      More like "Ugh, when will *this* ever going too be usefull?" :p

  9. more than just 2+2 by saiha · · Score: 3, Insightful

    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.

    1. Re:more than just 2+2 by moteyalpha · · Score: 4, Informative

      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.

    2. Re:more than just 2+2 by QuantumG · · Score: 1

      I think that says more about Blender than it does about you.

      --
      How we know is more important than what we know.
    3. Re:more than just 2+2 by PerfectionLost · · Score: 1

      For those of you not in the know, the courses are here and free:

      http://ocw.mit.edu/OcwWeb/web/home/home/index.htm

    4. Re:more than just 2+2 by DMUTPeregrine · · Score: 1

      IME it applies to 3DSMax and Maya too. It's more intuitive than a mathematical understanding, but good luck texturing things without understanding mappings. Good luck figuring out why that object is transparent in some places without knowing about normals. Etc, etc.

      --
      Not a sentence!
  10. Needed. by Anonymous Coward · · Score: 1, Insightful

    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.

    1. Re:Needed. by tehcyder · · Score: 1

      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.

      Agreed, but this also applies to learning Latin or car mechanics or flower arranging - it's nothing to do with maths as such.

      --
      To have a right to do a thing is not at all the same as to be right in doing it
  11. Math skills are becoming more important by TheKingAdrock · · Score: 5, Informative

    ...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.

    1. Re:Math skills are becoming more important by gravos · · Score: 1

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

    2. Re:Math skills are becoming more important by TranceThrust · · Score: 1

      Mod parent up. Math is more than calculus. At its very base it's result-driven logical thinking combined with wanting to prove correctness of everything you do, within equally well-defined premises. Precisely what a programmer needs. And head on with the discrete math and combinatorics; graph algorithms will impact the computing world more and more.

    3. Re:Math skills are becoming more important by Anonymous Coward · · Score: 0

      How many people really work with Google-sized datasets? I think you are talking about a very small subset of the term Programmers. Of course it is good to have some basic understanding of, for example, algorithm complexity and O-notation, to work with any kind of dataset, big or small. A complete and thorough understanding of all those fields is hardly needed for most purposes.

    4. Re:Math skills are becoming more important by mizhi · · Score: 1

      Skill in statistics is essential. CS curriculums tend to have heavy Calc, Discrete Math, and Logic components. Statistics is usually relegated to a small component of the math requirements, poorly taught, and poorly understood. If I had my way, Statistics would be weighted as much as calculus in terms of importance.

      --
      Humorless sig goes here.
    5. Re:Math skills are becoming more important by Anonymous Coward · · Score: 0

      then why don't universities push this instead of the perversity that is Cal 4 for programmers

    6. Re:Math skills are becoming more important by Anonymous Coward · · Score: 0

      Calculus includes the Newton-Raphson method to find algebraic roots. So, some Calculus is well suited to computer programming.

    7. Re:Math skills are becoming more important by ImprovOmega · · Score: 1

      All of those except combinatorics were *required* for my Bachelor's degree in CS. The math curriculum at my university was so heavy that I took two extra classes (differential equations 1 & 2) and walked out with a math minor on top of a CS major. Combinatorics 1 & 2 were two of my early grad school classes, and I can't honestly say they're all that useful for day-to-day programming, at least in my experience.

      However, I will say that any and every math class will help make you a better programmer just by helping you learn how to think properly about the problem put in front of you. And the most useful part of my undergrad program was exactly that: proper styles of critical thinking for given problems. Math helps immeasurably with that in CS because everything in CS has its roots in mathematics.

    8. Re:Math skills are becoming more important by smellotron · · Score: 2, Interesting

      All of those except combinatorics were *required* for my Bachelor's degree in CS.

      That's interesting, because I always considered combinatorics to be fundamental in my college program. I do find it very relevant when talking about software, because even having the ability to compare control-flow paths makes a difference. Code littered with poorly-organized conditionals makes my eyes melt, and it all boils down to counting.

    9. Re:Math skills are becoming more important by mr_mischief · · Score: 2, Informative

      Not many people do work with data sets that size. However, some people only consider their work "interesting" when they are on the cutting edge of their field. It's one of those words for something subjective that people regularly take for objective. It also happens to be central to the orignal question. If the poster of the question has a different set of interests than the author of the cited article, then he could easily find that there is work interesting to him which doesn't require math more advanced than basic high-school algebra (and often quite a bit less).

      If digging through old log files looking for certain flag strings is "interesting" to someone, then they don't need much math for that. If they want to keep simple statistics on those strings, that's a little more. If they want to chart the deviations of the proximity of two different strings across multiple files, they're going to need more. If they want to figure the trajectory of a rocket-propelled space vehicle as it enters and leaves the gravity well of a gas giant, then seventh-grade math just isn't going to get them started. Lots of people would agree that working at Los Alamos or the JPL on really tough problems is the more interesting type of programming. Some people would be shocked to find out that others actually enjoy writing CRUD applications, device drivers, and log analyzers.

      Hell, some people enjoy writing accounting applications, or even enjoy being accountants and using it! Accounting does involve quite a bit of math, BTW, and not always just arithmetic. A mathematician or a physicist would be hard-pressed to do proper financial planning and corporate auditing like a CPA can for clients, though. There's a lot of domain knowledge about best practices, laws, regulations, and government incentives that an accountant needs to know.

      Some math is necessary for all programmers. Higher math is necessary when it's domain knowledge. Lots of work with computers is in graphics, simulations, modelling, encryption, and other fields that absolutely need math for their very basis. Other work requires advanced math for the sheer scale of the problems, because at some point throwing more expensive hardware at a problem just won't scale it vertically.

      To get a good, fast horizontal scaling someone needs to understand how to make the code work in parallel by some means. The front-end programmer of a vastly parallel system might not need to know quite how the back-end works. The guy who develops the back-end sure needs to, though, and probably so does the guy who supports the front-end developer in using the back-end services. Many, and I think most, CS-types would consider the back-end the interesting part of a parallel system. That's the part that needs the advanced math -- the interesting part, just as the article states.

  12. depends, becoming more important I think by Anonymous Coward · · Score: 0

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

    1. Re:depends, becoming more important I think by mikael_j · · Score: 1

      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.

      --
      Greylisting is to SMTP as NAT is to IPv4
    2. Re:depends, becoming more important I think by Ihlosi · · Score: 5, Insightful

      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.

    3. Re:depends, becoming more important I think by mikael_j · · Score: 1

      True, but that's assuming it would then be $500 of programmer time and not say, $50 000 (ten developers earning $60k per year spending an extra month developing the software because they focused on optimizing it), at that point a $0.01 saving per unit would require 5 000 000 units to sell in order for the investment in time to pay off.

      You also need to consider that a lot of development takes place in-house where you basically have a handful of machines that will be running the software, and in those situations one dev spending a week trying to accomplish what another 4 GiB stick of RAM could've handled just doesn't make sense (but you see it all the time because managers don't want to "waste" money on hardware).

      --
      Greylisting is to SMTP as NAT is to IPv4
    4. Re:depends, becoming more important I think by Rakshasa+Taisab · · Score: 1

      I guess at that stage it's the _MANAGERS_ who will be required to have math skils and....

      Oh dear... Oh... I see where this is going and _IT'S NOT PRETTY_!

      --
      - These characters were randomly selected.
    5. Re:depends, becoming more important I think by Anonymous Coward · · Score: 0

      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.

      Hands up everybody who's been in that situation.

      [tumbleweed rolls across the desert. In the distance, a bell rings]

    6. Re:depends, becoming more important I think by Ihlosi · · Score: 1

      Hands up everybody who's been in that situation.

      How about the legions of programmers who write the code for your computer peripherals, cellphones, toys, appliances, medical devices, cars, etc?

      Fact is: Stuff containing a "computer" of some sort (even if it's just a 4-bit microcontroller) is manufactured in the millions or even billions. The software for all this stuff doesn't write itself. Saving even a minimal amount on hardware cost by using better software pays off quickly if you're manufacturing a couple of hundred thousand units a year.

    7. Re:depends, becoming more important I think by Ihlosi · · Score: 1
      True, but that's assuming it would then be $500 of programmer time and not say, $50 000 (ten developers earning $60k per year spending an extra month developing the software because they focused on optimizing it), at that point a $0.01 saving per unit would require 5 000 000 units to sell in order for the investment in time to pay off.

      $0.01 in hardware is basically nothing. A few resistors or capacitors, maybe. Now, if you can use a smaller processor and save even just $0.50 per unit, then even spending $50000 on those savings can pay off pretty quickly if you're selling upwards of a hundred thousand units per year.

    8. Re:depends, becoming more important I think by mikael_j · · Score: 1

      But most developers aren't coding for an integrated platform where cutting down the number of cycles used by 0.003% means manufacturing costs over the course of the next year will go down by $n, they're writing code that will either be sold to customers or used in-house on off-the-shelf hardware where for the most part features, stability and maintainable code are all things which are more important than the end user (be it Joe Sixpack or the corporate sysadmin) not having to spend another $100 or so on hardware.

      --
      Greylisting is to SMTP as NAT is to IPv4
    9. Re:depends, becoming more important I think by Anonymous Coward · · Score: 0

      Optimisation is always king as most programming issues scale in a none linear way.

    10. Re:depends, becoming more important I think by khallow · · Score: 1

      I have been. About $500 of effort to find a simple error (not my error) in XML parsing code (yuck it up you guys, I need to eat too) that sped the code up by a factor of 4. That's 3-4 years in Moore's Law. A similar amount of effort found another speed up that, if the project had lived long enough (its death, as you can guess, wasn't much of a surprise), would have sped up the program initialization by a factor of ten or more. These were simple almost trivial errors, but someone had decided not to go looking for them because they believed in premature optimization.

      IMHO there is no such thing as premature optimization. There is such a thing as spending too much effort in optimization. The distinction is relevant.

    11. Re:depends, becoming more important I think by marcosdumay · · Score: 1

      Ok, if you want to map it to the CRUD world, those optimizations could very easily save a farm of 5 $25,000 servers. And most of the time optimizations come for "free"*, one just needing to call the right function for the situation.

      * That is not really free, since a developer that knows how to do that will earn a bit more. But there doesn't need to be any productivity lost, often it even increases, sometmes faster than the paying amount.

    12. Re:depends, becoming more important I think by Anonymous Coward · · Score: 0

      That is very true. But it is still better to solve the problem and then go back and optimize later. That way you can measure what is slow so that you don't optimize the wrong part.

    13. Re:depends, becoming more important I think by fishexe · · Score: 1

      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.

      You can tell GP is also of the "math isn't important" camp.

      --
      "I don't care about the Constitution!" --Bill O'Reilly, November 17, 2009
    14. Re:depends, becoming more important I think by mini+me · · Score: 1

      Premature optimization is the act of optimizing an algorithm that (usually) achieves no appreciable benefit to the overall application from the optimization. For example, if you have a function that takes 0.5ms to complete and it is only called once in the lifecycle of the application, there is essentially no benefit in optimizing it to run in 0.1ms.

      What you did is exactly what those against premature optimization advocate. Write the software first, then go back and identify the bottlenecks and optimize those problem areas as needed. Do not spend hours optimizing an algorithm that does not slow down your application in any meaningful way, it is a waste of time.

    15. Re:depends, becoming more important I think by khallow · · Score: 1

      Premature optimization is the act of optimizing an algorithm that (usually) achieves no appreciable benefit to the overall application from the optimization. For example, if you have a function that takes 0.5ms to complete and it is only called once in the lifecycle of the application, there is essentially no benefit in optimizing it to run in 0.1ms.

      That's not what "premature" means. It means doing something too early.

      What you did is exactly what those against premature optimization advocate. Write the software first, then go back and identify the bottlenecks and optimize those problem areas as needed. Do not spend hours optimizing an algorithm that does not slow down your application in any meaningful way, it is a waste of time.

      These were errors that vastly slowed execution of the program. They should have been caught much earlier than they were. I was an outsider who was trying to make the code work so my group could study it. It was dog slow so I ran a profiler on it and picked up these errors rather quickly (for example, 75% of the program's time was spent in the XML parser). Point is this program was running slow enough that it had to be greatly harming the development process. Sure, some code had to be developed in order for this error to even exist. But the developers didn't need to write the whole program first in order to profile some of the high demand stuff they had. The program was still far from finished when I had my crack at it.

    16. Re:depends, becoming more important I think by mr_mischief · · Score: 1

      Again, that key and subjective term "interesting" rears its ugly head. Is writing another office suite really "interesting"? The answer depends on who's answering. Is writing code for the newest, sleekest phone's new embedded OS and wringing out that extra 0.003% of performance in the kernel's paging code interesting? It probably is to most CS and EE types.

      The fact is, people who use software development as a tool for communications and commerce often have a different idea of "interesting" from people who write the software everyone builds their stack above. The guys writing models of EM radiation they should be seeing from distant galaxies, testing those models with real-world data, then looking for different wavelengths because they're not finding what they expected have an entirely different use for the computer from eBay, Microsoft, Nokia, or Novell. They're probably not interested too much in military cryptanalysis, but both the physicists and the cryptanalysts are using some serious math. The guys at Motorola, Nokia, et al might be using some serious math, too. You can be sure the folks at Google, AMD, Intel, nVidia, IBM, TSMC, and the like are.

    17. Re:depends, becoming more important I think by mikael_j · · Score: 1

      Obviously most developers would agree that writing "real" code is a lot more fun than cranking out yet another CRUD website, but there is also plenty of work which is interesting to a lot of developers and which doesn't outright require heavy math skills. That said, I generally prefer working on backend code myself since that's where the interesting problems tend to be (spending a couple of days trying to code around browser bugs for a webapp seems to make any reasonably skilled developer feel the same way).

      --
      Greylisting is to SMTP as NAT is to IPv4
    18. Re:depends, becoming more important I think by mikael_j · · Score: 1

      No, I believe math is interesting and important but the original statement was that "day to day" programming these days increasingly required math skills. My experience is exactly the opposite of this, these days most of the boring stuff that previously still required math skills to solve can now often be done simply by calling the right library function.

      --
      Greylisting is to SMTP as NAT is to IPv4
    19. Re:depends, becoming more important I think by mr_mischief · · Score: 1

      I was a web app developer once. I'd say there are two good ways of working around browser bugs when working on the front end. One is to use a library on which someone else spent the time fixing the special cases. The other is to have as little in the front end JS as possible -- just enough to get new info from the back end and display it without munging it in the client too much. Oh, and avoid any MS browser for any part of the site to which the general public doesn't absolutely need access.

      Now I'm looking into getting back into a non-development IT role or going back to school for something not so much related to computers. I'm kind of burned out on the industry churn.

      When I develop something at home because it interests me, sometimes it needs a good deal of math and sometimes it doesn't. If it does, I usually ask for some help. I know some basic matrix algebra, some simple statistics like standard deviations, and some elementary functions of calculus.

      I can still do quadratics in my head, but I was never that interested in math even though I didn't have any particular difficulty with it. I'm more of a language guy. My standard college entrance exams point that out quite nicely. I did enjoy word problems and geometric proofs, though. That's part of why I enjoyed programming at first. It's all word problems, as far as the mind can see.

      Maybe if I had more math background I'd still be really interested in the field, but simulations and games have always been more fun to run than to write for me. Accounting, for me, sucks big sweaty donkey balls, and so would writing accounting software. I really enjoy writing software to help people communicate, like my old dial-up BBS, telnet BBSes, talkers, forum software, business/client relations sites, NFP websites, and stuff like that. I really hate many web clients, though, as most think $1200 per year for a phone book ad is more reasonable than $2400 just once for a site that actually tells their customers something and can even close a sale without tying up a salesperson. People balk at spending per year for a web presence what they spend a month on billboards. That's why there's so much shitty web code out there, and so many burned-out web programmers. The good clients are out there, but good luck finding enough to keep a shop open. The hard math in independent web shops is figuring out how much money you'll be able to draw month to month.

      I'm still thinking about doing my own online store or some niche-target blog/forum with ad support. I just am really sick of dealing with writing and customizing software for other people's businesses. In the meantime, though, I think I'm going to see if another career path might suit me better. Maybe law, or hell maybe construction. That pays well enough for my modest needs and I won't have to worry about non-competes or intellectual property issues if I develop something in my spare time.

    20. Re:depends, becoming more important I think by mini+me · · Score: 1

      That's not what "premature" means. It means doing something too early.

      Exactly what I said; optimizing an algorithm before it is shown to be a bottleneck or have any significant impact on application performance is premature optimization.

      They should have been caught much earlier than they were.

      If it is discovered to be a bottleneck, it should be optimized. It seems the guy before you didn't believe in optimization at all.

    21. Re:depends, becoming more important I think by fishexe · · Score: 1

      No, I believe math is interesting and important but the original statement was that "day to day" programming these days increasingly required math skills. My experience is exactly the opposite of this, these days most of the boring stuff that previously still required math skills to solve can now often be done simply by calling the right library function.

      Was a joke. I was referring to your failure to realize that the $500 expenditure on development was a one-time cost while the $50 savings on hardware is a per-unit savings, so it only takes 10 units sold to make up the difference. Simple math. Ha ha. Joke.

      --
      "I don't care about the Constitution!" --Bill O'Reilly, November 17, 2009
    22. Re:depends, becoming more important I think by khallow · · Score: 1

      Exactly what I said; optimizing an algorithm before it is shown to be a bottleneck or have any significant impact on application performance is premature optimization.

      You can't show that an algorithm needs to be optimized, if you don't look. If you are looking, you are attempting to do optimization. The point is that even looking for optimization was considered "premature".

      If it is discovered to be a bottleneck, it should be optimized. It seems the guy before you didn't believe in optimization at all.

      He believed in "premature" optimization.

  13. Necessary by Anonymous Coward · · Score: 0

    '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.

  14. Flavors of Math - Simplex-Algo vs Countability by hashstamp · · Score: 1

    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.

    1. Re:Flavors of Math - Simplex-Algo vs Countability by Anonymous Coward · · Score: 0

      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.

    2. Re:Flavors of Math - Simplex-Algo vs Countability by u38cg · · Score: 1

      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.

      --
      [FUCK BETA]
    3. Re:Flavors of Math - Simplex-Algo vs Countability by hashstamp · · Score: 1

      Functional analysis .. essential to quantum theory

      I stand partially corrected. Certainly Hilbert-spaces are essential to quantum theory and I see that they are a subtopic of the Wikipedia article on "Functional Analysis". But like you say in my introductory course they spent a lot of time on countability and we never got around to the "applied" part.

    4. Re:Flavors of Math - Simplex-Algo vs Countability by u38cg · · Score: 1

      It's an unfortunate by-product of them not wanting to do separate courses on things like measure theory, because they know undergraduates will sleep through them. So you need an emergency primer on such things when you do come to study something useful.

      --
      [FUCK BETA]
  15. Math is not sufficient in most cases. by Nowhere.Men · · Score: 1

    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.

    1. Re:Math is not sufficient in most cases. by TeXMaster · · Score: 1

      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

      --
      "I'm never quite so stupid as when I'm being smart" (Linus van Pelt)
    2. Re:Math is not sufficient in most cases. by Nowhere.Men · · Score: 1

      Sorry if I expand on the question a little bit.

      It is true I do not have math skills, I could not creates new paradigmes, ...

      I have physics skills. Which include solving problems using physics and math.

      IT skills includes solving problems using IT knowledge and sometimes, some maths.

      Solving problem is not a mathematical skill.

      Math is a vast field. most of which is useless for any IT people.

      For mostly anybody really. as most mathematical knowledge is in deep very specialized fields that only a few people used to make research.
      And that's true to all research domain nowadays.

      Most fields use the math language and a subset of the research domaine. e.g. Linguistics will use statistics but not topology.

      .

  16. Anecdotally... by adolf · · Score: 0, Offtopic

    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.

    1. Re:Anecdotally... by Anonymous Coward · · Score: 0

      Who cares?

  17. Create value in your brain by Statecraftsman · · Score: 2, Insightful

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

  18. Math skills essential? Of course, but... by lowlymarine · · Score: 1

    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.

  19. I aint taken to cypherin like my cousin Elly-Mae by NewtonsLaw · · Score: 1

    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.

  20. Not really by should_be_linear · · Score: 1

    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.

    --
    839*929
  21. Necessary. by Draele · · Score: 1

    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.

  22. YES! by Anonymous Coward · · Score: 0

    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!!!

  23. linear algebra < math by Anonymous Coward · · Score: 0

    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.

  24. code monkeys by Mirar · · Score: 1

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

    1. Re:code monkeys by u38cg · · Score: 1

      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.

      --
      [FUCK BETA]
    2. Re:code monkeys by tehcyder · · Score: 2, Insightful

      (Figures totally out of the air.)

      I think you need some statistics training :-)

      --
      To have a right to do a thing is not at all the same as to be right in doing it
    3. Re:code monkeys by jonaskoelker · · Score: 1

      (Figures totally out of the air.)

      I think you need some statistics training :-)

      I think he did quite well, actually :p

  25. No one answer by ashelton · · Score: 1

    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.

  26. If you're asking... by vikstar · · Score: 2, Informative

    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.

    --
    The question of whether a computer can think is no more interesting than the question of whether a submarine can swim.
    1. Re:If you're asking... by BadAnalogyGuy · · Score: 1

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

  27. Brain for Programmers - Necessary or Not? by Anonymous Coward · · Score: 0

    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...

  28. Logic is important by zr-rifle · · Score: 1

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

    --
    Hack your mind out of its sandbox.
  29. Yes and no by poor_boi · · Score: 5, Insightful

    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, 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.

    1. Re:Yes and no by weicco · · Score: 1

      I've been in the field for 10 years now and mathematical operators I've used so far are plus, minus, add, divide and modulo. Oh, and on one project I needed to use Pythagoras so add POW and SQRT. When you work with simple business applications you don't need to do complex calculations :)

      --
      You don't know what you don't know.
    2. Re:Yes and no by Anonymous Coward · · Score: 0

      Hell, a typical compiler can even do without divide! (you can fake it with right shift anyway)

      P.S. plus and add are the same.

    3. Re:Yes and no by Ihlosi · · Score: 1

      When you work with simple business applications you don't need to do complex calculations :)

      You still need to know how to do the not-so-complex calculations correctly. Especially in business applications.

    4. Re:Yes and no by weicco · · Score: 1

      Yes, of course. But that's nothing more complex that, for instance, calculating how many boxes we have in storehouse, how many product items in those boxes, adding up them together, grouping them by product etc. You can do that with pretty simple SQL query without great knowledge about maths.

      Now of course if you don't even get THAT right then you better move to do something else.

      I know I wouldn't be able to do, for example, 3D graphics. I've understood that you need to do some weird mathematical operations which looks like witchcraft to me to get objects running around the screen. I stay away from those kind of jobs, leave them to the experts in that field, and concentrate in what I'm good at. So effectively I don't need great knowledge about maths to do my job. I think I could learn more about maths but don't see the point in it.

      I hope this clears my point and I'm not underrating those that do know a great deal about maths. In fact, I'm a little jealous :)

      --
      You don't know what you don't know.
    5. Re:Yes and no by ImprovOmega · · Score: 1

      If you deal regularly with SQL queries then you're reasonably adept at set theory, whether you've had formal training in it or learned it the hard way on the job.

    6. Re:Yes and no by Rich0 · · Score: 1

      Sounds like programmers should take accounting then. :)

      Accounting isn't about the math - it is about incredibly anal-retentive levels of consistency and detail. This is what allows a bunch of accountants working for a 100k employee firm to cascade up their figures from every level of the business and get final results that actually mean something.

      I agree with the parent - it really depends on what you're doing. I've found that 100% of what you learn in college is applicable somewhere, and about 10% of it is applicable in any particular job, and maybe 30% of it is generally useful. If the almighty BS weren't used as a filtering tool for candidates, I'd suggest that people just take a few useful courses in a semester or two and then get out in the real world - going back to take odd courses as they are needed.

    7. Re:Yes and no by weicco · · Score: 1

      Well, maybe. I know nothing about set theory but I do know what different SQL statements do and how to use them. I simply learned by trying and reading a lot of MSDN. Hmmm. Maybe I try to read something about the set theory if I find an article about it written in my native language (which isn't English). It might help me in my job! :)

      Maybe programming is more about logic than maths? I personally find programming to be most logical. If I do this, the outcome is that and if I reverse that, then I get this. So if X+1=2 then it must be that X=2-1. I know that it maths but it's a really logical clause which even I can understand. I can follow execution paths in my mind, even if the program is threaded, because I know that if this happens then execution must go there and so on. This btw helps a lot when fixing bugs.

      Maybe someone should ask a question: Is logical thinking necessary for programmers or not?

      Btw. My friend when he saw this Slashdot article said "Is German language necessary for programmers - Yes if you need to localize your stuff in German" :)

      --
      You don't know what you don't know.
    8. Re:Yes and no by shermo · · Score: 1

      "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, then keep their jobs, and make good money doing it. So there's a spectrum.

      Aaaah, Expert Sex Change, you never fail to deliver.

      --
      Insanity: voting in the same two parties over and over again and expecting different results
    9. Re:Yes and no by mr_mischief · · Score: 1

      The key word in your post is "simple". Business software is a broad category which includes financial forecasting, statistics for the marketing department (real marketing is more than advertising and PR, after all), product defect estimations, and a whole bunch more stuff that requires more than arithmetic.

      The question, remember, wasn't how much math was necessary to get a job somewhere doing some kind of software development. The question posed was whether, considering the types of programming there are, whether higher math skills will be necessary to do "truly interesting work" in the field of software development field in the near future.

      Do you consider your work "truly interesting"? If you do, good for you. The world will always need people to do it, so you may as well enjoy it if you can. Lots of other people wouldn't call it interesting work, at least not by comparison with the state of the art in large grid applications.

    10. Re:Yes and no by weicco · · Score: 1

      Yes, you are right. It all depends on what you do. If you write applications that do financial forecasting then you're gonna need some skills in statistics.

      But I still have to politely disagree a bit. We have house full of people with expert knowledge about statitics and stuff. They come to us (that's the IT department) and asks us for a raport about this and that. They give us formulas how to calculate this and that and we just implement it. When we have these kind of people in markenting and sales I don't think it would do any good for me to start learning that stuff :)

      And yes, I'm happy about my work. I'm implementing warehouse system which saves houndreds of thousands euros a month for my employer so why wouldn't I? I'm gonna get big bonuses when the system is up and running! \o/

      --
      You don't know what you don't know.
    11. Re:Yes and no by mr_mischief · · Score: 1

      Well, that is a bit of disagreement, but not a big one. Your programmers have to be comfortable enough with math to implement it in code, and your company's other departments by giving you the formulas are actually helping write the software a little. I imagine your coders can at least double-check the results once they have the formula to make sure the values make sense before giving the report output to management. If not, then your statistics experts are really helping test, too.

      I'm glad to hear you enjoy your work. I wish more people enjoyed what they do for a living. Still, even when you save the company all that money, I'm betting any articles about the system that get written are published in business rather than technology circles. I think that's the kind of distinction the author meant by "truly interesting work". I wouldn't say saving a company lots of money is boring. I'm just not sure that's the particular kind of interesting some others programmers are discussing.

  30. "Truly interesting stuff"? by Anonymous Coward · · Score: 0

    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.

  31. Maybe it's cart horse... by Joce640k · · Score: 4, Interesting

    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.

    --
    No sig today...
  32. lamport on math and distributed systems by Paradigma11 · · Score: 2, Interesting

    here is an interesting video with leslie lamport ( http://en.wikipedia.org/wiki/Leslie_Lamport ) : http://channel9.msdn.com/shows/Going+Deep/E2E-Erik-Meijer-and-Leslie-Lamport-Mathematical-Reasoning-and-Distributed-Systems/ "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.”

    1. Re:lamport on math and distributed systems by epine · · Score: 4, Insightful

      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

    2. Re:lamport on math and distributed systems by Anonymous Coward · · Score: 0

      Perhaps you might say that math is the medium of communication for these ideas to others.

    3. Re:lamport on math and distributed systems by frank_adrian314159 · · Score: 1

      "When you understand something, then you can find the math to express that understanding. The math doesn't provide the understanding."

      I agree with this. However, Lamport here is being a bit short-sighted. One of the most useful aspects of mathematics is to take an understanding about a limited number of cases and allow one to formally build that to a proven understanding about a large number of cases. It can also provide insight about potential behavior of a system that might not be obvious from only the initial understanding. Math doesn't provide understanding, but it can extend that understanding.

      --
      That is all.
    4. Re:lamport on math and distributed systems by Anonymous Coward · · Score: 0

      I'm horrible at math, and an amateur programmer, but I did go to school for music and play professionally for ten years.

      I can tell you that perfect pitch (knowing immediately that a 440 Hz tone is an A when you hear it) is not a requirement to excel as a musician. What you need is good relative pitch (being able to perceive intervals between tones).

      Perfect pitch can actually be bothersome, since pianos are often slightly out of tune. All the other instruments to the piano, since it's not practical to tune a piano before every gig. If you are deeply afflicted with perfect pitch, it will annoy you all night.

      I'm sure there's a programming analogy somewhere in there, but, like I said, I'm an amateur.

    5. Re:lamport on math and distributed systems by Anonymous Coward · · Score: 0

      My variant of the "Pareto Rule" is that most of what one needs to do for a computer programming has very little to do with programming.

      For example, the programming of a mathematical package requires knowledge of mathematics to be sure, but most of the design and implementation of the algorithims has to do with math itself and a lot to do with how the data is fed into the calculations and how the results are packaged for usage by the end-user.

      Most programming efforts forget that humans are almost never perfect in their efforts. Programming is intrinsically prone to failings of humans with a very limited ability of their mind to precisely analyze extended logic trees with recursive and random branches (look at your operating system failings for reference).

      All programming efforts result in a tool for someone else to rely on who will behave in unpredictable ways, so software systems that rely on immaculate logic of their creator are doomed to fail because some confluence of events will not have been thought of beforehand. Defensive programming is the only way to go. All programming must have debugging and assertion checks built-in (and with those checks easily inserted and removed by a non-author).

      Projects with authors that have stovepipe interests and training are certain to have problems, with such stovepipe persons defending the time and energy they expended to achieve their stovepipe expertise. This tends to result in a lot of blindsided logic. Note that malware authors seem to be particularliy adept at taking apart software security logic not designed with hardware, operating system, and human weaknesses in mind.

  33. Honest answer by R.Cad0r · · Score: 0

    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.

  34. You'll need mathematical concepts for everything by Arancaytar · · Score: 1

    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 )

  35. Re:Maybe it's cart horse... by AuMatar · · Score: 1

    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.

    --
    I still have more fans than freaks. WTF is wrong with you people?
  36. strange FA by roman_mir · · Score: 1

    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.

  37. Programmer by BlackHawk-666 · · Score: 0

    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.

    --
    All those moments will be lost in time, like tears in rain.
    1. Re:Programmer by tehcyder · · Score: 1

      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.

      It would have been good if a few people with mathematical skills had been employed as auditors for the financial systems of the various financial institutions that used esoteric mathematical formulae to legitimize their absurd risk-taking.

      --
      To have a right to do a thing is not at all the same as to be right in doing it
    2. Re:Programmer by wombley · · Score: 1

      Um... mathematicians CAME UP with those same esoteric mathematical formulae - having a mathematics degree used to be one of the best ways to get into that kind of institution.

  38. Only needed for game development by mogness · · Score: 0

    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.

    --
    that's teh shizzle bizzle
  39. Set theory by Alioth · · Score: 1

    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.

    1. Re:Set theory by Anonymous Coward · · Score: 0

      "Set theory" as thought of by math people means the theory of infinite sets. They don't occur much in programming, or even much in mainstream math. The lowest order of infinite set is the cardinality of the integers (1,2,3,...). Call this "beth_0" (beth is the second letter of the Hebrew alphabet--you might be more familiar with "aleph_0" which is the same thing as beth_0, I'll explain later why we're using beth instead of aleph). There is a level above beth_0 called beth_1, which is the cardinality of all the subsets of the integers, a/k/a the cardinality of the reals ("Cantor's diagonal argument" shows why beth_1 is larger than beth_0). You deal with sets of size beth_0 and beth_1 a lot in math. Above beth_1 comes beth_2, the cardinality of the set of all real-valued functions. You deal with that in math too, if you study things like Hilbert space. Next is beth_3, which is relevant to pointy-headed theories about operator algebras or some such. Maybe there is even some use in mathematics for beth_4, but it's obscure and abstract. The usefulness of the beth levels pretty much stops after level 3 or 4. But of course there's infinitely many of them, not just for every integer, but there is even beth_(beth_(beth_27))) and worse. In fact you can nest the levels of beths infinitely deep, and get something called a "strong limit cardinal" but it gets even worse than that. This is the kind of stuff you study in set theory, levels of infinity that are just inconceivably large, and utterly irrelevant to anything practical.

      Oh yes, why did I say beth instead of aleph? Because while aleph_0 and beth_0 are the same, aleph_1 is defined as the next cardinal than aleph_0, while beth_1 is defined as the cardinality of beth_0's subsets. We know that beth_1 >= aleph_1 but we don't know whether they are equal (this is called the "continuum hypothesis", also called "CH"). That's another bizarre story of set theory. In 1900, David Hilbert gave a list of 23 important unsolved problems, and CH was #1. 60 years later, Paul Cohen proved that CH -COULD NOT BE SOLVED- in standard set theory. Godel (of the incompleteness theorem) proved in the 1930's that CH is "consistent", which means if you assume it's true you won't hit any contradictions, but you don't know that it really -is- true (Godel thought it was false, but not provably false). Cohen around 1960 also showed you won't hit contradictions by assuming CH is false.

      So what do set theorists think about now? Among other things, discovering if CH is "really" true, by making up new axioms and seeing if they sound plausible. Again, most seem to think CH is false.

      Anyway, that's set theory, just about the most useless subject in mathematics.

    2. Re:Set theory by EvilErik · · Score: 0

      I love the smell of a pissed off maths major in the morning

  40. Math vs logic by bguiz · · Score: 1

    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.

  41. Re:Maybe it's cart horse... by lgw · · Score: 5, Insightful

    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.

    --
    Socialism: a lie told by totalitarians and believed by fools.
  42. Depends on what you mean by "programming" by headLITE · · Score: 2

    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.

    1. Re:Depends on what you mean by "programming" by mjwalshe · · Score: 1

      Depends for non commercial programming its essential - for example back in the early 80's I was asked to develop a system to track the droplets from fire sprinklers in 3d.

      They had worked out a way to photograph the droplets using timed coloured flash lights and a very shallow depth of field lens. I was told ok we have brought an A0 digitizer(which was an expensive and cutting edge piece of kit for the time ) off you go Maurice go and talk to the Engineer and brainstorm a solution then implement it (and write the driver code and the interrupt routine to do the low level interfacing)

      It’s only basic stuff technician maths but was a fun project - not so much fun for the RA that had to digitize all the droplet paths though.

    2. Re:Depends on what you mean by "programming" by Bipoha · · Score: 1

      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.

      I'd have to agree with this. The programmers I work with have probably never written a quick_sort() routine in their life, but surely they write code that implements a sorting routine somewhere.

      We're in an age where, "There's an API for that!" and a complete newbie can jump in and make a program that functions fairly well. Not to mention the consumer base is progressively becoming content with mediocrity, especially when it comes to programs.

      Finding people who can program in assembly language, or C is probably getting more difficult. Are they needed? Of course, but not nearly much as the many high-level coders that we need today.

      Today, coders can get away with nested if/then/else structures that run 70+ levels deep, because it works, and computers are fast enough to where speed is negligible until a user complains about it, and only THEN is it addressed.

      Ask around and see what coders today say about Big-O notation or memory management. They just don't need to care about those things any more.

    3. Re:Depends on what you mean by "programming" by Anonymous Coward · · Score: 0

      The best (and most accurate) answer I've seen so far. :)

    4. Re:Depends on what you mean by "programming" by Anonymous Coward · · Score: 0

      I'd say you need:

      1st. Domain knowledge
      joint 1st. Software engineering skills
      2nd. Math
      3rd. A good text editor
      4th. Computer science

    5. Re:Depends on what you mean by "programming" by nedlohs · · Score: 1

      There was a qualifier: "truly interesting work".

      Sure you need no math at all to write a shitty web forum, but that's not interesting.

      Of course different people have different definitions of interesting, and people who have good math skills probably are biased toward finding things that involve math interesting (that's part of the reason they have those skills after all).

    6. Re:Depends on what you mean by "programming" by pla · · Score: 1

      You don't need math skills for programming work.

      Why yes, thank you, I would like fries with that webpage.

      This topic simply amazes me every time it comes up... Yes, you most certainly need decent math skills to work as a halfway decent programmer. No, every line of code you write won't require solving PDEs, but you will use, at a minimum, algebra, geometry/trig, and combinatorics (whether you know it or not) on a daily basis. And on the DB side, you'd damned well better know set theory inside and out.

      Most code you write in the real world, in my experience, involves page after page of conditionals. No one "enjoys" that part of the job, we do it to cover our asses against the myriad crap users will try to force-feed a program. But after 500 lines of checking that nothing can possibly go wrong, at some point you need to do something with all that information. You need to plot sales trends, or minimize cost functions over several independent variables, or turn a list of options into a manufacturing-floor ready bill-of-materials (don't ever say "BOM" in an airport - I know this from personal experience) for a 747, or track a missile moving in 3d space toward the game's hero.

      Yes, you can find formulas with Google. And if you don't have a solid background in math, you will misuse them (or fail to realize a far, far easier and more efficient solution exists).

    7. Re:Depends on what you mean by "programming" by Anonymous Coward · · Score: 0

      I'd like to see you write any signal processing code without math skills. De-bayering sensor output? Doing color transforms? Noise filtering. That's not theoretical CS, that's the code that makes your point and shoot work.

  43. Strong Math Skills often get dumbed down by DaScribbler · · Score: 3, Insightful

    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'.

    1. Re:Strong Math Skills often get dumbed down by Anonymous Coward · · Score: 0

      That's where good documentation should come in. I don't mean commenting every line, just appropriate naming of the function, a comment above the algorithm either naming it (e.g. Dijkstra's path finding algorithm), or just giving an idea of how it's supposed to work.

      Secondly, what the fuck is the PM doing reading code if he doesn't understand it? His job is to manage the project, not try and understand every line in it.

    2. Re:Strong Math Skills often get dumbed down by Anonymous Coward · · Score: 0

      Slick algorithms truely are nothing special. Slick algorithms which are broken down into something readable, and rational, are very special. It's too easy in many languages to write antalgorithm in a way which is confusing. It's rare these days to need to write an algorithm which uses ordering tricks so that the code will be optimal for the processor's register set. C/C++ compilers will handle a great deal of the optimization for you.

      People that think generating a really cool algorithm is somehow a great idea, but which no one else on their team can understand without breaking it down, are fooling themselves. Sometimes crap like that will get you out of a job.

    3. Re:Strong Math Skills often get dumbed down by WinstonWolfIT · · Score: 0

      that's called maintainable code, son, and if you don't understand that you'll never stick on a large-scale development team.

    4. Re:Strong Math Skills often get dumbed down by Anonymous Coward · · Score: 1, Interesting

      Spoken like a true wonderboy. If you are the only one on your team that can understand your algorithms, then the problem is not with your team. Why? Well, the "inferior" skills of the others on your team would imply that you are not working on software that requires the most efficient algorithms. In these cases, maintaining the software is more important than reducing memory footprint or a slight performance benefit. If you were coding critical paths, then that would be different, but then you would probably be on a team that understands this. Who knows, maybe you are and you are too arrogant to understand that others may know more about the situation than yourself.

    5. Re:Strong Math Skills often get dumbed down by khallow · · Score: 2, Funny

      I think that's a bit too complex. You need to dumb it down a little.

      Thog no grok means code no work when you gone.

    6. Re:Strong Math Skills often get dumbed down by Anonymous Coward · · Score: 0

      If the coder with great math skills also had half-decent coding skills then he'd package up his code into an easy-to-use API, add some documentation, and all the other developers can happily use it.

      If that coder was a great developer, then they'd realise that someone has almost certainly already done that, and just download that library, use it, and get on with their real work.

    7. Re:Strong Math Skills often get dumbed down by Anonymous Coward · · Score: 0

      Readability is never about complexity of the algorithm. It's about proper coding standards and encapsulation. If your *dumb* project manager can't figure it out it's likely that the next *math guy* will find it annoyingly difficult to follow too and that's more of a reflection on your skill as a developer than the fact that you got the algorithm to work in the first place.

    8. Re:Strong Math Skills often get dumbed down by Anonymous Coward · · Score: 0

      /me has been told that about regular expressions... I told them that I could use a regexp or write 8 pages of buggy and impossible to fully debug loops to do this instead... They grumbled.. When something works it's easy to do this. When something is hard, and doesn't work yet, then you are at your weakest. If you try something clever, you may be pressured then to do something in a stupider way that your current muckety muck can get their head around. Without the complete solution you can be forced to restart from zero with a dumber strategy. Mostly it's better to try an placate them until you figure it out. This works if you are using a decent tool meant for real programmers, but if your tool is designed for er.. I'm posting AC so I guess I'll say it - amateurs then likely the maker of your tool hasn't anticipated that the users would be clever enough to do something smart and have not been so clever themselves as to design the tool in a way that won't *surprise* not do what it ought to, blocking
      your reasonable plan. Using a tool designed for programmers saves you such surprises. You can have faith enough that if you come up with clever idea X and want to implement it in programming language X that there IS a way even if you haven
      't know what it is to do X using the programming language. If you are using some kind of cantalope to 'code' with, then just because your idea is reasonable doesn't mean it's possible. You have to have completed implementation of it in order to promise it.

    9. Re:Strong Math Skills often get dumbed down by marcosdumay · · Score: 1

      And that is part of the poblem. If you make your best programmers code to the standard of the porest ones, they'll all have the same productivity. Since they have the same productivity, why do you pay more to the good programmers? Now, once you fire all but your worst programmers, things sudenly stop working and cost orders of magnitude more.

    10. Re:Strong Math Skills often get dumbed down by cervo · · Score: 1

      The important thing to remember is that Algorithms often take a long time to get right. Even something as simple to us now as binary search took years for a correct implementation to appear. The rule should be do the simplest thing first and then if it is too slow optimize.

      Programs are written more to be read by humans. That's why languages like Python/Ruby/Perl/Ruby/ASP.NET/Java are all becoming more favored than C. They are easier to write and easier to read (Perl is debatable...but if done right it is readable..). For example, if someone used:
      a = a xor b
      b = a xor b
      a = a xor b
      to swap two integers instead of the more common way of temp = a; a = b; b = temp; I'd probably strangle them.... There is an easy way to do it that performs well, so there is no need to go to "advanced" tricks.

      Anyway the more clever the code is made, often the more assumptions it makes. And then when something breaks you run into trouble. For example, maybe you have a list and the simplest thing is to linear search it via an iterator and the performance is fine. Now maybe someone decides to prematurely optimize it using a hash table to look things up. They define the size of the hash table and figure it won't grow bigger than that. Then it does and the code crashes. Or they write an expandable hash table but then end up with bugs in the memory allocation code. The sequential search would have been easier....

      Anyway time = money. Quite often after investigating a bug, I won't be allowed to fix it because it is too expensive (if I touch the code, we end up owning it, and if the vendor corrects the code, they charge support time on our contract...), so they instead prefer to work around it.

    11. Re:Strong Math Skills often get dumbed down by tthomas48 · · Score: 1

      Actually generally what happens is that one of your team members runs your really slick algorithm and realizes that it runs 10 times slower than the one that's built into the language in real world situations and rips it out.

    12. Re:Strong Math Skills often get dumbed down by smellotron · · Score: 1

      a = a xor b
      b = a xor b
      a = a xor b

      I've seen someone use an interview question to which the only correct answer was this. Oh, the horrors...

    13. Re:Strong Math Skills often get dumbed down by cervo · · Score: 1

      That's where I originally saw this trick, in some list of common interview questions. Anyway I wouldn't have figured it out on my own...

      But none of my employers have been disappointed in my work...Although maybe in an embedded system saving the RAM from an extra variable might matter. But I'm not sure a single integer would make any difference in the grand scheme of things....

    14. Re:Strong Math Skills often get dumbed down by WinstonWolfIT · · Score: 0

      That's the trick son -- now I don't have to hire expensive programmers. And don't think I'm blowing smoke out me arse, I have a team of ten and at most I need one expensive heavy lifter, provided of course he tows the line in exchange for his overpriced salary.

    15. Re:Strong Math Skills often get dumbed down by marcosdumay · · Score: 1

      Well, ok, that is not the kind of enviroment I complained about. Your people probably also have a highter minimum level of competence than the places I saw that process happening.

  44. an estimate needs little math by r00t · · Score: 1

    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.

  45. Re:Math skills essential? Of course, but... by Anonymous Coward · · Score: 0

    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.

  46. No, but Logic is mandatory. by unity100 · · Score: 3, Interesting

    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.

    1. Re:No, but Logic is mandatory. by ducomputergeek · · Score: 1

      I would tend to agree. A lot also depends on what you are programming. If you are programming scientific, economic analysis, or financial calculations that have to deal with very accurate floats, then you're going to need a good background in math. However, if you're like me, and programing mainly business apps that have to be accurate to a couple decimal places, then you need the logic side of the house, but business math skills. Honestly, I've not used Calculus in the 10 years since I've had the class. However I use the stuff I learned in various statistics classes and finance at least a few times a week. Just the other day I had to fix a rounding problem in a point of sale app. And in that case it's not only a logic problem, but you have to know the law(s) and take regulations into account. So you had to add the ability to always round up, always round down, or round half-even (bankers rounding). Legal regulations had more impact on the solution than the actual technical problem itself as some jurisdictions have different rules of how businesses have to round for VAT or sales tax collection. Also there are different rules for interest collection on in house credit, layaway, etc..

      --
      "The problem with socialism is eventually you run out of other people's money" - Thatcher.
    2. Re:No, but Logic is mandatory. by unity100 · · Score: 1

      If you are programming scientific, economic analysis, or financial calculations that have to deal with very accurate floats, then you're going to need a good background in math.

      still there will be lots of ready made classes, libraries around which would do every calculation you need much more efficiently and precisely than coding them from scratch.

    3. Re:No, but Logic is mandatory. by Anonymous Coward · · Score: 0

      Fully agree with this. From a programmer with 15 years experience in developing bookkeeping software.

    4. Re:No, but Logic is mandatory. by 1729 · · Score: 1

      If you are programming scientific, economic analysis, or financial calculations that have to deal with very accurate floats, then you're going to need a good background in math.

      still there will be lots of ready made classes, libraries around which would do every calculation you need much more efficiently and precisely than coding them from scratch.

      And what about the folks who write those libraries?

    5. Re:No, but Logic is mandatory. by cervo · · Score: 1

      I would add that the logic is easy. I mean even as an 8th grader I could understand the and/or/xor/not. The only thing that I really picked up from a math class was DeMorgan's laws (I kind of knew them by thinking through the problems...but not the name of the law or that you could apply it generically to any expression without thinking) and I have actually used them on occasion (I also picked up disjunctive/conjunctive normal form but I don't use those in programming....). But actually I found that programming made the logic portion of discrete math super easy for me when I got to it because I wasn't really learning much new stuff. Also even boolean Algebra was easy because A+B = A OR B and A*B = A AND B which mapped back to programming....

      But anyway I also witnessed people struggle with logic and truth tables in college. But as long as you understand AND/OR/NOT and how things map to them, you can easily enumerate out the possibilities for a truth table, and simplify most expressions. DeMorgan's law is also useful for simplifying expressions sometimes, but mostly it doesn't matter. You whether you use De Morgan's law or not, the expression will work.

    6. Re:No, but Logic is mandatory. by unity100 · · Score: 1

      and how many of them are there ?

      in the end, there will always be people specializing in an area. in every field there are such people, and will be. for them the specialization of their field is mandatory. but, for others, not. saying otherwise would be saying every engineer should have specialized mechanical engineering knowledge.

  47. Imagination by lordmatrix · · Score: 1

    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.

  48. How should I learn math? by 1s44c · · Score: 1

    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?

    1. Re:How should I learn math? by Fallingcow · · Score: 1

      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?

    2. Re:How should I learn math? by Anonymous Coward · · Score: 0

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

    3. Re:How should I learn math? by Anonymous Coward · · Score: 0

      Note: I am not a mathematics lecturer but speaking from own experience.

      I hate to sound like a jerk, but I think you need to pick up books along the first year univ./end year high school level and make sure you can treat it informally (as in, not treat it as a magical boogeyman). First year books on Calculus/Analysis, Probability theory, logic, linear algebra. They don't need to be heavy, but they have to explain the basic ideas behind them (e.g. by the end you should know the meanings of the most often encountered words).

      Once you get that sorted you can enjoy "picking up books" on interesting sounding topics.

      Bottom line: you must do the "boring work" first.

    4. Re:How should I learn math? by 1s44c · · Score: 1

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

      Actually I'm in Europe. I used 'math' because Americans don't have a clue when I mean when I say 'maths'.

      I'm really not sure about community college's or their equivalent. Classes move along at the speed of the slowest member and seem to be focused on nothing more than memorizing enough to pass an exam. I grew up in Thatcher's Briton where education was a matter of 'sit down, shut up, and don't ask any awkward questions.'

      I'd much prefer a good book. Do you have any recommendations that start with an understandable introduction to calculus? I've searched and found everything either far too easy or depending on knowledge I don't have.

    5. Re:How should I learn math? by 1s44c · · Score: 1

      I hate to sound like a jerk

      You were not being a jerk, you were being helpful.

    6. Re:How should I learn math? by value_added · · Score: 1

      What I would like to know is what are the best resources to learn math?

      I doubt whether this addresses your needs, but I stumbled across the following some time ago and was impressed by the guy and what he's trying to do:

      http://www.khanacademy.org/

    7. Re:How should I learn math? by Anonymous Coward · · Score: 0

      Yeah, that was helpful. I'm glad you asked a question that I didn't realize I was wondering, myself.

      But as the other person above stated, MIT OpenCourseWare is really, really excellent so far. I have been watching the Intro to Programming 600 class (all based on Python) and I've got to say I have been really really impressed so far. I'm really sad that I am only going to be getting back into math now, and sad that I am only going to barely get into programming now- I should have done this years ago. I've been watching it on Archive.org

    8. Re:How should I learn math? by ImNotAtWork · · Score: 1

      I've found this site from MIT really helpful http://ocw.mit.edu/OcwWeb/Mathematics/

      --
      open source sub sim. I might start coding again for this. http://dangerdeep.sourceforge.net/contribute/
  49. My degree is in history and classical studies by rpjs · · Score: 1

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

    That is all.

    1. Re:My degree is in history and classical studies by Anonymous Coward · · Score: 0

      Psychology and English, here...

  50. You need math(s) for DBs by Anonymous Coward · · Score: 0

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

  51. Food Chain Pyramid by Anonymous Coward · · Score: 1, Insightful

    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.

  52. Programming is a very broad category.. by Seth+Kriticos · · Score: 1

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

  53. Depends upon your field by AlecC · · Score: 1

    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.

    --
    Consciousness is an illusion caused by an excess of self consciousness.
  54. Re:Maybe it's cart horse... by Anonymous Coward · · Score: 0

    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.

  55. Statistics not Maths by DrInequality · · Score: 1
    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.

  56. Reminds me of a quote by Moraelin · · Score: 2, Interesting

    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?

    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.

    --
    A polar bear is a cartesian bear after a coordinate transform.
  57. Maths is essential by john.wingfield · · Score: 1

    There are two very important parts of computer programming: the ability to follow a logical process; and the ability understand maths well, to at least high school level. The first enables you to write a program that flows and the second means that you will be able to work with (e.g.) arrays without creating overflows. Put simply, computer science is a branch of applied maths.

  58. Only maths makes for truly interesting work? by mrjb · · Score: 1

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

    It partially depends on the definition of "Truly interesting work".

    The point of math skills is mostly that they are problem solving skills. You want programmers to have those skills.

    I think the point of 'ever larger data sets' is moot. Sure- someone will have to be on the forefront and develop the truly interesting algorithms- but for handling large data sets, this has already been taken into consideration long ago: heap sort will perform in O(N*2log(N)), quicksort will run in O(n*log(n)) but can be run in parallel to run in O(n). It's a done deal. Truly interesting work may not be to reinvent the wheel once again, but instead to just use libraries and actually get neat stuff done.

    One could argue as easily that the "truly interesting work" does not involve a lot of maths but electronics instead.

    --
    Visit http://ringbreak.dnd.utwente.nl/~mrjb/growingbettersoftware to download your free copy of the book
  59. What is "interesting"? by 91degrees · · Score: 1

    Skorks says that if you want to do interesting work you need mathematics skills.

    But isn't it only interesting to those who are interested in maths? In which case you'll have the skills already.

  60. Two distinct disciplines by amn108 · · Score: 2, Interesting

    ...which often benefit from a fruitful relationship. That said, I would point out that in my experience programming and mathematics are two distinct disciplines, and neither requires the other. You really can be a professional programmer without knowing anything beyond the most basic arithmetics.

    Programming is application of pure logic, the latter isolated from the all but basic mathematical concepts. Mathematics is application of logic in a specific manner which springs from simple arithmetics and has evolved into own world, not in the one of the most important "worlds" we have.

    One important remark would be that programming is often APPLICATION of mathematics, which is one case where the two disciplines cannot, for a time being, be separated. In that case, one obviously needs a programmer who is also a good mathematician.

    Also, obviously, given two programmers with equal programming skills, pick one with the better math skills over the other, if no other qualities affect the choice. It is like picking any other job candidate - you pick one with more qualifications, even if these apply only remotely to the field of work the company does. And since mathematics is a close cousin here, the choice should be obvious.

    1. Re:Two distinct disciplines by Xelios · · Score: 1

      I think this is an important distinction that's sometimes overlooked. Of course a solid mathematical foundation is a great help in programming, especially anything to do with graphics, but that doesn't mean a programmer should be expected to come up with formulas for complicated problems from scratch. We have people who do this for a living, they're called mathematicians. The programmer's job is to take that formula and translate it into an algorithm a computer can use.

      I would call this one of the problems with the IT field today. Many employers seem to think that just because a program is meant to run on a computer a programmer should be able to build it all up from scratch, they overlook the fact that often other fields are involved in the theoretical side of things. Fields that really have nothing to do with what my job is as a programmer. Off the top of my head I don't know how to find a formula for marginal revenue, but if you give me that formula I'll be happy to write you an algorithm to compute the answer because that's my job.

      --
      Murphey's fighting Occam, and we're in the stands.
  61. Math & linux audio? by Anonymous Coward · · Score: 0

    The issue of programmer's lack of math skills is perhaps one of the biggest reasons of the sorry state of Linux audio that's existed pretty much to this very day.

    It seems as if very few FOSS coders know how to write even the relatively simple signal-processing code that's needed for playing some files while doing any necessary sample-rate conversion or mixing, and while maintaining sync with the record-in. And the ones with the skills are too busy working and getting paid to apply those skills to other people's problems. (This isn't meant as a snide remark against coding for money - heck we all need to eat somehow - but more as a recognition that one of these days I owe it to myself and to the community to find the time and use these skills to improve the software I use and enjoy.)

    1. Re:Math & linux audio? by Ihlosi · · Score: 1

      It seems as if very few FOSS coders know how to write even the relatively simple signal-processing code that's needed for playing some files while doing any necessary sample-rate conversion or mixing, and while maintaining sync with the record-in.

      How deep would I have to dive into the intricacies of audio hardware if I wanted to have a look at it?

  62. Some fields only by PARENA · · Score: 1

    So the article is saying that in some fields of programming it might be better to have good math skills? That's pretty ground breaking.........

    --
    Here's the secret to immortality: ...oh dang, I forgot.
  63. Its been a while since I did any coding but ... by Liambp · · Score: 1

    isn't a bit of mathematics handy for working out complicated expressions to put into your computed gotos?

  64. Well.. by Madsy · · Score: 1

    If you don't understand the difference between a O(n) sorting algorithm and a O(n!) one, you're pretty much screwed as a programmer. If you don't know much math in general, *at least* learn time complexity for different algorithm operations. Perhaps this is why software is so slow nowadays? ;-)

  65. Divide by Zero by EdgeyEdgey · · Score: 1, Insightful
    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.

    --
    [Intentionally left blank]
  66. yes, you need math by AlgorithMan · · Score: 2, Insightful
    • 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!

    --
    The MAFIAA is a bunch of mindless jerks who will be the first up against the wall when the revolution comes
    1. Re:yes, you need math by ascari · · Score: 5, Insightful

      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.

    2. Re:yes, you need math by Anonymous Coward · · Score: 0

      As someone who worked in the banking software industry, let me confirm that if you don't have a profound knowledge of banking you shouldn't be writing banking software.

    3. Re:yes, you need math by Martian_Kyo · · Score: 1

      I disagree with your analogies...especially the car analogy. Every craftsmen (in broadest terns, cooks, mechanics,programmers etc) needs or has great benefits from substantial understand of the abstraction level below his is working on.

      By level below I mean that
      Automotive engineer benefits greatly from knowledge of physics, probably mostly those involving friction and heating. Cause car parts are built around physics principles.

      A car driver would benefit from knowledge of automotive engineering...a driver who understands how car works is GENERALLY a better driver.

      A pizza cook greatly benefits from knowledge of spice production (chemistry would be two levels below), which spices go together, what plants are used. Differences in dough...some need to be baked for a longer time, and knowing or having insight to the reason why (as opposed to empirical knowledge) helps a lot.

      On the other hand a spice maker WOULD greatly benefit from knowledge of chemistry, as chemistry is closer to the his level of abstraction then it is to the pizza makers'.

      Now programming and mathematics...it depends.
      If you are making new algorithms, compilers, frameworks, database engines you definitely benefit from knowledge of maths, and cant make a good database engine or compiler without knowledge of maths.

      A web programmer, is on a higher level of abstraction...than database engine designer, and has less need for maths.

      So it depends, on which level of abstraction as a programmer do you want to concentrate.

      Do you want to make new and faster encryption modules, or do you want to be an application designer? Or maybe be jack of all trades kind of programmer?

      Programming has evolved. and the term 'programmer' has become to general to have any use in discussions like this. It's like farmers and cooks, they are both food producers...but their jobs are quite different and require different knowledge. Nobody mixes those two professions up.

      So in programming you have 'farmers'
      which code the lowest level of software... drivers, compilers, frameworks

      and programming 'cooks'
      which use what 'farmers' grow to make 'dishes'.
      or use frameworks to make applications.

      Analogies are traps, so dont read too much into my analogy...and don't look too closely.

    4. Re:yes, you need math by Martian_Kyo · · Score: 1

      at the bottom of TFA there are links to related articles...and there's one which talks about something i tried to explain here. It is not exactly same, but it's probably much clearer then i was.
      http://www.skorks.com/2010/03/the-difference-between-a-developer-a-programmer-and-a-computer-scientist/

    5. Re:yes, you need math by ascari · · Score: 1

      Yes, I largely agree with the notion of "it depends", thus the comment about toolmakers and tool users early in my post: For example, most programmers will be using encryption, as opposed to creating encryption algorithms. (In fact, if somebody based on alleged awesome maths skills eschewed an established encryption algorithm or similar in favor of a home-brew most managers would be very sceptical and doubt his/her judgement!)

      So in order to carry your "farmer"/"cook" analogy further maybe it's fairer to say that a "cryptologist" needs awesome math skills and some programming skills, whereas a "programmer" needs programming skills and a host of other skills including some maths skills, a smattering of social skills and not least the ability to build on other peoples work? In which case upon reflection this whole post and TFA are really rather pointless... I can't say it's not so.

      Or maybe it's closer to the truth to say that real programmers need no stinking maths skills, just lots of caffeine, pizza and hubris? :)

    6. Re:yes, you need math by ascari · · Score: 1

      Thanks!

    7. Re:yes, you need math by pjr.cc · · Score: 1

      Personally, i think your dealing in very niche cases there. Relational mathematics is absolutely no requirement for being any kind of database guy. Logic, yes. But thats basic school maths.

      games are a somewhat different story and there are quite alot of cases where you'll need some maths.

      The rest your all talking about a re-invention of the wheel. AI, if your going to write an actually AI then yeah, maths is important, but the reality is its a niche realm. You also dont need probabilty to use random number generators, you just need to understand the differences between the types you can get (no maths required for that really), unless your IMPLEMENTING a random number generator - then maths is required, but again, thats niche.

      String processing and regex require very very little math, unless your impelementing one, again niche.

      But look to the real world for examples. Im a person who drives coders these days and i only code for fun. I do have a maths degree and excluding games, most math based theory is fundamentally useless in the real world. Just look at web coders for example (this is a massive chunk of the code-producing industry right there) and almost anyone could learn to code around 95% of the websites out there without any fundamental knowledge of maths past school level - and be very effective at it. The web browser itself is another example (and many applications fall into this same realm) where maths is just not a huge requirement, i.e. you could have 20 coders working on this and only 1 or 2 might need some maths for some parts.

      A profound knowledge of math is only a requirement if your doing something profound WITH math in code, and this equates to less then 10% of the real world.

    8. Re:yes, you need math by Anonymous Coward · · Score: 0

      re-conversion of car analogy back to computer analogy: car drivers are the end users; they only need to know what the tool is supposed to do, so that they can use it.

      Car engineers need to know a load of math/physics/engineering, so they can put together a car that actually works as intended. Programmers need to know a load of math about algorithms and the problem domain, so that they can put together a program that works (and prove that it works, and know what corner cases to test to verify that it works).

      Interestingly, one could argue - and IMO most of the pro-math posts here *are* arguing - that for a programmer, specific domain knowledge is always a subset or overlapping set with math. Even things that don't look mathy at first may end up being mathy in practice, as we have to pretty much turn them into math in order to write the code.

      Further, much of the math done is math that someone reading the code or using the program *doesn't* see, because it was math used to reduce some complexity or derive some hard-coded value. Figuring out how to make a project's relational database tables relies on set theory, for example. Many optimizations - and I don't mean the "runs faster on this electronic hardware" kind of optimization, I mean the "pick the best value out of these inputs" kind of optimization - come from calculus, linear algebra, or graph theory (it depends on the problem), but aren't necessarily solved on the fly by the computer - they were solved on paper by the programmer and then just the last couple steps got turned into code. The end user, or the "grunt" coder in a large project, doesn't see that the lead designer did a bunch of work to normalize the database tables (that came as a requirements list from a non-mathy manager, as a screenshot of a spreadsheet mockup), because they did it while designing the spec.

      > In reality very few of us will ever again have jobs where math skills are truly important.
      The ever-growing demand for computation pretty much guarantees that the math behind analyzing algorithm runtimes is here to stay. Even for those who (naively) think that faster computers make formerly-infeasible bad algorithms feasible - the reality is that faster computers mean that the users want to run ten times as much stuff at the same time. Or, looking at it from another angle: give me a faster computer and I'll still show you a naive coder's algorithm that will make that fast computer choke.

      The only thing that will make math a commodity is if everyone learns it.

    9. Re:yes, you need math by QuantumPenguin · · Score: 1

      As a mathematician I would like to point out that anisotropy/isotropy are geometrical concepts, not algebraic. Homogeneity is probably what you meant, but neither this nor any related concepts even come close to describing "full algebra" as you say, this is certainly first year undergraduate material. Forgive me if I'm wrong, but you seem to imply that Algebra is some kind of complete packaged tool, like how we use Calculus, which is a great misconception. Algebra is still massively incomplete, so much so that I believe every university mathematical department in the entirety of the UK has at least some algebraic research division. There is still so much more algebra to learn, however I think your interests lie elsewhere. I would recommend some material on Differential Geometry or perhaps some introductory material on Topological Groups, both very fascinating subjects,

    10. Re:yes, you need math by Anonymous Coward · · Score: 0

      Pizza analogy: You can't "work in a pizzaria" without a profound knowledge of chemistry. But people who "work in" pizzerias" are operators, not programmers. The pizzeria equivalent of a programmer is a chef, and a chef had certainly better have a good knowledge of food chemistry. They may not need to know the exact molecular combinations, but they certainly need to know the various changes that occur during cooking and how to co-ordinate them with other elements of the same dish.

      Car analogy. apples and oranges again. Don't mistake the rote workers for the designers.

      General: see above.

      Math comes in many varieties, and I've certainly seen those who overrate mathematics in general in regards to programming ("You've got to know calculus backward and forwards before you can program in BASIC!"). However, it's a poor programmer indeed who can't manage basic algebra, and I personally recommend a solid knowledge of symbolic logic and the Calculus of Propositions. A knowledge of how to construct proofs is pretty important as well unless you like to "prove" your code by intensively debugging it. These are skills whose lack will limit one's programming abilities as opposed to math skills that enhance one's programming abilities.

      Software, of course, also comes in many varieties. Good math and analytical skills are what allow us not only to design efficient algorithms, but to select the optimal algorithms for the job at hand. And I've personally worked on a mission-critical product where a heap or quick sort was worst-case (the optimum for the data set being processed was Shell-Metzner).

      In other words, let's not get into yet another of those insane binary arguments where it's only Black or White, Us or Terrorists, Liberal or Conservative, Math or Common Sense. The world is bigger than that.

    11. Re:yes, you need math by AlgorithMan · · Score: 1

      you are right, I'm not that into algebra (I'm a computer scientist, math was my subsidiary subject and I preferred graph theory). Still I had an algebra seminar about isotropy... meh...
      I think there is about no area in any academic subject, that is completely understood and "a complete packaged tool" (automata theory maybe :o) ). I just meant that you should even know some algebra, if you want to write a 3D rendering engine...

      --
      The MAFIAA is a bunch of mindless jerks who will be the first up against the wall when the revolution comes
    12. Re:yes, you need math by AlgorithMan · · Score: 1

      well, that is no contradiction to what I said... most programmers are not GREAT programmers... they can get some things done, yes. they may rely on others work, yes, but doing so is not what defines a GREAT programmer... a GREAT programmer has to BE ABLE to write things themselves, if there isn't other people's code to rely on...

      --
      The MAFIAA is a bunch of mindless jerks who will be the first up against the wall when the revolution comes
    13. Re:yes, you need math by Anonymous Coward · · Score: 0

      - If you want to work on any sort of simulation software (computational fluid dynamics and structural analysis come to mind) you need to have a very strong grasp of partial differential equations, and advanced linear algebra.
      - If you want to work on any sort of CAD/CAM or visualization software, you need a strong grasp of algebraic and geometric topology and graph theory.
      - To work on and understand calculations done by any of the above types of software, you should understand numerical analysis.

      Yeah, I've taken a LOT of math. I've found some interesting bugs related to the mathematics behind a *major* CAD system.

  67. Maths = Obsolete by Anonymous Coward · · Score: 0

    The whole reason computers were invented was so that humans WOULDN'T have to do maths in their heads any more...

    Maths is about as useful to programming as knowing how to ride a horse is to driving a car.

  68. If you live in the UK... by Anonymous Coward · · Score: 0

    Has anyone ever see what a LTD company in the UK has to do to generate a VAT invoice. For eCommerce stuff maths is very important.

  69. Opportunities by DoofusOfDeath · · Score: 1

    Where I'm working, I started out as a generic software developer. Having some math competency permitted me to lead a really interesting software project in acoustic modeling. I'm not developing the mathematical models, but I need some math fluency to be able to communicate effectively with the acousticians who do develop the models.

    So at least for me, knowing a little math enabled me to be part of the best project of my career so far.

    Obviously your mileage may vary, especially for more routine business information systems development.

  70. great programmers vs great academics by Antiocheian · · Score: 2, Insightful

    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.

  71. math is no help? by l3v1 · · Score: 4, Insightful

    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.

    --
    I am putting myself to the fullest possible use, which is all I can think that any conscious entity can ever hope to do.
  72. Maths skill is necessary for some programming .... by Unitedroad · · Score: 1

    With only three years in the programming field with the backoffice of one of the top software companies in the world, I have got the feeling that most of the jobs do not require much mathematical skill. Especially in my kind of setup in this part of the world, because if you have the most rudimentary logical skills, then this is all you ever need to get your job done. Our team maintains a product which was developed five years ago by handful of people who have all moved on. Since this product has become so stable that the most of the requirements seldom requires us to cut into the muscle to fix anything. So our team spends all its time doing work which pretty much can be done by a high school grad or an arts student with little or no knowledge of, or inclination towards, mathematics. But does that give me a reason to think that Maths is not necessary at all for programming? No, because I know I can not go very far with where I want to go if I don't have strong logic and mathematical skills, and the desire to learn.

  73. Algorithms vs. math knowledge by sensei+moreh · · Score: 1

    Although some of the programming I've done has involved mathematical calculations, I've never specifically needed a knowledge of real analysis or differential geometry in my programming efforts (which is a good thing, since I've probably forgotten 95% of what I learned in those classes). Where my math background becomes useful is in developing algorithms. Developing an algorithm is like creating a math proof. Those who can do the latter well should be able to easily do the former. The converse is not, in general, true.

    --
    Geology - it's not rocket science; it's rock science
  74. depends on the field by Anonymous Coward · · Score: 0

    I currently work with bioinfomaticians (I am the database guy in the group, and the only one that has had a job outside academia). A lot of bioinfomatics seems to involve fairly complex statistics these days. I try and tech them how to use a database, but they are more interested in using flat files than learning a few lines of Perl code to connect. Hardly any of them uses a debugger (not because they are so smart that they don't need one, but because they can't be bothered with the learning cure of setting up a project in Eclipse).

    Sure most of them know more Maths than me, but hardly any of them could build a reliable scalable system.

  75. its a hindrance by Anonymous Coward · · Score: 0

    Logic and formal reasoning are essential for programmers. Mathematics is like programming based on the two.
    Real mathematics skills like writing down a mathematical proof is only a hindrance.
    The reason is that Mathematicians are kind of sloppy when writing down a proof, its not formal at all.
    Programmers need to be ultra precise in their reasoning and cannot permit to jump a very detailed (but boring) part of a proof (or program).

    So in general programmers excel in logic and formal reasoning and Mathematicians are bored by it.

    J.

  76. Programming math != high school math by itsdapead · · Score: 1

    I suspect that there are plenty of people who have sufficient aptitude for logic and problem solving, but flunked math at high school or college - which tends to be about memorizing definitions and rote learning of set-piece party tricks with numbers and simple algebra, wrapped up in the language of faux "not even wrong" rigour to make it look superficially like "real mathematics".

    You're not going to get far in programming without some skills in elementary mathematical modeling - but most college/high school courses won't guarantee to teach you that anyway (unless you get a good teacher who cares about more than test scores).

    Whether you need any knowledge of the mathematical foundation of computing is a different matter - I'd say you only really need that for the proverbial Google database, but what half decent programmer isn't going to be at least curious? Mind you, the math behind that is hardly recognizable as high school/college math (or even undergraduate physics math), even when it uses terms like "calculus" or "algebra".

    I was slightly lucky to be educated in England, in the 70s, when they were experimenting with "modern maths" and introduced set theory, group theory, matrices and lots of number bases in the equivalent of high school. All gone, now - but then it wasn't very well taught and I suspect only the nerds who were already messing with programmable calculators and computers got anything out of it (learning how to solve a pair of simple simultaneous equations with matrices must seem bloody pointless unless you realize how easy it makes the problem to program...)

    --
    In a survey of 100 programmers, 111111 thought that duck-typing was a good idea.
  77. What if it was your doctor? by ff1324 · · Score: 1

    Saying programmers don't need advanced math is like saying your doctors don't need to take anything beyond 12 grade high school biology. While emergency room physicians and trauma surgeons need to have a rich knowledge base of the anatomy and physiology of the human body, your ophthalmologist can probably get by without knowing much about cardiac output or fluid resuscitation volumes.

    But they still need to know ALL of the human body because their actions, while localized in some fields of medicine, can have effects on other areas of the system.

    1. Re:What if it was your doctor? by Dunbal · · Score: 1

      Funny that you picked ophthalmology. As a physician I can say that it is one of the hardest specialties to get "into" because it requires knowledge of (among other things) - MATH! Yeah all that stuff about optics, it involves lots of math.

            As a side note, ophthalmologists do know all about cardiac output and fluid resuscitation volumes because ophthalmology is a branch of surgery... but then again any doctor who can't remember the basic steps of life support needs to have their license taken away. As a tutor of mine used to say - any physician can probably be forgiven for not immediately recognizing and classifying Hamanishi Ueba Tsuji syndrome, but NO physician can be excused for failing to instantly diagnose a heart attack, or for letting a patient die of hypovolemic shock.

      --
      Seven puppies were harmed during the making of this post.
  78. Had to learn trig really fast by garnkelflax · · Score: 1

    I had a client a few years ago that needed incredibly configurable dials as part of the project's display and print capabilities. Due to the nature of the client, no 3rd party software was allowed because they required that the software had to be evaluated line by line for security reasons. I never took trig in H.S. or college. In H.S. my highest was general math. In college my highest was algebra II. The nature of how the dials and needles needed to be displayed was so complicated from a visual perspective that using any existing arc/gradient/line functions in the api were out so I had to build a customized library that worked at the pixel level both for screen and printer devices. I spent a week of doing nothing but learning the parts of trig that applied to my issue. If I were to go back 25 years, I'd take every advanced math course H.S. had to offer, and in college I would have continued to be more math focused. After that experience I've always wondered if I could have solved other problems more elegantly because I'd be equipped with a better toolbox.

  79. bottom line by AlgorithMan · · Score: 2, Insightful

    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.

    --
    The MAFIAA is a bunch of mindless jerks who will be the first up against the wall when the revolution comes
    1. Re:bottom line by Anonymous Coward · · Score: 0

      GREAT programmers save their employer time and money by using someone else's work whenever possible.

    2. Re:bottom line by Tyler+Durden · · Score: 1

      Actually, great programmers avoid shit programming jobs that can be done by just plugging in some else's work and instead prefer ones that demand they think for themselves.

      --
      Happy people make bad consumers.
    3. Re:bottom line by Anonymous Coward · · Score: 0

      BullShitMan.

      So you are arguing that instead of reading a paper on xorshift after googling for fast and simple PRNGs with good output and going with that, I should learn up to the level of the bearded professor who wrote the paper and try to invent something on that level myself?

      When I have had too much time on my hands, I have tried using my math knowledge to attack some hard problems with real world applications. But as you see, I am not rich and still post on Slashdot.

      Thus, I prefer to do it my way, thank you.

      BTW, do you get paid for staying at home dreaming of numbers and greek letters?

    4. Re:bottom line by Abcd1234 · · Score: 1

      Actually, great programmers avoid shit programming jobs that can be done by just plugging in some else's work and instead prefer ones that demand they think for themselves.

      Uhuh.

      Sorry buddy, but you will *never* find a programming job that, at least to some degree, doesn't involve wheels someone else has already written (data structures, core algorithms, input and output, all these things are essentially unavoidable, yet you'd be a completely moron to write them yourself unless you have a *very* good reason to do so).

    5. Re:bottom line by Tyler+Durden · · Score: 1

      It's a matter of degree. There's a fundamental difference between Ken Thomspon designing and programming Unix by building on other people's work, and some flunky creating a business website using the latest framework du jour.

      --
      Happy people make bad consumers.
    6. Re:bottom line by Abcd1234 · · Score: 1

      It's a matter of degree.

      And yet, for some baffling reason, you assumed the AC meant "programming jobs that can be done by just plugging in some else's work". Why?

      The poster that started this thread said "but to be a GREAT programmer, you need to be able to program things yourself". The AC pointed out that, no, to be a truly great programmer, you should know to reuse other people's work whenever they can. Only when there's no option but to write from scratch does a great programmer bother, because they realize that new code means man-hours writing, man-hours testing, and man-hours fixing bugs, hours that are completely wasted if an existing solution can be used. That's true even in the most advanced of projects (in fact, I'd say even more true... if you're doing truly cutting-edge work, the absolute last place you should be wasting your time is in writing yet-another-linked-list-implementation).

    7. Re:bottom line by Tyler+Durden · · Score: 1

      The poster that started this thread said "but to be a GREAT programmer, you need to be able to program things yourself". The AC pointed out that, no, to be a truly great programmer, you should know to reuse other people's work whenever they can.

      And he's wrong. To know how to properly reuse others' work is just performing to par. The great programming tasks are known to be great because of what was added, not what was copied.

      --
      Happy people make bad consumers.
    8. Re:bottom line by Abcd1234 · · Score: 1

      And he's wrong. To know how to properly reuse others' work is just performing to par. The great programming tasks are known to be great because of what was added, not what was copied.

      Huh? Neither the AC nor I ever once claimed that "[knowing] how to properly reuse others' work" was a sufficient precondition for defining a "great programmer". The argument is that it's a necessary one.

      OTOH, you did erect a very nice strawman, and knocked it down with gusto, so, you know, kudos.

    9. Re:bottom line by Tyler+Durden · · Score: 1

      The wording "to be a truly great programmer" implies that the defining, most important characteristic of a great programmer is proper code reuse. My argument is that this is not the case. It goes along with the theme of the original article. You don't need much math for many programming tasks, but to be properly equipped to do the most interesting ones you do.

      Gosh you're really in love with argument, aren't you? :)

      --
      Happy people make bad consumers.
    10. Re:bottom line by Abcd1234 · · Score: 1

      The wording "to be a truly great programmer" implies that the defining, most important characteristic of a great programmer is proper code reuse. My argument is that this is not the case.

      Meh, I'd argue you just made that argument up. :) The original poster said "great programmers need to be able to write their own stuff". The AC responded with "err, no, great programmers avoid writing new code whenever possible". You then decided to step in with "great programmers don't have shit jobs where they C&P code all day!"... which makes no sense, as that implies that "reusing code" means that you have a shitty job. My response was, that's absurd, every programming job involves code reuse of some kind or another, and a great programmer will recognize that fact and write as little code as they can, as to do anything else is a waste of time, and therefore money.

      'course, in the end, the fact is, the OP and the AC are both kinda right. If a programmer really knows what they're doing, they reuse where they can, and write what they must. It doesn't sound like you disagree with that, so, you know... good. :)

      Gosh you're really in love with argument, aren't you? :)

      Yes. Yes I am. :)

    11. Re:bottom line by AlgorithMan · · Score: 1

      so what you say is that GREAT workers in $job do nothing but copying what others did before? okay, then I am a great novelist, when I sell copys of the lord of the rings and the hitchhikers guide to the galaxy, right? and hey, I could republish stephen hawkins papers - I'm a great physician, ain't I?

      just let me make this clear: a GREAT programmer saves his employer time and money by thinking before coding and doing it right at first try (so they don't have to fix things all the time. finding bugs costs much much MUCH more money than the extra time for the thinking before doing...)
      My wife works at a software manufacturers support hotline and she says there are NEVER complaints about the programs, that the CS Majors wrote, but LOTS of complaints about the programs, that the trained programmers wrote...

      --
      The MAFIAA is a bunch of mindless jerks who will be the first up against the wall when the revolution comes
    12. Re:bottom line by AlgorithMan · · Score: 1

      I never questioned that - but to be a GREAT programmer, you have to BE ABLE to write all the stuff yourself IF you need to.

      --
      The MAFIAA is a bunch of mindless jerks who will be the first up against the wall when the revolution comes
    13. Re:bottom line by AlgorithMan · · Score: 1

      okay, I think we have reached an agreement... well it's more like we never disagreed, we just talked at cross-purposes.
      great programmers should not reinvent the wheel all the time, but they have to be able to invent wheels if neccessary

      --
      The MAFIAA is a bunch of mindless jerks who will be the first up against the wall when the revolution comes
  80. Mathematics for social networking growth (Facebook by Gnumbers · · Score: 2, Informative

    Just yesterday I wrote a short article ( http://goo.gl/dko2 ) after reading about how Facebook are using Mathematics to help with Failure rates in their datastore clusters.

    There is a 24 page presentation by Avinash Lakshman and Prashant Malik, which describes (page 17 onwards), how the company are using Probability Theory to help them detect failure in a datastore.

    Probability Theory is just one area of Mathematics, and degree level Mathematics would usually include at least one or two modules in Probability.

    If I were an Operations Director or Development Team Leader at a large Social Networking company, I would certainly view University Level Mathematics as +1 for anyone applying to join the team.

    The short article is here and the clickable link in that article should take you directly to somewhere (slideshare, etc) where you can view the 24 page .pdf

  81. Math skills are extremely important by pacergh · · Score: 1

    Many fundamental programming elements require a firm grasp of math. Otherwise you are just cutting and pasting code you don't understand.

    Further, math enhances the ability to logically and efficiently organize code and a coding project.

    Finally, the more I have delved into coding the more I realize how now-forgotten math skills would help me solve problems. I remember what those skills could do, just not how to do them.

    Any serious programmer also has to have some serious mathematical skills.

  82. Re:Maybe it's cart horse... by outsider007 · · Score: 1

    You missed the point. The question is: do you need math to do truly interesting work? The answer is: only if you are only truly interested in math. Otherwise you will find something else truly interesting.

    --
    If you mod me down the terrorists will have won
  83. First decide what you want out of programming... by IMustBeNuts · · Score: 2, Interesting

    I've seen great maths/physics experts who were lousy programmers, and some self taught people who were brilliant... and naturally I've seen the opposite too. What you really need is a person with a skill set that is appropriate for the role that they are to fill. Myself, my math skills are basic at best, while my application of logic is quite solid - or so I've been told, and in my personal case, I work with Physics PHD's who understand the math way better than I do, but make the most elementary design mistakes if left to manage a project by themselves, this in spite of their having 6-10 years of programming "experience". My role largely involves writing APIs, and is very people-oriented, so I find that I don't need the same level of math that my colleagues need. Their role is to design algorithms, and yes, to dumb them down somewhat so that I and others in the team can make better use of such things so that our work integrates well with what our DSP engineers do. I wouldn't be suited for something as math oriented as game theory, whereas I think my colleagues would actually be better suited to such a role. I can however design and build relatively complex information systems, which tends to benefit more from a skill set where logic and people skills are more prominent. It really is a case of "It depends". If you're unsure and would like to keep your options wide open before you dive into the programming deep end, then yes, I'd suggest you delve into the maths a bit, and see where it leads you. If you already know where your career is going, you can always learn more as you go, pick up the skills you need along the way to make yourself more marketable. For my own roles, I've wished I studied more psychology (never thought I'd actually ever admit to that!!)... but that's just because of the nature of the type of products I've worked on.

  84. Let Me Fix That Title For You... by Anonymous Coward · · Score: 0

    "Math Skills for Everyone - Necessary Or Not?" ...and I'll even answer the question: necessary.

  85. The weak in math are usually the ones saying that by melansp · · Score: 1

    I often hear programmers saying Math is not important, and from my observations, it is often the programmers that are weak in Math. Sure there are probably good programmers that aren't advance in Math, but when big critical, hard to solve problems occurs (field issues, bugs, etc), it is often those who are strong in Math that need to step up. This does not even mention the fact that enhanced Math skills helps approach problems in different ways that sometimes leads to better success.

  86. In a competetive environment by WinstonWolfIT · · Score: 0

    The broad-based American educated candidate will win over the specialised European candidate in both the short and the long term. Math, psych, philosophy, writing, all are necessary over the long term.

  87. I'm a professional programmer by Xpendable · · Score: 1

    I'm a professional programmer who has worked for one of the largest department store chains in the U.S. for more than 11 years. I've never really needed anything more than very basic algebra and bitwise operations. I've written hundreds and hundreds of programs, mostly in C, C++, C#, Java, VB6, and VB.NET. I've worked with Informix, Microsoft SQL Server, and DB2 databases in my programs. I've written code to process credit card transactions, print complicated multi-part receipts with multiple control breaks, and calculate tax. I've been part of a team that has created brand new point-of-sale systems. I've created numerous back-end processing programs, some of them even CICS programs. I've written a messaging platform that handles the interaction between the cash registers, customer-pickup kiosks, and employee wireless hand-held devices. I've built stand-alone web servers. I've built tools that help us do Windows workstation builds. I've built tools that completely automate the creation of the VirutalServer VirtualMachines. I've built performance monitoring tools that display 2d graphs. I've built signature capture code. I've built rudamentary encryption/decryption routines These are just some examples of the things I've done in my 11 years here. I have never needed anything other than basic algebra for all of that. The only time I ever needed more math was when I dabbled in game programming as a hobby. I used linear algebra (which I had in school, but had to mostly relearn) and some calculus for 3d programming. The linear algebra was for the transformation and rotation matrices and the calculus was for things like calculation the normal of a triangle so that light would be calculated correctly. I didn't get real far with my game programming, but I did build a simple 3D engine that loaded my own 3D model format, rendered multi-level tesellated/textured terrain, had parallax scrolling sky billboards and a few other eye candy things. I also wrote 3 different model exporters. One for Lightwave 3D, one for 3D Studio Max, and one for Milkshape 3D. Am I great with math? Absolutely not. Do I have a lot of mathematical training? No. Did I need a lot of mathematical training? Not really. I did have linear algebra in college and Calculus I. I also had 1 statistics class. I didn't do well in Calculus class because my professor was absolutely the worst teacher I've ever had. I have a B.S. in Computer Science, if you are curious. Just my 2 cents worth.

    1. Re:I'm a professional programmer by Xpendable · · Score: 1

      I forgot to mention I also needed a little bit of trig for my 3D programming also.

  88. The one true thing Heinlein said by 0xdeadbeef · · Score: 1

    Anyone who cannot cope with mathematics is not fully human. At best he is a tolerable subhuman who has learned to wear shoes, bathe and not make messes in the house.

    1. Re:The one true thing Heinlein said by localtoast · · Score: 1

      However, once one gains the enlightenment of mathematics, one realizes that shoes are beneath them.

  89. discrete math is a must by Anonymous Coward · · Score: 0

    i just graduated from school. the math classes that would directly relate more than any other were two discrete math courses. much or the second course applied principle to many computer science problems such as traveling salesman, Dijkstra's shortest path, and big O notation. was a neat additional viewpoint from a mostly pure mathematics perspective. it was a little odd that not everyone in the department had to take it though. it was required for software engineers but not for computer scientists. I don't find many integrals or derivatives or much other calculus in my day to day programming

  90. Re:Math skills essential? Of course, but... by Anonymous Coward · · Score: 0

    But integral calculus? Differential Equations? Nonsense.

    Once you do any kind of simulation, you'll need differential equations.

    A lot of this is probably because CS is part of the Engineering department

    Where I studied, CS was its own department, but I still had to do math. Also I never regretted it. Math is way more useful than most of the sh*t they taught us in the software-engineering classes.

  91. define:math :) by dragisha · · Score: 1

    Math educaton goes deeper than proficiency with math aparatus. Disciplined mind is really useful when you have to think abstract and uknown. Something you do when doing anything software.

    --
    http://opencm3.net, http://www.nongnu.org/gm2/
  92. Physics Software Programming by TheLeopardsAreComing · · Score: 2, Insightful

    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.

    1. Re:Physics Software Programming by Truth+is+life · · Score: 1

      Or of course computational physics and similar (eg., protein folding simulations)...you REALLY can't program in that field without having a solid grasp of the underlying mathematics.

  93. You have just been educated by TapeCutter · · Score: 1

    I was educated in CS and operation research 20yrs ago, it didn't make me a genius but it did give me the ability to match a problem to the solution that a real genius had discovered in the past. Most people could work on the GP's problem for a lifetime and still not independently reinvent the kirkman and reiß wheel.

    --
    And did you exchange a walk on part in the war for a lead role in a cage? - Pink Floyd.
  94. I Disagree. by TheDarkMaster · · Score: 1

    I Disagree. A good developer needs much more than math, and you spend on a University too much time with irrelevant (to the generic developer) things like integral calculus and Differential Equations as example.

    Honestly, I would have been happier if they had spent the two years of advanced mathematics that forced me to do on more useful things such as finance, design and advanced programming techniques.
    And note, now I am a full developer with many systems running, and my work never had to use any advanced math.

    --
    Religion: The greatest weapon of mass destruction of all time
  95. Of course ... by Anonymous Coward · · Score: 0

    ... mathematical skills are not necessary for programming. You can implement 'Quicksort' and 'Ray Tracing' very well after going through the complete works of Shakespeare, if not Anne Rice.

  96. Math is necessary by Anonymous Coward · · Score: 0

    Fundamentally math is not about memorizing equations, math is about developing problem solving skills. All educational systems teach math functions and some apply those functions in story problems. Very few teach or explain that all math developed from a need to solve a specific problem. Most of those problems developed from economics, trade in resources. Many problems developed from engineering, construction, manufacturing. In every single case the math was developed to solve a specific problem. Computer programming is a problem solving profession. Like mathematicians, programmers take a problem and develop a solution for that problem. The three basic skills taught, reading, writing and ‘rithmetic, are to receive communications, transmit communications and solve problems. One of the huge problems with education in the United States is that our educational system focuses more on socialization and receiving communication than it does on transmitting communications or developing problem solving skills. You cannot program without developing problem solving skills and mathematics is the primary methodology for training in problem solving skills.

  97. Its about the context. by Anonymous Coward · · Score: 1, Interesting

    I believe programming in itself is just glorified typing.

    Just kidding, but yea, programming in itself does not require any math skills or to know much about nothing, actually. But programming is always done in some particular context, and that context may require knowledge on other fields. In that sense, what I think he means is that more and more, every application you do will require you to know some math. I work in bioinformatics, and there is a lot of statistics there, and some molecular biology as well, but mostly statistics.

    It has something to do with CS been a transversal field

  98. Given two programmers by Anonymous Coward · · Score: 0

    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.

    I agree wholeheartedly with your assertion regarding the importance of mathematics to the programmer. On more than one occasion I found set theory particularly helpful; documenting relational database queries is much easier with set notation, and representing and manipulating data for another project led me to implement an internal language for the application based on the mathematical concept of a set. Even statistics has come into play during a few projects where estimating data and/or log storage requirements were necessary.

  99. If you include statistics, the answer is "yes" by mpsmps · · Score: 1

    I got a Ph.D. minus epsilon in Math, but never took a statistics course prior to dropping out during the dotcom boom to start a software company. I would trade most of the math I know (which I rarely use) for a solid background in statistics, which comes up all over the place, from the performance of data structures and algorithms, to dataflow analysis, to mining databases, to projecting performance failure rates, etc. This is not just basic statistics (which I managed to pick up on the street), but a deep knowledge of statistics can make a big difference. I just co-authored a paper on a very simple data structure for which the key step in analyzing its performance is to apply the Kolmogorov-Smirnov distribution.

    1. Re:If you include statistics, the answer is "yes" by russotto · · Score: 1

      I got a Ph.D. minus epsilon in Math

      I thought progress towards a Ph.D was pretty much quantized... that is, there's a wide gap between ABD and Ph.D. with nothing in between.

  100. Orthogonal concepts by Livius · · Score: 3, Insightful

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

    1. Re:Orthogonal concepts by Anonymous Coward · · Score: 0

      As there is no reason "truly interesting work" and math should have anything in common.

  101. Math skills != knowledge of mathematical theory by hlub · · Score: 1

    In a well-known story, when Carl Friedrich Gauss was a little boy, his schoolteacher asked the class to add up the numbers from 1 up to 100 (1 + 2 + ... + 100). Like many programmers would have done nowadays, his classmates sharpended their pencils, sighed deeply and started adding up: 1 + 2 = 3, 3 + 3 = 6, .... To the teacher's surprise and annoyance, Gauss came up with the correct answer right away, by re-ordering the numbers like this: (1 + 100) + (2 + 99) + ... + (49+ 52) + (50+51) = 50 * 101 = 5050

    Gauss clearly made use of his budding math skills here, and would have been a superb programmer had he been born two centuries later. But he hardly used mathematical "theory" to create this 200-year old "programming pearl"

  102. A related question by sirrunsalot · · Score: 1

    Here's a related question that I run into more often, being on the math/engineering end of things:

    Are programming skills required for math-types?

    At least in engineering, the view seems to be that if you know your basic math and engineering principles, then all you need is some basic declarative programming commands, and everything else will follow. Long story short, it ends with people solving optimization problems with exhaustive searches and letting programs run for a week or two that, done properly, should take a fraction of a second. Data structures are generally out of the question. It scares me to think that so many people don't realize the true status of their programming skills, but at the same time there generally isn't room in standard curricula for any more programming. Am I being unrealistic to think that people need these programming skills? Is it just survival of the fittest?

  103. Math Skills Handy But Nkt Required. by Prototerm · · Score: 1

    I've been a professional (and quite successful) programmer for nearly 30 years, and am not too shy to admit that my math skills are practically non-existent. However, that being said, an equally poor memory has polished my *logic* skills to the point where I'm quite adept at designing and understanding computer software (particularly those written in C and assembly language). Although these days, I have the most success (and fun) writing "impossible" SQL queries.

    So, I suppose the lesson here is that you can't really generalize that math is vital for computer programmers. Unless you include *logic* as math (and I never have -- it's really a very different animal IMHO). After all, that's why God created computers in the first place, right? To do the math *for* us.

    --
    "My country, right or wrong; if right, to be kept right; and if wrong, to be set right." --Senator Carl Schurz (1872)
  104. What part of Maths ? by Nicolay77 · · Score: 5, Interesting

    Mathematics is a huge field with lots and lots of small ramifications.

    You may want someone who understand statistics for your SEO stuff.

    You may need someone who knows calculus for a physics simulation.

    You need someone who knows a lot of linear algebra if you want to write a search engine.

    You probably need someone who knows about concrete mathematics for almost all the rest.

    For everyone who thinks that they do not use maths when programming: what do you think regular expressions are?

    --
    We are Turing O-Machines. The Oracle is out there.
    1. Re:What part of Maths ? by turing_m · · Score: 1

      For everyone who thinks that they do not use maths when programming: what do you think regular expressions are?

      Maybe those same people are a subset of those who like to reference the Jamie Zawinksi quote:

      Some people, when confronted with a problem, think "I know, I'll use regular expressions." Now they have two problems.

      --
      If I have seen further it is by stealing the Intellectual Property of giants.
    2. Re:What part of Maths ? by kuzb · · Score: 1

      Since you like quotes, here's another:

      A poor workman blames his tools.

      --
      BeauHD. Worst editor since kdawson.
    3. Re:What part of Maths ? by smellotron · · Score: 1

      For everyone who thinks that they do not use maths when programming: what do you think regular expressions are?

      "Magic."

  105. Programmer != Web Developer by Zoidbot · · Score: 0

    That is where this story falls down...
    (for the web developers != means not equal to...)

    1. Re:Programmer != Web Developer by gabereiser · · Score: 0

      Sure, a web developer is a little different than a hard core programmer, but tell that to Recruiters and hiring managers who don't know the difference between PHP and Java.

  106. BS - Do you even know what you are doing ? by Anonymous Coward · · Score: 0

      There are lots of jobs where knowing an additional thing or two would be useful. Yes - if you are a book writer, being a great editor would help you a lot ( and vice versa), or if you are a car driver, it would be great to be a fabulous mechanic too. But, if you werent, it is absolutely ok, since the other fields keep progressing, and there are specialists.

    You are a programmer - not a guy who specializes in planetary motion. If that is all you plan to do - that would be great, but then, you would not be able to understand fast fourier transforms for signal processing. Just cos you 'work with numbers all day' doesnt mean you gotto understand all math!

    Specializing has its virtues, but saying you want to know everything in the world cos you are a programmer is just plain dumb. Programming is a skill - and a science. So why not stick to being good at something - and taking input from others for areas you are not good at,rather than learn everything ?? If more programmers were like you - we would be stuck with crap everywhere due to people who are masters of nothing, but learning everything.

  107. Not for most web programming by Anonymous Coward · · Score: 0

    The answer to this question hinges entirely on what sort of programming you want to do. Do you want to do game design? Do you want to model complex 3D visualizations? Do you want to program networks with sockets?

    I personally got into web application development years ago because it's a pretty even split between design and computer programming. Also, while I'm not bad at math, I've never particularly enjoyed it. As a web developer (I swear it's still programming), I code Python, MySQL and Javascript everyday, and rarely, if ever, run into math tasks. While I must admit we've never had a client with incredibly math-heavy needs (some algebraic calculations here and there), I can honestly say I've never required any knowledge past high school for what we do. But we're not exactly in the business of computing Pi.

    Define "programmer" and you'll have your answer.

  108. Re:Maybe it's cart horse... by bsDaemon · · Score: 0, Offtopic

    Having a large toolbox has worked quite well in my career.

    that's what she said

  109. Being a patent lawyer helps on Slashdot, but... by AtlantaSteve · · Score: 3, Insightful

    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.

    1. Re:Being a patent lawyer helps on Slashdot, but... by ShakaUVM · · Score: 1

      >>No thanks... I would pass.

      Until you're stuck solving a problem that could be solved using maths you don't know. And then you wish you'd taken more classes back in college.

      I think I've used something from every college math class I've taken at least once in my programming life. It depends on your job, of course, but knowing more math is always going to help you out.

  110. Math is over-rated by Anonymous Coward · · Score: 0

    You don't need math skills to do most kinds of programming. In fact, contrary to what they tell you in middle school, you don't need math skills in life at all anymore. Everything is calculated automatically for you these days. Don't waste you time with any more math classes. Now finish making my latte, bitch.

  111. You must be kidding by Anonymous Coward · · Score: 0

    Really, I cannot believe that this is even open for discussion. Math not necessary!?!? The only one who would consider this opinion as viable is one who does not have good math skills or does not really understand what their responsibilities are for developing a report, user interface, application, operating system or technical gizmo of any kind.

    May not need Calculas, may not need high level physics or an engineer's level of calculating ability, but one had darn sure be good at Algebra, Logic, Basic Accounting and Statistics. The most absurd look is that of a software developer at any level (usually the higher, the better the look) when you explain to them for the tenth time that the total value of the column has to be the actual total of the numbers in the column.

    Totally absurd.

  112. What terrible advice! by Jeppe+Salvesen · · Score: 1

    For about 10-20% of the programming positions - sure.

    But there are other skills that are much more important in the majority of the positions:

    1. Usability - it does not matter if your program is correct if "nobody" can figure out how to use it, or if the layout encourages incorrect usage.
    2. Communication skills - effectively communicating with both middle management and end users is key much more often than being able to grok linear algebra.
    3. Judgement - knowing "how much is enough", and "how much is too much".
    4. Design skills - writing code that is maintainable and testable is always a requirement for creating a good, durable product.
    --

    Stop the brainwash

    1. Re:What terrible advice! by TheRaven64 · · Score: 1

      Usability requires the application of graph theory, game theory, and even a little calculus. You need to model your user interactions and design a system that makes these efficient.

      Communication skills are at the core of mathematics. The entire subject is about expressing difficult concepts in unambiguous ways.

      I'll leave the other two points on your list to someone else.

      --
      I am TheRaven on Soylent News
    2. Re:What terrible advice! by Anonymous Coward · · Score: 0

      For about 10-20% of the programming positions - sure.

      I just wanted to add to this for any young people who might want to be programmers, you don't need super math skills to do most programming jobs. I wasn't allowed to take a programming class in high school (this goes back a long way) due to a lack of advanced math classes in high school. In fact, I did poorly in most math classes, but I do fine as a Web Developer and do some game development on the side for fun.

      Is what I do trivial? Well it's not flipping fries, but it's not exactly rocket science either.

      Basic algebra is about as far as you need to go for 80% of the jobs out there. More math can't hurt, but don't be discouraged if you're not a math whiz but you're already programming.

  113. I wish Bill Gates would stop posting on here. by Anonymous Coward · · Score: 0

    Hi Bill,
    Yes, good programmers still need a solid back ground in math. Unless you are talking about web page developers.

    Later,
    Mike

  114. Math teaches more than math by Anonymous Coward · · Score: 0

    Maths (especially algebra) teaches you how to think abstractly. That skill in turn creates good problem solving skills which combined with good linguistic skills and good code knowledge is what I look for in a programmer. Linguistics are the same as maths - it teaches you a way of thinking and reasoning.

  115. skillz by Anonymous Coward · · Score: 0

    As long as the programmar had mad skillz, math skills are not needed.

  116. "After all..." by maiden_taiwan · · Score: 1
    >"...after all linear algebra is no help when building database driven websites...."

    Unless the web site is totally trivial, you definitely want math skills. Any programmer who can't estimate the runtime of an algorithm (say, several interacting, nested loops) doesn't get a place on my project. And combinatorics & graph theory are a very good idea for any interesting web software. And how the heck can you build a data structure of any complexity without understanding how fast you can insert, delete, and find members?

    I'm sure there are thousands of mediocre developers who don't think about these issues and just build stuff that seems to work.

    1. Re:"After all..." by Alanonfire · · Score: 1

      Basic set theory is also very good database programming.

  117. The problem is time... by jazcap · · Score: 1

    Programmers work 50+ hour weeks, need to spend time maintaining skills they may not be using in their current job (to be ready for the next one), and need to spend time acquiring new skills (or else risk becoming obsolete). Add to this time for sleep, meals and the occasional shower.

    So the question for me, as an early-career programmer, is: do I spend the 15 free minutes I have per week re-learning Linear Algebra, or studying Zizzmo++?

    And please don't make the obvious lewd suggestion about how to spend 15 free minutes -- I do that in the shower!

    1. Re:The problem is time... by gabereiser · · Score: 0

      I say learn as much as you are able to. Programming is a learning and research field anyway... I read Dr.Dobbs while taking a dump. I go over math formulas in my head while taking a shower. I come to work and put it all in code.... I never stop learning. Which is why I'll never stop programming...

  118. Horse sense by ralphbecket · · Score: 1

    "In designing an operating system one needs both theoretical insight and horse sense. Without the former, one designs an ad hoc mess; without the latter one designs an elephant in best Carrara marble (white, perfect, and immobile)."

    -- Needham & Hartley, 1969

    Applies to everything else, too, in my experience.

  119. What's The Criterion? by Not_A_Jew · · Score: 0

    If you want a good programmer, pick the one who knows math. If you want a good software designer, pick the one who can lie convincingly to damagement.

    Hope this helps.

    N.a.J.

  120. XKCD by Unique2 · · Score: 1
    --
    No trees were harmed in the posting of this message. However, a great number of electrons were terribly inconvenienced.
  121. Depends on the Job by jimwelch · · Score: 1

    Programming is everywhere! (tm)
    For the last 30 years, 90% of the our new hires were EEs.
    We do mostly embedded programming, so reading a schematic and a chip spec is just as important as math.
    Basic (no pun) math skills are a daily need, but higher math is rare.
    The other 10% employees handle the hairy math and hairy programming, the rest of us are clean shaven (/pun).

    --
    Never trust a man wearing a coat and tie!
  122. Depends on your specialization by Thaelon · · Score: 1

    I spent 2.5 semesters taking calculus, none of it was useful for me.

    I'm now almost 6 years into my career and have never needed any of it. Good design skills, languages and knowledge of patterns are way more useful as practical money making skills. If the math interests you, by all means pursue it, if it doesn't, I'd try to get out of it.

    Unless you want to get into a field where higher math is prevalent, and you'll actually be writing your own instead of using existing libraries written by people smarter than you, you probably won't need anything any mathematical operations but +, -, / and *. However, discrete math is very useful in basically all aspects of computer science because the computer is a discrete machine. And a lot of data fits well in concepts you'll learn there. It's also a lot easier than calculus.

    --

    Question everything

  123. inter dependent by nten · · Score: 1

    There are cases where the math to model something predated the thing that math was later used to model. But (more often probably) the math was invented (or discovered, not getting into that one), in order to model what was desired. It is my understanding that Newton's formulation of calculus was driven by the need to model his laws of physics in a formal fashion. As need is almost always the driver of invention/discovery this is not surprising.

    --
    refactor the law, its bloated, confusing and unmaintainable.
  124. essential skill by Anonymous Coward · · Score: 0

    math is essential skill for any programmer, i have found myself quite a few times lacking the math skills to make something work. week(s) of mathematical brainfuck usually follow when it happens. i really wish i had better understanding of maths

  125. oh yes, not absolutely essential by foog · · Score: 1

    At least, for much of what passes for professional programming. But in my very humble experience, the guys that brag the loudest that they've never needed any math to do any real-world programming are the ones who end up getting assigned stuff that involves very simple calculations---often just the correct use of libraries---and still manage to bung it up.

  126. People interested in math find math interesting? by Anonymous Coward · · Score: 0

    "if you want to do truly interesting work in the software development field, math skills are essential"

    A lot of programming tasks don't require much math. But it's up to each programmer whether these tasks are interesting. The work that I find most interesting does require a lot of math, but would a person withouth math skills find the work interesting? Probably not, since there is a reason why these people lack math skills. They lack the interest.

    Interested in math => good at math => likes to solve math problems => finds programming work involving math to be interesting

    Not interested in math => not good at math => doesn't like to solve math problems => doesn't find programming work involving math to be interesting

  127. Re:Maybe it's cart horse... by uncledrax · · Score: 1

    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.

    Negative Ghost Rider.

    The logical order my brain works (which I'd argue makes me a decent programmer and a pretty good trouble-shooter) wasn't developed from math.. in fact the reason I didn't end up in the Marines is because I failed Algrebra ][ in high school.. (that summer, I took Geometry and aced it though.. I blame my Algebra on two things:
    a- I don't do homework unless it's trying to solve a problem, in which case it's called 'research'.
    b- My math teacher at the time was also one of the schools head coaches.. so his teaching style (which since I don't do homework, I learn from instruction better) was lacking.

    I attribute the fact that I basically started `having to program` at an early age, both on a computer (1983 generation C=64s with a tape deck means you end up typing in alot of programs from Compute! and then realizing you can tweak this bit or that bit and make it do different things), and Legos/Linkin Logs/Erector sets, which definately teachs you to parts-of-the-sum style thinking.

    I think aside from some college required stuff to get my AS, the highest math being a basic Stats course (which was all done on lab computers or calculators, so I didn't actually learn much math, rather I learned button pushing, which I was already proficient at).

    Back to the OP:
    I think the level of math required for programming depends highly on what you are programming.. not all programming is equal. Now I mostly program tool set front ends and system scripting.. there's not alot of advanced math there. If I was developing a new physics engine for a 3d world space, that'd be more complicated, but most of the math has already been worked out these days. Obviously if you're programming for academia, the need will vary based on which school you're working for. (The English Lit department might not have a high math requirement, until they ask for you for some 1-off off-the-wall project).

    --
    ----- The internet has given everyone the ability to have their voice heard equally as loud.. even if they shouldn't be
  128. Better not try doing too much by Arimus · · Score: 1

    With any form of navigation software (try coding coordinate transforms without a maths background), any form of signal filtering, any accounting type programming, any statistical analysis, any audio / graphics processing etc etc etc.

    --
    --- Users are like bacteria -> Each one causing a thousand tiny crises until the host finally gives up and dies.
  129. But it's not math skills in general by SlappyBastard · · Score: 1

    For example, calculus hasn't been of great use to me in programming with large data sets. Anything pertaining to patterns and iterations, on the other hand, has been invaluable. Especially when trying to get run times down to something usable. A slow process is nothing; a slow process repeated over 100,000 record while matching each record against a different data of 40,000 records . . . that's a pain in the ass.

    --
    I scream. You scream. I assume that means we're both acquainted with the problem. We proceed.
    1. Re:But it's not math skills in general by Anonymous Coward · · Score: 0

      How is Calculus not useful to programming? The Sine, Cosine, & Number-e (exp(x)) Taylor series converge quickly, which are second-semester Calculus topics (in US universities anyway). Also, volume calculations using Calculus fomula can make much shorter programs than using basic geometry.

  130. math by Anonymous Coward · · Score: 0

    Usually it depends on the nature of work you are doing. Some programming tasks are more math related.

    neccessary? Arguable but maybe not.

    Extremely useful and a competitive edge over others? Absolutely.

    I double majored in math and CS. Getting good grades in math on my resume made me very competitive and helped me get interviews. Occasionally I use some of the things I learned in my math classes. The one thing that has been a constant help is the mathematical maturity I gained from taking the courses. It filters in to how you think and makes you a better problem solver.

  131. Anti-Redundancy??? by AthleteMusicianNerd · · Score: 1

    I thought Slashdot was against redundancy??? We've gone over this before. Programming is a result of math so if you can't do math, well you're retarded, but you can't do programming either.

  132. It depends what you want to be really... by pjr.cc · · Score: 2, Insightful

    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.

  133. Weight Lifting and Olympic Skiing by Anonymous Coward · · Score: 0

    What do they have in common? Why should a skier spend all that time in a gym lifting weights when all he/she wants to so is ski faster than the other guy? The mental excercises and thought discipline it takes to get through a math class qualify a person as capable and enhance his prospects in a career which requires similar skills. I don't use the math per-se, but I the skills learned help me adapt to the needs of maintaining my career.

  134. Math = Money by gabereiser · · Score: 1, Interesting

    Having been a programmer now for ~10 years or so. I started off not caring about math that much (aside from a little geometry to draw custom controls). I was making $45k a year and most of my programming time was doing web development (database, basic logic, front end HTML etc). Tying records with class objects via auto incrementing ID's and massive JOIN statements. However, I started getting into 3d programming and multitouch applications and found the more math you know, the more versatile your UI's and windows can become. I recently finished up a product called Glo (globible.com) and found we couldn't have done ANY of that without advanced math knowledge. Now I make twice as much as I was making doing web back ends and I owe it all to mathmatics. When interviewing software programmers, anyone who hasn't had a little trig gets a good kick towards the door.

  135. Re: Understand the Physics Conceptually First by Anonymous Coward · · Score: 1, Interesting

    Sometimes, we can understand the physics conceptually first. Other times, the math derivation explains the physical phenomena.

    Partial differential equations began as a branch of Physics. The derived equations gave conceptual meaning, not numerical values. Here Are two examples:

    The Wave Equation, Uxx = Utt, has the solution U(x, t) = F(x+t) + G(x-t). This describes two waveforms, single variable functions F(s) and G(s). I pluck a guitar string, and two waves go out in opposite directions.

    The Diffusion Equation, Uxx = Ut, describes how a dye concentration U(x, t) spreads out over time. The Uxx term describes a "diffusion" based on the "second derivative rule" for "Maxima & Minima" problems. Where Uxx > 0 (concave up), the function U(x, t) wants to add material to smooth out the curve. Where Uxx 0 (concave down), the function U(x, t) wants to lose material to smooth out the curve. This is diffusion leading to a steady state time, when all points x have the same value.

  136. I agree by Anonymous Coward · · Score: 0

    While much of the time I think that mathematicians are just off in their own imaginary worlds (http://www.maths.ox.ac.uk/groups/analytic-topology, no wikipedia article even!), I have found in my engineering studies that often we stumble upon a problem that has had a solution in math for a long time and is well understood even though it is (physically) "new".

    I remember a story about the first electrical engineer to find an efficient method to find important (large) eigen-values for complex systems with many eigen-values, he "discovered" the solution by reading it in a math book. The solution was there just waiting for an application and so circuit simulation was pushed forward quickly because the problem was solved (hundreds of years before I think). (Sadly I don't remember enough details of the story to remember who it was or even exactly why these values needed to be found.)

  137. YOU ARE EXACTLY CORRECT, SIR by maillemaker · · Score: 4, Interesting

    >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.

    I share your exact sentiment.

    I have been a definite non-traditional student. I started school in 1988 at Georgia Tech, and failed out after 2 years. Some 17 years later, I finished my BS in Computer Science.

    I have taken and retaken math classes many times. When I was at Georgia Tech I got a C in Calc I, and then in Calc II I got W, F, D, F, and finally passed with a B. Then I moved to another state and had to take Calc II yet again. A few years ago I started working on my Mechanical Engineering degree, which requires Calculus III, so I took Calc I and II again to brush up. I got a B in Calc I and a B in Calc II and got a D taking Calc III. I am currently re-taking Calc III.

    My problem is, I believe, that I have strung out my mathematical education over so long a period of time that I am not FLUENT IN THE LANGUAGE OF MATHEMATICS. It is, exactly as you state, a LITERACY PROBLEM. I firmly believe, as you seem to, that MATHEMATICS IS A LANGUAGE. Moreover, I believe, as you seem to also, that people who are fluent in mathematics actually "SEE" mathematical equations.

    For example. I believe many people when they look at x^2 + y^2 = r^2 instantly recognize the equation of a circle. Now I have finally gained that understanding, BY ROTE, of that fact also. But I believe that people who are mathematically literate see more than just the pattern recognition that that equation means circle. I think they see equations and actually see WHAT IS GOING ON. I never do. I have to sit down and plug in values of X and Y and see what comes out. It's very tedious.

    I think your last sentence was exactly dead-on. I liken the problem to handing an encyclopedia to a 5-year-old and asking them to read a passage. They will be focusing so hard on each word that they will not know what they have read at the end of a sentence. That is exactly how I feel trying to do Calculus. I am focusing so hard on the basic mathematics that I find it very difficult to put it all together to see the big picture.

    It is very much a literacy problem, and I find it confounding. The only thing for it, I'm afraid, is to do more and more and more maths until one gains the familiarity one has just as one does with reading. The problem is time. I just don't have the time, with a full-time job and a family, to do it.

    I haven't been able to help but think, over the years of taking higher-level math classes, that there must be a better way to learn this stuff. The science of Calculus is some 400 years old, some parts much older. Yet the way it is taught has not changed hardly at all. Now maybe there is no better way to learn it than doing it over and over until knowledge turns to understanding, but what keeps coming to me is that there must be a better way to VISUALIZE the abstract into something more concrete.

    Example. The other day in Calc III we were talking about minimums and maximums, and how they might occur on the surface or along the surfaces boundary. So I said out loud, "So, the surface can either be a volcano or a potato chip but either way there is a high or low spot somewhere on it." And half the class said aloud, "Aaaaaahhh!" - they got it because they were able to VISUALIZE the abstract concept as something concrete.

    There has got to be a better way to con

    --
    A work that expires before its copyright never enters the public domain and thus enjoys eternal copyright protection.
    1. Re:YOU ARE EXACTLY CORRECT, SIR by PerfectionLost · · Score: 2, Interesting

      Insight is the most sought after skill in life, and Mathematics is no exception. I remember taking math classes in college where the teacher would be explaining a proof, and then would make an almost epic leap of faith to the next step. The step would work, but I would have no inclination as to why you would do that. I always made a point of asking if that leap was intuition, in the hopes that I could identify where greatness occurs.

    2. Re:YOU ARE EXACTLY CORRECT, SIR by pnuema · · Score: 2, Interesting
      I have no doubt you are correct sir. By my elementary and secondary test scores, I should be a mathematician. I was doing college algebra in the sixth grade. However, I found in 11th and 12th grade (pre-calc and calc) that I just plain didn't understand the math anymore. I could do the equations, and I knew when to apply them, but I no longer had any understanding of why I was doing what I was doing. I never developed that relationship with math that the truly gifted people I knew developed. As a result, I got a D in Calc II in college, and never took another math class.

      By the way, I am also proof positive that you can have a good career in IT without much math. :) I may not be an uber-programmer, but somebody has to make the stuff those guys write work.

    3. Re:YOU ARE EXACTLY CORRECT, SIR by tyrione · · Score: 1

      Slightly off-topic, but relevant to your desire to achieve a degree in M.E.:

      As a Mechanical Engineer you might want to reconsider your career choice. You still have Differential Equations to go, not to mention any advanced FEA would have you needing Vector Analysis [dealing with Tensor Calculus]. Your Physics skills, not to mention Dynamics, Kinematics, Strengths of Materials, Machine Design, Dynamic Systems, Fluid Dynamics, not to mention Aerodynamics are greatly hampered due to your difficult grasp of Calculus III.

      Calculus III is the most tangible of Calculus for one to VISUALIZE seeing as we're dealing with boundaries in 3 dimensions that allow one to determine the Volume, Torsion, Angular Acceleration, externally applied forces in Pressure and internally expanding forces in Temperature of thin walled pressure vessels, Sheering Stress/Strain, so on and so forth.

      As someone whose worst grade was a B in Calculus II [not because the Professors were gods, but because my time spent on Calc II was less than the rest in this series of courses] I'd recommend you move to say, Civil Engineering or Structural Engineering where you won't be killing yourself off just to get your B.S. degree.

      You rightly stated that fluency in the language of Mathematics is crucial for one to add to the applied group of languages which part of the body of work in say Physics, M.E., C.E., ChemE, E.E., etc.

    4. Re:YOU ARE EXACTLY CORRECT, SIR by Grishnakh · · Score: 1

      I think your last sentence was exactly dead-on. I liken the problem to handing an encyclopedia to a 5-year-old and asking them to read a passage. They will be focusing so hard on each word that they will not know what they have read at the end of a sentence. That is exactly how I feel trying to do Calculus. I am focusing so hard on the basic mathematics that I find it very difficult to put it all together to see the big picture.

      This is like me trying to read German. I took it in high school, so I know all the pronunciation rules (as German, unlike English, is an extremely consistent language). I can read a German book aloud with very decent pronunciation, so that any German speaker should perfectly understand me, but I'll have very little idea of what I just read, beyond the most simple words (he, she, it, Mr., Mrs., walk, drive, train station, etc.)

      It seems that to really understand something, your brain needs to train itself, and in effect (in CompSci terms) to "grow" itself a new parallel processor to handle that task, be it a new language, advanced math, etc. It's much like trying to implement an advanced 3D FPS game entirely on the main CPU, versus doing all the 3D graphics work on a GPU.

    5. Re:YOU ARE EXACTLY CORRECT, SIR by Anonymous Coward · · Score: 0

      I haven't been able to help but think, over the years of taking higher-level math classes, that there must be a better way to learn this stuff. The science of Calculus is some 400 years old, some parts much older. Yet the way it is taught has not changed hardly at all. Now maybe there is no better way to learn it than doing it over and over until knowledge turns to understanding, but what keeps coming to me is that there must be a better way to VISUALIZE the abstract into something more concrete.

      I've had a similar experience to learning math as yourself, and likewise found my largest problem in trying to ground my understanding of mathematical abstractions to something I could understand apart from rote memorization. It wasn't until I went to a good liberal arts college that taught science in the classical sense that I started to see the big picture.

      Every science has its first principles and postulates which allow us to logically come to new conclusions. From a few basic sciences we divide and abstract our understanding through subservient sciences. Geometry, or the first abstraction from physical properties of quantity and mass (etc.) is the parent science of all other mathematical fields, like algebra, trig, calc, physics (in the mathematical sense as distinct from the philosophical science), etc. If you study the progression of math from the basic geometry of the ancient greeks, like Euclid and Appolonius, to more modern classical authors like Descartes, Galileo, Newton, and the rest, you see their proofs either explicitly or implicitly relying on proofs from less abstracted mathematical fields until everything resolves back to the first principles of geometry. Some branches of modern mathematics even take as a given the contrary of certain geometric first principles and postulates, such as non-euclidean geometry which posits that parallel lines might eventually meet in a point. In either case, mathematical knowledge, like any other scientific knowledge, should proceed from the more known (first principles of a parent science) to the less known (proofs or theorems in a child branch).

      When I first started to notice early on studying Euclid how his proofs for geometric relationships were the basis for modern algebra, where we substitute variables and operators in expressions to describe geometric relationships. When we say x^2, you can imagine it as a line of length x in cartesian space, with a square constructed on it. x^2 would then describe the distance of the line forming that box. The abstraction of division and multiplication from geometric manipulations is also readily apparent. When you start moving to highly abstracted math like advanced Calculus, I'm not sure many people can see geometric visualizations of formulae.

      Modern math, like most other modern sciences, has little interest in a clear division of science and foundation in first principles. We aren't taught to move from the more known to the less known. Principles in one branch of mathematics are carelessly borrowed through analogy to other branches of math, with no clear understanding of the proper division of the science as a whole. Experienced phenomena or conjectured phenomena are first presented and proofs are then constructed to attempt to give a mathematical description. Students are taught formulas to manipulate data to help explain these phenomena for the sole purpose of practical application. While this modern approach has allowed us to describe incredibly complex natural phenomena to a high degree of accuracy, few people have scientific understanding of such proofs. Students who are good at math tend to be able to deduce principles and reliant proofs/theorems by analogy in a given mathematical branch to help them better see the relationships and laws or theorems involved in a particular proof. Those who can't are stuck trying to memorize formulas and manipulations, with greater or less success.

      In summary, get a good grounding in classical sciences if you want to understand anything.

  138. Re: Stated in Absolutes by Anonymous Coward · · Score: 0

    Mathematics includes non absolute topics such as Chaos theory, fuzzy logic, & Markov chains. All behave according to the initial inputs, and two of them developed using computer-based research.

  139. Oh, good lord... by Poodleboy · · Score: 1

    You don't need carpentry skills to build a chair, either, just the tools. It will, however, be a piece of junk. It will be wobbly, ugly, dangerous, and short-lived.

  140. Mathematics for Programmers by Riventree · · Score: 1

    Like the above poster says: math comes in flavors. Choose the right ones I've worked at small niche-tech companies, and big companies including Google and Amazon. In my experience, calculus and statistics are of *minor* use, but discrete mathematics, combinatorics, graph theory, big-O, etc are *ESSENTIAL* to being a top-tier contributor as a programmer. My degree required 3 semesters of calculus and 2 of statistics. They have been of almost no value at all on a month-to-month basis. I took 3 semesters of "elective" math in other areas (discrete/linear-A/combinatorics) which have helped me on a DAILY or HOURLY basis as a programmer. I'm confident that most of my peers would agree.

  141. What can I do without so much math knowledge? by FoolishOwl · · Score: 2, Interesting

    I went back to school, about a year and a half ago, with an original plan of taking some community college courses, then transferring to a four-year school and getting a computer science degree, and an overall plan of working as a system administrator. In general, I'd found most of my classes ranging from easy to effortless, but I found calculus incredibly difficult. Calculus took up 90% or more of my study time, and I was still doing poorly. I concluded that if a computer science degree required that much math, I just wouldn't be able to do it.

    My current plan is to finish up a certificate program in system administration, try to find work, and perhaps get a degree in technical writing later. My guess is that I'd be good enough at light-weight programming -- hooking up the pieces with Perl and so forth -- but I wouldn't be a first rate coder in any case.

    I did find it puzzling, though, that the programming courses I've taken were almost painfully easy, by contrast with the math courses. It also struck me that while there was a wide range of ages in the networking and programming courses I took, the students in the math courses were almost all 19 or 20.

  142. ... and given two plumbers ... by ZeroPly · · Score: 1

    ... the one with more knowledge of hydrodynamics is the one you want. You're conflating math as a measure of intelligence with math as a requirement to get the job done.

    Math skills above the high school level simply shouldn't matter to a coder. A programmer assembles existing algorithms into a cohesive whole. He/she does not create fundamental new work. If that's what you are interested in, you should be in computer science, not spending your time writing C# or Java code.

    Even worse, a programmer with a bit too much knowledge is dangerous. You might think you have a really cool (and much faster) alternative to the library hash functions, but from a professional mathematician's viewpoint, you're the equivalent of a chimpanzee who just figured out how the controls on a power drill work. And don't even get me started on statistics - of all the good programmers I've met, maybe 10% understand what confounders are and have some vague idea of how to deal with them.

    I'm not knocking programmers here. But in general, they are the information era equivalent of plumbers. You don't want a hotshot plumber who has his own system of joining pipes to maximize flow volume. You want someone who does it the same way as the other million plumbers. In coding, you just need to understand what formula to plug in and how the components handed to you work. But if you're writing something that requires a high level of intelligence to produce, you're doing it wrong...

    --
    Support microSD: in a post 9/11 world, it is unwise to carry your data on media that you cannot comfortably swallow.
  143. Inductive Proofs == Recursion && math == f by Anonymous Coward · · Score: 0

    I am always amazed when people understand recursion without having studied inductive proofs. I did not truly understand recursion until I wrote numerous inductive proofs in my second year discrete mathematics class. Everyone studying computer science needed to take this course at my university. I think the ability to understand and apply mathematics is what separates computer scientists from programmers. I have been both, and being a computer scientist is more fun to me. I actually believe that math can hinder some programmers - if you know a lot of advanced mathematics and you are being asked to change colors around on a web page, that seems like it would be a hindrance to me.

    I would rather be using interesting math to help me with my programs than not.

          -Brian J. Stinar-

  144. Differential Equations by RogueWarrior65 · · Score: 1

    Never paid much attention in Diff Equ's class and I wish I had. Or rather I wish the material was presented in a much more practical applications way. Every time I went to a SIGGraph course or paper presentation on dynamics, the speaker would say something nebulous like "We implemented a 4th order adaptive Runge-Kutta solver" or "We implemented the Navier-Stokes equations". Sure you did. Let me see the damn source code, smartass.

    1. Re:Differential Equations by PsiCTO · · Score: 1
      Don't think the source code will help you understand the problem or the solution... no more than seeing DNA helps you understand biochemistry.

      If you don't know why someone needs to use a Runge-Kutta algorithm, then you need to try to understand the problem being solved. Then worry about the algorithm. In other words, understanding how a solution works doesn't mean it's right or well-suited to the problem being solved.

    2. Re:Differential Equations by RogueWarrior65 · · Score: 1

      That's all well and good but the issue is translating a mathematical formula for say basic particle physics into C code. You might read a paper that says the formula for a spring network for cloth simulation is this and there will be a fancy formula with lots of fancy symbols. Last time I checked, C didn't have these symbols in it. I have also seen the code for a rigid-body dynamics engine and I look at the code for the solver and I'm left scratch my head going "How the hell do you go from a pure paper mathematical formula to this bit of code?"

      And then you sit in a SIGGraph course on rigid body dynamics and they show you how to do Euler which anybody with basic algebra can grok and then they say "More advanced solvers are left as an exercise to the reader" but yet the remainder of the course exercises and examples only work if you pitch your Euler solver for a fancier one.

      "And then a miracle occurs"
      "I think you need to be more explicit in step 2"

    3. Re:Differential Equations by russotto · · Score: 1

      That's all well and good but the issue is translating a mathematical formula for say basic particle physics into C code. You might read a paper that says the formula for a spring network for cloth simulation is this and there will be a fancy formula with lots of fancy symbols. Last time I checked, C didn't have these symbols in it. I have also seen the code for a rigid-body dynamics engine and I look at the code for the solver and I'm left scratch my head going "How the hell do you go from a pure paper mathematical formula to this bit of code?"

      That's where the sub-field called "numerical methods" come in. Well, the numerical methods actually get you to an implementable mathematical algorithm, translating that to C or whatever is left as an exercise. Numerical methods being older than digital computers, they're intended to be implemented on grad students.

  145. Get to it slaves! by Anonymous Coward · · Score: 0

    I have a BSME degree, and had to learn lots of math to get it. But out in the real world, no one uses math, it is all done on the computer, so learn the math, and get busy programming, slave, or the we will return to the stone age!!

  146. For CS it is, for programming maybe not by Anonymous Coward · · Score: 0

    As far as a Computer Science degree goes, yes you need math. If your job plans are to write webapps or something like that (which is what I do, it's a valid career) I can't say you need math most of the time, or even a CS degree.

    CS != programming. I know I'm slightly offtopic but too many, even in our field, conflate the two. I know I did while at university.

  147. More Math == More $ by PsiCTO · · Score: 1

    The "math" is easy.

    My programming rate with 12 years post-secondary mathematics and 25+ years math use and interest is >> your rate without a good math background.

    I get some jobs because I have the background no one else (available) possesses. Being able to program is the necessary expression of the problem being solved.

    In one of my first jobs, I was asked to learn and apply mathematics to do some satellite orbit modeling. The Chief Scientist of the company was very pleased I was willing to take on the work, but to my surprise mostly because the company had joined the bandwagon of companies in the late 70s and early 80s in their enthusiasm for Comp Sci grads. Only later, he explained, did they realize that most were trained to apply algorithms in problem solutions, not to create solutions (especially those that required some math work). This was driven home when a colleague asked me for the solution to an orbit problem he had been asked to solve. I said sure, it's easy, and here's the mathematical approach you can use -- his problem was for a satellite we had not yet worked with. He totally balked and insisted that I must have a pre-coded subroutine available he could use?

    Anyway, I'm happy that (at times) my interest in math has paid off in getting me work that others can't. And I get a premium because of the common feeling that "math is hard". This is especially true of management who can neither program or solve math-related problems and are scared to death and willing to pay :-)

    Of course, to be fair, I'm no great whiz at database, client-server, and other more "traditional" programming challenges, so things kind of even out ;-)

  148. Math Skills ARE Essential... by sitarlo · · Score: 1

    Order of operations, operator precedence, variables, matrixes, trig, geometry, boolean math, and even calculous are everyday events for programmers who actually write useful software. Sure, you can create a basic app while being ignorant about math, but to do something useful such as write scientific, financial, or entertainment software, you will most likely need to know at least some algebra. But, here's the real reason to learn all the math you can: it conditions your brain for solving complex series of problems which is exactly what programming requires.

  149. I want the one that can think. by MikeFM · · Score: 1

    In my experience the one you want is the one that can read cryptic undocumented code and third party un-documentation. Math comes in handy sometimes but is frequently very domain driven and can be picked up as easily as picking up the rest of the data structures and algorithms needed for the task. Somebody that can figure out that when interfacing to a complex proprietary third party system the docs say to do X but really you need to do Y is more useful. Not that the two skill sets are exclusive.

    --
    At what price learning? At what cost wisdom? The price is a man's peace of mind, and the cost is his life.
  150. Math is boring by Arawak · · Score: 1

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

    "Interesting" is very subjective. I contend that truly interesting work in the software development field requires as few math skills as possible. Frankly, math isn't all that interesting to me.

  151. It's all greek to me by Anonymous Coward · · Score: 0

    I've realized recently that I now have a problem in my math classes. I think part of it is that I haven't had to do any math in a few years... another part is that I'm extremely lazy and the math doesn't interest me so I don't put effort in, and unlike say, my ethics class... I can't just BS my way out. But the final problem is greek, I don't recognize it, if it was rewritten in a programming way I would be able to do most of what I have to look at. But a single greek symbol means nothing to me. Math's terseness confounds me.

  152. By writing code, you are writing math by GasparGMSwordsman · · Score: 1

    Given that all logical equations are also mathematical equations I would say very clearly, if you can't do math you can't write software. Also, just because your calculus skills are not up to snuff does not mean your Boolean algebra skills are not top notch.

  153. Really? by whitroth · · Score: 1

    I got through 2 years of calculus.

    I've now been in the field for 30 years, of which about 2/3rds was as a programmer, and the rest as a sysadmin, and the highest-level math I ever used was when I wrote a database system, back in the mid-eighties... and that was logs.

                  mark

  154. You're kidding, right? by Anonymous Coward · · Score: 0

    A solid foundation in maths is critical to everything, and it teaches you to _think_.

  155. Programming is math, pure math. by GasparGMSwordsman · · Score: 1

    As I have pointed out before, logical constructs ARE math. Boolean algebra in most cases. The following bit of code is a prefect example of code that is both code and a mathematical equation:

    IF (bob == true) Then
    doSomeThing()
    Else
    doOtherThing()
    End If

    As a result, if you can't handle mathematical/logical constructs, you are pretty much worthless as a programmer. The opposite is also true, if you CAN handle logical constructs you ARE good at math. (You just don't know it. =P)

  156. Mathematics is... by Anonymous Coward · · Score: 0

    a language. Programmers are linguists. Just like garbage in = garbage out, the quality of the code is directly related to the quality (mathematical skills) of the coder.

  157. Mathematics and US Computer Science by Alanonfire · · Score: 1

    Lately I've been reading a lot of ACM articles. A while back I noticed they started this same argument with a number of articles, one concerning the hypothetical solution to the P vs NP problem and one that is more real, concerning US Computer Science students.

    ACM blasted the US educational system for their lack of trained computer scientists. They stated that US Universities are training Java api users and not computer scientists. They pointed out that a number of companies had been outsourcing their work because the US school systems weren't teaching the correct mathematics that an employee needed to be useful. According to ACM a number of companies even posted something along the lines of "US Applicants Need Not Apply."

    In my personal experience, I would not have my job if I wasn't a dual major in Applied Math & Computer Science. Every company I applied to only looked at my Math degree when matching me for jobs in programming or software/systems engineering. 3 potential employers stated something that was eerily similar, "You can teach a mathematician to program and design software, but its nearly impossible to teach a computer scientist mathematics because they think they don't need it."

    I'm not really stating a case against or for the topic. I'm stating the trends. Unless you just want to be a programmer for your entire life, I suggest learning more mathematics. Even if you don't feel its necessary now. You may find in the future that it is necessary or that you wished you had learned these mathematical concepts as they make life easier when designing complex systems.

    My statements are more geared towards computer science students/professionals and not people who just like writing code.

  158. Depends by geekoid · · Score: 1

    Computer Scientist? Yes
    Working on computer programs that are used in mathmatics? Yes
    Writing a desktop application? Not really needed.

    --
    The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
  159. Best software designers know lots of math by richieb · · Score: 1

    Math teaches you how to think abstractly and see the patterns in what seems like unrelated pieces of data. I observed that programmers who know a lot math are great software designers - they can abstract common things in what seem like disjointed pieces of code. Abstract math is the ultimate illustration of the DRY principal (DRY == Don't Repeat Yourself).

    --
    ...richie - It is a good day to code.
  160. Mathematics Degree by cervo · · Score: 1

    As an undergrad, one of the schools I went to tried to sell either a Mathematics dual major or a minor to the computer science students... The argument was that mathematics classes aren't necessarily going to be useful in what you do, there are many jobs where solving a differential equation does not matter.... But that by solving the math problems you learn to pay attention to the details and to analyze things breaking complex processes into pieces. The physics teacher used the same argument for physics saying it makes you better pay attention to detail and problem solve.

    Anyway I don't know if any of that is true or not. I had a mathematics major friend who claimed that by locking himself away for a few years and solving some proof, somehow it would magically increase his analytic skills and make him more employable. I don't know about that...

    I have a math minor, I'm not sure it helps that much. I have a "normal" programming job. And looking on the various job sites, most programming jobs seem to be linking some type of data to a database, either processing it, creating a web front end for it, etc... basic corporate development. Mostly it doesn't require more than high school algebra on the math skills. I see a lot of people considered "good programmers" who don't even understand Big O notation. But it's good enough for most stuff. Many of them intuitively know that a hash table is fast for lookups, and a sorted list is good if you need fast lookups and an order even though they don't know BIG O notation. In my jobs, the only really "advanced" math skill I pulled out was topological sorting for dependencies because I made a calculation engine. Also once I saw some code for a bisection method, which was mislabeled newton's method and obviously cut and pasted online. But an awful lot of the numerical methods have the formulas posted online with directions, so it seems like even the occasional numeric method is no problem. Most people's business reports are full of averages and percent increases which are all easy to do...

  161. Certain Math Knowledge and Skills Are Helpful by KnowlerLongcloak · · Score: 2, Interesting

    I learned Boolean Algebra for a CS degree. The application the University intended for its use was for designing hardware circuits.

    As a programmer, over the years I have had many cases where I had to write programs that did different things based on a list of inputs and their values. My knowledge of Boolean Algebra has helped me make the code simpler because I could reduce the input values to the lowest equivalent. My resulting code therefore has less conditionals (if..then..else and switch statements).

  162. The art of recursive thinking by DollyTheSheep · · Score: 1

    As the article says, you can be a valuable developer without being exposed to or needing much math but you will be confined to certain areas. Normal developer work is mostly applied mathematical logic, but advanced math is normally not needed.

    I think I belong to this group. I'm a chemist turned programmer/consultant and I now mostly work as a consultant for a company providing UML tools. I had my fair share of advanced math in school and during my chemistry studies, but those courses don't compare in any way to the math lectures provided in computer science. This were (introductory) courses in linear algebra and analysis and they were "pure math". Hard proofs and all instead of calculating or solving equations.

    I'm nevertheless thankful for these lessons. They taught me consistent and recursive thinking as much or more so as real programming did.

  163. It depends on what you are aiming to accomplish! by itsybitsy · · Score: 1

    Nonsense. It depends on the job at hand. If the program requires heavy math problems to be solved then possibly the one with more math... but math geeks often make terrible programmers since they focus too much on the math and not enough on the quality of the rest of the program.

    I've written engineering programs for bridges and buildings and I'm not a civil engineer and only have high school math plus what I've studied on my own. No calculus, but I've written bezier curve objects that make awesome curves. I worked with a civil engineer who had epic math skills, actually epic practical math skills. In fact I taught him how to use object oriented languages to upgrade his programming skills which were cut on early Fortran systems of long ago lore. The parts that needed math he did but I checked his programming work.

    Some of the best programmers I know don't have any advanced math skills at all. Most of the best mathematicians I know don't have any good programming skills. Some do. It's hit and miss.

    When working on a project or product it's important to get to know the skill sets of the others on the team and for the team members to leverage each others skills. Thus the entire premise of this article posting is bogus since it asks the wrong question. It depends on what the programmer will be doing and if they have the rest of the range of skills that you need for that person to be doing for the tasks at hand.

  164. Don't be a lazy git. by lythander · · Score: 1

    Take more math. Everyone should. English majors should. Art students should.

    The world would be a better place if more people understood math, in particular statistics.

  165. Re:The weak in math are usually the ones saying th by Anonymous Coward · · Score: 0

    I often hear programmers saying Math is not important, and from my observations, it is often the programmers that are weak in Math.

    Isn't that obvious? I'd hazard a guess that the vast majority of programmers claiming that math is an inextricable core of programming are strong in that area. I don't see how the nature of the proponents of either side bear any relevance on their arguments.

  166. Seriously dude, math is fundamental by rigorrogue · · Score: 1

    You can read and write. That implies you can count patterns of symbols and use them. Combinatorics right there, and hence Number Theory, Set Theory, Number Theory, Group Theory, Number Theory, Logic, and Number Theory. And of course Number Theory. Did I mention Number Theory?

    A bit of background. I studied Art as my major through school and breezed into Art College. I'm good. But I was also curious about stuff, and read philosophy, and got curiouser. And then I realized I'd never be able to _really_ understand patterns of any kind without Math. So I went and got a degree in Math and Physics (a highly recommendable combination). Golly did it change how I see the world.

    I lament the poor teaching of the subject, the deplorable notation, the effortless and almost justified intellectual superiority of Mathematicians, and most of all the general ignorance of the subject and so the silly questions as to its utility.

    But someone interested in programming asking if Math is useful? Gee, is being able to make marks handy for writing? Is the sensory perception of sound waves good for vocal communication? Is eyesight in any way a contributory skill for comprehending body language? Sure one doesn't need to understand physics to use all three but it helps (and Physics uses Math ubiquitously, expressly, and inescapably).

    Programming _IS_ mathematics*. It uses different languages to get the points across to a dumb computer, but without it we wouldn't have computers! Yes it's great we've all these high level languages (Go LISP! Go Haskell! Go Prolog and Python!) Yes, it's marvellous we've an incredibly rich set of interoperating libraries ("set", Uh huh huh huh!). Yes we've got bleedin' amazing dev tools (emacs and vim :). But you simply can't pretend to use them without Math. Seriously, you can't. I don't care if you're a HTML+CSS+JS drone in a cubical, or a script kiddy, or a logo-learner, you're using Math.

    Want to be a better programmer? Learn more Math**.

    A bit more background. I'm doing a lot of programming now, and most of the hard work is in learning the new Math I need to express my whims, and figuring out how to use the libraries to do so efficiently ( http://en.wikipedia.org/wiki/Exergy_efficiency - Warning: Contains Math). Paper and Pencil are essential tools at this stage. The rest is a test of my concentration, short-term memory, and typing skills.

    So here's some advice. Before making daft comments about well-established disciplines study them and their applications carefully. You will spend less time being thought of as an ass. You could do worse than start here: http://en.wikipedia.org/wiki/The_Art_of_Computer_Programming

    Math for the win!

    * Which is why patenting software is execrably idiotic.

    ** I'd almost say "Want to be a better person? Learn more Math." Except that one can, and some do, learn Math in isolation from other subjects, and it can sometimes help them little if at all in comprehending life in general and their own life in particular. I know many sad stories in this regard. But still, it's good gear.

    --
    science in government
  167. It's a little late for that. :) by maillemaker · · Score: 1

    >As a Mechanical Engineer you might want to reconsider your career choice.

    I have been doing mechanical engineering-related work for nearly 20 years now. I started as a draftsman and have worked as a mechanical designer ever since, with a very brief stint doing CAD system administration. I am listed on several patents through my work with fiber-optic interconnect devices.

    While it is certainly true, especially in very serious engineering endeavors, that mathematical calculations are essential, and highly complicated. If you are designing aircraft, or rocket engines, or bridges, I'm sure there is a lot of mathematics involved.

    But there is still lots of room in mechanical engineering for good old-fashioned mechanical intuition, and I have put it to good use over my career. My father, who is an actual PE in mechanical engineering, confirms that he has never used calculus since he left college, and he did and continues to to groundbreaking work with small internal combustion engines.

    My work has revolved mostly around ruggedized electronics enclosure design for the last 10 years. I have used tools like Finite Element Analysis and hand-calculations to do my job, but generally nothing more sophisticated by hand than simple statics and basic algebra. It is true that I suffer from not understanding how to do FEA by hand, and thus one becomes very dangerously close to putting garbage in and getting garbage out and not knowing it, but fortunately the electronics tools are getting so simple that doing simple analysis are relatively easy and good mechanical intuition can usually tell you if you are getting good results or not, and testing will bear it out.

    I can say that I have keenly felt my lack of true engineering background on occasion over the course of my career, which is why I am remedying that situation.

    >Calculus III is the most tangible of Calculus for one to VISUALIZE seeing as we're dealing with boundaries in 3 dimensions that
    >allow one to determine the Volume, Torsion, Angular Acceleration, externally applied forces in Pressure and internally
    >expanding forces in Temperature of thin walled pressure vessels, Sheering Stress/Strain, so on and so forth.

    I agree, and interestingly, I understand the CONCEPTS extremely well. I can see exactly what is being done and how it applies mechanically, and in fact I comment on this all the time to my fellow students who are kids with no real-world experience. I do Computer Aided Design every day so the entire course has basically been, for me, especially with my CS baground, a behind-the-scenes look at how such software functions to calculate end render and analyze 3D models. My failing comes from not being able to look at the mathematics and map it easily to the concept.

    I've gotten a B in Calc I and II, and will probably do so in Calc III also, maybe even an A. I only have one more math class to take - Differential Equations.

    Most of the problem in my early college career is that I was hell-bent to see how little effort I could put into my studies and squeek by passing. Much later as an adult it dawned on me that it is a million times less stressful to put in four times the effort and ace the class. For example, when I took Latin, I simply memorized all the vocabulary and the entire appendix of Wheelock's Latin. When I sat down to each test, I wrote out the appendix, and then used it as a decoder to translate Latin. It was a bitch memorizing the appedix, but tests were an absolute joke and not stressful at all.

    --
    A work that expires before its copyright never enters the public domain and thus enjoys eternal copyright protection.
  168. There's a difference... by Xunker · · Score: 1

    There is a difference between "not knowing math", "not understanding math" and "not doing well at math."

    I am horrible at math, and I've been bad at it all my life. I failed Pre-Algebra THREE TERMS IN A ROW in High School. I suck at math, period.

    But, I am a successful programmer and developer and I've written a lot of code that does really complicated math... so how does that square?

    The difference is that even though I can't do math, I know *what I can do* with it. I know what an Interquartarial Mean will do for me, but I have to look it up in a book every time I use it to know *how* to do it. In this case, yes, it is obvious that I would have a _better_time_ if I knew how to do this stuff without looking in a book, but I've fared pretty well. Lacking math skills doesn't mean I'm a suck programmer, it just means I may have a harder time with code that uses a lot of math.

    Someone above posted "Two candidates, one knows math and one doesn't, you want the one who knows math"; that's true if all else is equal, but you never have two candidates for a job you are identical except for one thing. You buy the whole package and if you think their other qualities outweigh their lack of math skills then that's one you choose.

    --
    Hilary Rosen's speech was about her love of money and her desire to roll around naked in a pile of money.
  169. Database programming needs Math by tinker_taylor · · Score: 1

    One major component of mathematics is Set Theory and database programming uses Set Theory for unions, joins, etc. So yeah, Math knowledge is needed. On the other hand, mundane programming doesn't really need too much Math background, especially of the formulaic/formula-driven part of Math. What is needed is a sound understanding of Boolean algebra (which is what Digital Electronics --> Building blocks of Electronic computing needs), and thereby Logic. Do you need too much math background to do bubble-sorting, etc? Perhaps not.

    Applications that are calculation intensive (statistical programs, scientific applications etc) do need Math background, but not necessarily beyond basic University level (provided there are statisticians, scientists who provide the underlying Math to the developer).

  170. Necessary or Not? by Mind+Socket · · Score: 2, Funny

    == true

    How did I do?

  171. Re:Maybe it's cart horse... by smellotron · · Score: 1

    Having a large toolbox has worked quite well in my career.

    that's what she said

    Wow, it must really kill the evening when you find out your date has the bigger toolbox.

  172. Logic and Mathematics by obliv!on · · Score: 1

    I've seen many many posts talking about "you need logic but not really mathematics"
    I'm not really sure what the confusion is about why mathematics would be separate from logic in any respect.

    Symbolic Logic is Mathematical Logic. Principia Mathematica clearly makes the case that math and logic are the same thing. As did many works around the same time and since. So how can you need logic for computer science or programming yet somehow not mathematics it just doesn't make any sense to me.

  173. Tidbit from our technology past by SilverPDA · · Score: 1

    In 1964 when I started programming there were no Computer Science degrees and programmers of the day were split evenly between math and music majors. The ability for abstract thought was the basic requirement then. It was a different world. There were no "industry standards" like "C" or "*nix", everything was unique.

    --
    Thank a veteran -- George
  174. Re:Maybe it's cart horse... by gullevek · · Score: 1

    I disagree. Math is not essential for a programmer, unless the program to be written requires math.

    In my 12 year career my math comes down to some percent calculations for some basic stats.

    --
    "Freiheit ist immer auch die Freiheit des Andersdenkenden" - Rosa Luxemburg, 1871 - 1919
  175. Re:Maybe it's cart horse... by Ihlosi · · Score: 1
    In my 12 year career my math comes down to some percent calculations for some basic stats.

    And if you don't know enough mathematics to know about the peculiarities of integer, fixed-point and floating-point arithmetics, your program will screw up some of those calculations in the most horrible way, and be somewhat less-than-accurate in others.

  176. Math and Physics. by ResidentSourcerer · · Score: 1

    At the high school level, tying math into physics would be a win.

    I had a colleague, a math major, who also taught physics at the high school I worked at.

    I asked him why he didn't teach calculus and physics in the same course? He looked at me strangely.

    "Look, velocity is the derivitive of position with respect to time. Acceleration is the derivative of velocity."

    He had never thought of it that way.

      Lots of high school physics is a lot easier with calculus.

    In general lots of kids have real problems with abstract ideas. Even in college you run into students who learn better from getting the concrete exampels first, then the theory.

    As to programming: While there is a bunch of abstract math that is likely unnecessary to most programmers, having a good sense of number is crucial. I've run into students who had no clue that four level deep nested for loops with 10 iterations each meant that the inside loop executed 10,000 times, or were completely unaware that their calculations were garbage because they overflowed large int.

    There's something to be said for a course in formal logic too.

    Programmers need math:
    They don't need the same math that physicists or engineers do.

    --
    Third Career: Tree Farmer Second Career: Computer Geek First Career: Teacher, Outdoor Instructor, Photographer.
  177. math is not that serious... by Anonymous Coward · · Score: 0

    :P

  178. Don't write yourself off here by Captain+Tripps · · Score: 1

    Please don't get the wrong impression from this thread. I've been searching for programming jobs lately and the vast majority of them are the sort of thing the blog post is talking about: databases, business rules, and user interface, where the UI is mostly web these days. Note how the posters in this thread who say higher math doesn't get much use are speaking from personal experience, and those promoting it are talking in the abstract. Yes, there are jobs where you need to know advanced stats, linear algebra and calculus, but it's really the minority of programming jobs. And even then stuff like physics simulations are likely to be filled by someone with physics expertise who can also program, rather than "pure" programmers who know calculus. (Bioinformatics may be another story.)

    My CS department in college required three semesters of calculus and two of physics. I'd done enough real-world programming by then to know it wouldn't make a better programmer. I did okay, but they certainly weren't my favorite courses. And y'know, I've never gotten paid to use any of that knowledge. I once had a discussion with a coworker about polynomial and exponential functions, but that was so he could draw a particular shape of curve in the UI. Calc and linear algebra have been essentially for learning computer graphics, and I recently got a hand-derive a function to interpolate smooth motion (calculate displacement as the integral of a quadratic velocity curve). But I haven't succeeded in getting anybody to pay me for that stuff.

    The best way to find out if you're a decent programmer is to write a lot of programs. It really does seem to be a skill that you either have or you don't, to the extent that people from non-technical backgrounds will wind up falling into programming positions. I know a pretty good developer whose degree is in theater, and great one who dropped out of a biology PhD program. (Though the latter guy may have decent math skills, I dunno.)

    So please don't discount a CS degree if that's what you really want. They may have some tough math requirements, but CS curricula are not very in touch with the real world. Even most academic computer science is discrete math, which is quite a bit different than calculus and may be more your sort of thing. That said, I'm not sure any of that will be useful for you if what you really want to do is system administration. (I'm not familiar with the formalities of that job market but it seems to me that the best sysadmins are self-taught, to an even greater degree than programmers.) But if you're considering a career in software development and only switching to sysadmin work because of math, you've got the wrong impression of software development.

    Go out and do some open source work if you want a sense of real world programming. And maybe consider a software engineering degree. I'm skeptical of how many software engineering programs are really in tune with reality, but at least they'd probably have less pointless math requirements.

    1. Re:Don't write yourself off here by russotto · · Score: 1

      Please don't get the wrong impression from this thread. I've been searching for programming jobs lately and the vast majority of them are the sort of thing the blog post is talking about: databases, business rules, and user interface, where the UI is mostly web these days.

      Unfortunately, those jobs are Sturgeon's 90%. It's true there's not much math is required in them, though it helps to know enough set theory to figure out why your SQL query is taking forever. The other 10% (not the whole thing, true, but a much higher percentage) is where the math is to be found. So unless you want to spend your entire career doing business programming, math is important. Computer graphics, scientific programming (e.g. simulations), signal processing - all require math.

  179. wah wah wah by Anonymous Coward · · Score: 0

    fags...

  180. DISCRETE MATH & SYMBOLIC LOGIC (abstract) by Anonymous Coward · · Score: 0

    Anyone who's taken DISCRETE MATH (specifically, induction & recursion portions of it) actually "learns that", in a real way.

    E.G. -> You learn how to build an algorithm, in mathematical terms + using multiple variables (often in substitution for other terms) for solving various problems.

    E.G.=> "Is 1n + 2n + 3n + 4n ... N ALWAYS divisible by 5?" type questions...

    These can be built into a computer algorithm, albeit in math/algebraic terms first, in essence, by using Discrete Math's INDUCTION techniques...

    No - It's NOT easy - well, getting your base/case-basis usually is, but once you have your base case/basis?

    The hard part's "proving it" via patterns tests, first, & then WHERE you build your algorithm substituting in diff. vars for terms prior to the "..." in my example above!

    That's to "generalize it" into an "engine/algorithm" in mathematical terms, first, & then? Then you can apply it to a program!

    It works!

    APK

    P.S.=> I think that DISCRETE MATH & LOGIC (Symbolic logic) are 2 of the MOST interesting courses you take in comp. sci/CSC, but also 2 of the most difficult (especially IF you've never been exposed to them before)... they teach you, imo @ least, to "think in the abstract", & far better than you would most likely, without having taken them! I also feel that those 2 courses make later HARDER Comp. Sci./CSC courses like DATASTRUCTURES (one of my favs, ever), easier to do also... apk

  181. New Rule by fishexe · · Score: 1

    No more slashdotting articles with more than three sentence fragments masquerading as full sentences, or from "writers" who don't know the basic mechanics of the language.

    --
    "I don't care about the Constitution!" --Bill O'Reilly, November 17, 2009
  182. What is truly interesting? by mini+me · · Score: 1

    In my opinion, the most fascinating aspect of computer programming is user interfaces and user interaction. While math certainly still applies, I feel that training in design and psychology would serve you better than mathematics.

  183. What irks me about Math by Anonymous Coward · · Score: 0

    I always ask whats that mean? What do I use it for? Most of the time the teacher doesn't answer.
    How the hell do you remember knoweldge, practice knowledge, if you have no idea what to use it for. Its like a stupid dog trick.

  184. Anonymous Coward by Anonymous Coward · · Score: 0

    What a Algarithm?????

  185. Re:Maybe it's cart horse... by gullevek · · Score: 1

    no scripting language has any difference in there. neither perl, ruby, php, etc has that.

    And seriously knowing the difference between int and float and bigint, etc has nothing to do with math. That is something you learn in CS classes.

    --
    "Freiheit ist immer auch die Freiheit des Andersdenkenden" - Rosa Luxemburg, 1871 - 1919
  186. Re:Maybe it's cart horse... by Ihlosi · · Score: 1
    no scripting language has any difference in there. neither perl, ruby, php, etc has that.

    I bet you can screw up adding fifty floating point numbers in any of those languages. Heck, even Excel can't do it right.

    And seriously knowing the difference between int and float and bigint, etc has nothing to do with math. That is something you learn in CS classes.

    It has everything to do with math. That's why they teach it in CS classes.