(Like this article? Read more Wednesday Wisdom! No time to read? No worries! This article is also available as a podcast). You can also ask your questions to our specially trained GPT!)
Since we are doing reader questions this month, here is another one I received recently: “I wanted to ask you how to approach mathematics as someone with years in the industry across many fields. I’m currently studying math in college … but I am curious on how it would show up through a career, a few years down the line.”
Great question, and one that sits squarely in the exact same space as that of the many, many exasperated secondary school math teachers who have been confronted by students asking: “But what is all of this good for?” I myself asked a similar question of my geometry teacher back in 1983 when he had just explained how to calculate the eigenvalue of a matrix: “Ok, I get it, but what can I use this for?”
Let’s start by saying that I am terrible at math. Or at least, I think I am, because I know many people who are actually very good at math. Of the population as a whole I am maybe p90, but my family and many acquaintances are convinced that I am a math wizard. I on the other hand know the real wizards, so I am uncharacteristically modest about my math skills. That said, three decades ago, when I was buying my first cell phone, I was confronted with three different plans that had a different fixed monthly cost and per-minute call charges. Right there in the store I solved this set of equations on a piece of paper to find the break-even point and selected my plan. The sales associate was blown away by this stunning display of math prowess and I am still hoping it might have given them an inkling that their math teacher was actually on to something.
When I started studying computer science, many of my fellow students were surprised that the first year’s course load consisted of no fewer than four math classes and only two classes on programming. That mix shifted somewhat over the years, but we had solid math topics on the menu until the fourth and final year. Math was well-known to be a drop-out generator and so our math professors had come up with a cool trick to make sure that we did our homework. Every Monday morning there was a compulsory (attendance required) math lab. During the lab, the math professors were available to answer questions and to help with the previous week’s homework. In the last fifteen minutes of the lab there was a test, which was always one of the questions from the homework. The grade for the math lab counted towards the pass/fail decision for the year, so if you didn’t show up or never prepared, you could fail the entire year. Unless you were a math genius of course, which few of us were…
These efforts notwithstanding, math continued to be a drop out generator and eventually the college decided to scrap most math courses from the program. A few years after graduation I attended a reunion and I ran into my erstwhile numerical analysis professor. I asked him what he was teaching these days and it was something like “The ethics of computer science”. I professed disbelief, to which he replied along the following lines: “When you were here, (the Dutch equivalent of) AP math was compulsory to enter the program. But we found that that lowered the admission rates by a lot. So we dropped that requirement and then tried to teach the kids some math while they were here, but then we found that that lowered the graduation rates by too much, so we dropped that too. Sometimes I get a photo of a number from our department safe, hold it up to the kids and say: “Look, we used to talk about this in the past.”” (true story).
The reason for dropping math to improve graduation rates was that the industry was clamouring for people with “practical skills”, meaning that they could code Java straight out of college. Who cared that they didn’t understand how computers worked and didn’t understand the theoretical underpinnings of either algorithms or the world in general?
From this, somewhat depressing, lead-in you will probably surmise that there is not a lot of call for math in our field and that would not be entirely incorrect. There are of course subfields that are extremely math heavy, such as machine learning, AI, financial trading, and a lot of game development, but I am sad to say that in most of the work that I do and I’ve done, math does not come into play much, at least not obviously or often.
In a lot of our field, you are abstracted away from the underlying math. Look at relational databases for instance; all of the databases worth their salt use a query optimizer that is based in relational algebra and there still is a lot of interesting research into this topic. But when using relational databases on day by day basis you rarely have to involve yourself with any of that, as the work can ignore the intricate math that is going on deep down in the optimizer as you focus instead on heuristics to give the optimizer the right database model or enough indexes and hints to do the right thing.
Or maybe look at algorithms: When I did my master in computer science at Georgia Tech (through its excellent online master program), the only compulsory math I ran into was during the graduate algorithms course, that coincidentally also sported the most crying people after the first exam results came in. However, during the course of my work I rarely employ advanced algorithms. Not that they are not used at all, but to the extent that they are, they are safely hidden in libraries that I can just use. I love the discrete Fourier transform and its mathematical underpinnings in complex math but I never saw an opportunity to use it in the work that I do. Same for all the encryption related work that I do. I call working encryption libraries and the fact that I know how the RSA algorithm actually works seldom comes into play. And after this, do I really need to go into compression algorithms?
All of that said, I would still like to argue that a solid understanding of math is important to be a great software engineer. I might not build combustion engines on a daily basis, but the fact that I understand how they work makes me a better pilot. Same for math: I might not use a lot of actual math on a day-to-day basis, but my understanding of math (so much as I have any) makes me a better software engineer.
Math is not just a bag of tricks; math describes how reality hangs together on its most fundamental level. Of course most of reality is solidly hidden behind layers of abstractions that make that reality easier to work with, but reality sometimes does slip through the cracks in these layers and then it helps to understand what we are dealing with. The way the abstraction layers work is also highly determined by what the underlying math allows and so if you want to understand the layers, it helps if you have a grasp of how the math works.
One field of software engineering where math is most on the forefront is observability. This is the field of measuring numbers that indicate the performance of your systems and in the course of your observability work you measure and smurf these numbers so that you can create meaningful dashboards, reports, and alerts. Most of this is just straight-up, though very basic, math. Without a decent mathematical basis, you will find it hard to create meaningful numbers and you have no way of understanding the “rate of sums” versus “sum of rates” debate (answer: sum of rates, always, depending on how your rate operator works). Correctly aggregating a series of metrics that were potentially taken at slightly different points in time and then harmonizing them into meaningful data requires a good understanding of basic math.
Understanding math will make you a better engineer because it will allow you to express reality in meaningful numbers and then understand that reality. One of Google’s core tenets was to bring data to any major decision because without data, you are really just guessing. Obviously a lot of people eventually took that tenet too far, but the principle is sound. If you want to know which of two screen layouts is better, give half of the users one layout and the other half the other one and measure their responses. Not a lot of deep math involved, but this still scares the hell out of the people who went to a college program where the numbers were securely stored in the department safe.
Software engineering is not unique in this respect. I once helped a friend who works for a bank develop a spreadsheet that tried to determine if the difference in credit card delinquency rates from one year to another was significant or not. The mathematically inclined will recognize that answering this question requires a simple test, maybe the “two proportion z-test” (which ChatGPT tells me is the more common one) or maybe the “Chi-square test of independence” (which is my personal favorite for the job). My friend looked at me all funny and proceeded to use their department’s standard formula for this, which as far as I could determine, was mathematically speaking entirely unsound.
While we are doing anecdotes, I also have this one: Decades ago I was in a project to rationalize the datacenter setup of two Dutch banks that had just merged. Part of this project was a drive to reduce the number of expensive software licenses we were paying for. During my investigations, I came across a license for the IBM mainframe FORTRAN compiler and runtime system. Digging into this, I found exactly one use of FORTRAN in the entire bank, which was the private banking department. They had one FORTRAN program, written by a former intern, that solved an integer programming problem that was used to find an optimal mix of shares in a stock portfolio. They needed the FORTRAN compiler because the program wasn’t as amazing as it needed to be and every now and then the solution did not converge. When that happened they smurfed some magic parameters in the program, compiled it, and ran it again in the hope that it would find a solution. I was hoping that the intern who wrote the program knew what they were doing, but the people left to run it after the intern vanished certainly did not.
Fun fact: To replace this, I briefly looked into f2c :-)
So, if you are a math student looking to enter the field of computer science, what can you expect?
Well, to be honest, unless you make an effort to land a job in a math heavy field that you are specialized in, almost all of the actual crunching of numbers you will do will be in a spreadsheet and will use only the most basic of operations. Super cool that you learned how to do functional analysis or that you know how to solve a partial differential equation, but most software engineering and/or SRE work does not involve anything that complicated. Really, making a good spreadsheet of incoming traffic that finds the correlation between that traffic and the resources needed to process that traffic is usually all the math that you will need.
That said: People should study more math in college and less “Film Appreciation” because, as my dear old mother used to say: “It is nice to have a hobby.”











