If you had asked a year ago I would have said, “it depends – but you can get away with just basic math (etc.) skills and knowing how to acquire the rest when it is needed.”

Between July and August my answer changed to “- you would be limiting yourself a lot in how skilled of a developer you can become, and the type of project you can (confidently) work on”.

What happened was within one week I found myself working on projects that I was immensely interested in, while finding my own math, logic, statistical (and so on) skills inadequate. In school I was awesome at math, but then when I got kicked out of high school I had to study on my own and I chose languages and politics over math and science simply because those were more fun to study on my own and I was a bit of a hippie (still am). When I started studying nutrition they somehow overlooked that I didn’t have math and I barely scraped it through biochemistry with the help of search engines and YouTube videos. I failed 3 times at biochemistry (failure rate was 70% so I wasn’t the only one) and when we did statistics in clinical nutrition we had programs to help us, we just had to know what to look for. Easy.

The three projects in particular made me change my mind:

Project one motion tracking application with a broken API so I had to figure out the logic and calculations to get the behavior I wanted. Also, working with vectors and on a 3D plane.

Application that generates data input as various graphs based on some suggested hypothetical formulas. User stories described in a mathematical model.

Augmented Reality project for mapping 3D object based on coordinates, interactive touch only application that might have a motion tracking counterpart. Needless to say performance is also extremely important as the hardware can be limited.

These are the type of project I *want* to work with, the type of projects that makes me stay up late at night, and to start programming in the morning even BEFORE my first cup of coffee. To be honest, there are things that scare me. Things I feel like I don’t quite know. And to be able to sleep I write them down in my notebooks (OneNote) and one by one I start acquiring those skills. Math and anything related to it has been on my list for a while, and I had pushed it down on the list by convincing myself that I didn’t really need it. Truth is, to get to work on the projects I want to work on, and to be confident in things such as performance tuning and more I have to sharpen some skills.

I’m doing testing in school right now (evening school), but first subject is object oriented programming so I don’t need to attend classes. What I’ve done is to enroll in online courses at renowned universities and so far I’ve signed up for:

Calculus one (14 weeks)

Linear and integer programming (9 weeks)

Introduction to Systematic Program Design – Part 1(10 weeks)

Introduction to logic (8 weeks)

Each course is about 5 – 10 h /week, but hopefully they will overlap. I’ve just finished the first week in the course Calculus and I have to admit it was hard. I might write some more about this, are you interested to hear about what I learn?

Let’s repeat my answer to the question:

Do I need do know math to be a developer? What about logic, statistics, and linear programming?

You can manage without, but you would be limiting yourself a lot in how skilled of a developer you can become, and the type of project you can (confidently) work on. You can drive with your feet, but that doesn’t make it a good idea (Quote by Chris Rock). My personal recommendation is to set aside time to get a greater understanding and appreciation for logic and numbers.

I think a better question would be, what kind of math do you need to know? I think it depends strongly on what you’re working on. And you need a basic set that’s the same for everyone; things like calculus and logic (look at what math classes universities offer in their computer science programs).

Personally I find it satisfying to know some deeper (mathematical) background on what I’m doing, plus it enables me sometimes to understand the problem at hand better and i am therefore able to get to a better solution.

Very intresting read Iris and I agree. Also wish I was better at numbers sometimes :/

I’ve been programming for the last 34 years and, frankly, my math skills suck, big time. So far it hasn’t been a problem and its not restricted what I do. However, with the advent of mobile development, there is way more emphasis on math skills, so I suspect I won’t get away with it for very much longer. UI’s have become massively more complex (no more label and text box interfaces) and more is expected of the developer. That said, there are some great libraries out there for those of us that struggle.

The math you’re studying is certainly worth doing, but I would also have a look at the math behind type systems. Its a lot of fun and really broadens the range of solutions you can come up with. Have a look at Haskell and http://learnyouahaskell.com to get you going.

Channing

Do you need to know Math? Sure, but the real question is, what level of Math? I’ve been a professional software developer for 17 years and I can honestly say I don’t think I’ve ever needed to use Math beyond basic Algebra. I’ve never needed Trigonometry, Calculus or anything beyond that. Now, I’ve pretty much spent my career doing business applications and web sites, which don’t generally require high-level Math. Certainly, there are types of development which do require heavy Math skills, but there are also types of development which require heavy financial or scientific skill. I’m all for education, so I certainly wouldn’t discourage anyone from expanding their knowledge. More Math knowledge is certainly a good thing and would undoubtedly open some doors, but so would additional expertise in other areas. Without a doubt, I can say I have gotten more professional use from courses I took in areas such as Psychology, Sociology and Philosophy than I have from the advanced Math courses I took. Psychology and Sociology have been helpful in dealing with people (something we all do every day), and Philosophy (my college minor) taught me skills such as logic, ethics, and critical thinking. Those have been much more useful than the Calculus courses I took. Now, if your passion lies in areas that require advanced Math, you should certainly pursue that knowledge. But, I certainly wouldn’t say advanced Math is required for most developers. Basic Algebra and logic? Yes. But, things like Calculus and Linear Algebra? No.

Spot on. Although, for myself, I have a much better time learning the math within a context (such as a programming problem) than learning “by rote” or through abstract examples.

Kudos for biting of those math courses – gonna keep you busy!

And learn binary/hex. A number of times, the programmer suddenly understood a problem when I suggested converting the numbers to hex and it made the solution obvious.

I think a question that should be asked more is the opposite question: Shouldn’t math students learn programming? Current math education is hopelessly archaic. Conrad Wolfram talks about this here: http://www.youtube.com/watch?v=gsWKyFg9IdM

Now, it’s true that not learning those subjects would limit you, but the thing is… what if you’re *not* interested in those projects? When you chose languages over math, you did it because that’s what you were more interested in. Then when those interesting math-based projects came along, you started studying those subjects because they were interesting. As far as I’m concerned, this is the *correct* approach to education. The traditional approach — spending a tight 2- to 3-year timespan cramming your head full of data that doesn’t concern you because it *might someday* — is horribly misguided. Information that isn’t actively applied tends to fade and you’d need to retrain yourself down the road anyway.

The best skill a developer can have is *the ability to learn*. You’ll always need to teach yourself, to support a new system, use a new API, a new language… If you have a passion for development, chances are you’re already very good at self-teaching. So embrace it. Learn what you want, when you want. Don’t worry too much about what courses you “need”.