How do you apply math to CS when so many software engineers say that there is not that much math in coding?

by Justin Skycak on

Write code that makes complicated decisions, often involving some kind of inference.

A Math Academy student recently asked me an interesting question: how do you apply math to CS, when so many people who work as software engineers tell you that “there is not that much math in coding”?

The thing is, that cliche is more correct than not. The vast majority of people who code for a living are not using much math. The jobs just don’t require it, and it’s often not that helpful.

But… if you start thinking “what is a cool CS thing, okay what is another CS thing even cooler than that,” and so on, then you’re probably going to end up at the idea of using CS to automatically make intelligent decisions within some domain.

And when you’re writing code that makes complicated decisions, often involving some kind of inference… that’s typically where the math comes in.

However, in practice, this is a small subset of all CS jobs out there – even at prestigious companies. It’s quite possible to have math skills, and get a software job at a prestigious company, and not get the chance to use those math skills at all.

So, what that means is you really have to treat your job search as a search problem. It’s not just any software engineering job you want. It’s specifically a job solving a mathematically complicated problem.

You always want to be thinking one step ahead, like “if I get a job here, what kinds of projects will I be working on? How might math get involved?”

Those jobs tend to be more competitive because they’re more cool and less common. Supply & demand.

So it’s possible that you might need to settle for a less mathy job initially (but this can still be productive if you’re working in your particular domain of interest because, well, you can’t really build an intelligent system in a domain when you yourself have no intelligence in that domain).

But if you want to apply math in CS, that’s the general direction you want to always be pushing towards: writing code that makes complicated decisions, often involving some kind of inference.