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

18 of 609 comments (clear)

  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 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!
    2. 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
    3. 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
    4. 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.
    5. 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.

    6. 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)
    7. 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.
    8. 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
  2. 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: 5, Funny

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

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

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

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

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

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