The Case for the Liberal Arts Programmer
Are math and science required competencies for programming? Based on my personal experience: definitely, maybe, not.
I have a few strange viewpoints. Like, I really don’t think we should be spending a lot of time teaching kids multiplication tables. When I share this opinion with people, it almost always invokes a vigorous and sometimes emotional defense of the practice, usually centered around the need to have this information as a building block for bigger things.
While I do get that, it seems to me that covering the basics of what multiplication is, along with going over some simple examples of it maybe, would be sufficient. I don’t really think we need to spend the one or two years or whatever it is in school slavishly burning this giant
const int table of numbers into everyone in the world’s heads, regardless of what they end up doing in life.
I mean, what is 6 x 9 anyway? 56? 54? Nobody really knows for sure, after 3rd grade. Hey Google, what is 6 times 9? 54. See how easy that was. (do not email me your clever trick for memorizing the 9’s table. While I appreciate the mental shift from rote memorization to algorithmic thinking, I still think its a waste of time - in the same sad bucket as long division and cursive writing)
And my argument that there are approximately 54 different ways at my immediate disposal to determine what 6x9 is (that do not involve me memorizing it) also provokes strong objections. “What if you don’t have a calculator around?” they say.
Really? When will that happen, exactly? If we are talking about the nuclear winter, I think my problems will be in other areas besides 6x9, unless of course I have to gather 6 rounds of ammo for me and each of my 8 bunker-mates, and I need to figure out how many bullets that is.
To me, this is a lot like the fact that I sometimes eat chicken nuggets, but I really have no clue how to kill a live chicken, and get the nuggets out of it. Again unless we are talking about the apocalypse, I feel I can safely rely on the fact society has advanced to the point where I do not need to possess this knowledge.
Someone somewhere still has to know it though, because the world does want chicken nuggets. It just doesn’t have to be me that knows, which frees me to know other things. What would we have kids learn instead of multiplication tables? I can’t say for sure. I’m obviously not a math guy. But maybe like more abstract or general stuff, like set theory, visual stuff like representing relationships on a graph, or something that develops problem-solving skills. Things that teach thinking and things that may be translatable in life to other uses, maybe, you tell me.
So the debate about memorizing your times tables would go on along those lines, with my opinion being it is optional knowledge that one can acquire as needed, and my opponents arguing it is a fundamental building-block that prepares kids for higher level things.
But the more animated debates happened when I would try a different line of attack. This is the idea that a big reason why people object to getting rid of memorizing your times tables as a school requirement is just tradition. Everyone has a shared experience of being in school and learning the multiplication facts, it’s the way things have always been done.
I would point out that history is replete with practices that were sacred, but later abandoned. The one I liked to go with was the long-time requirement from ivy league schools to have an exam in Latin as part of the entrance requirements. This practice went on until the 1950’s and was probably only marginally useful even to start with, as a measure of how well studied one was. It persisted long beyond the point of being relevant — owing largely, I claimed, due to a sense of tradition and nostalgia among the people in charge, who themselves had to endure it.
We see similar “essential” requirements falling by the wayside all the time, like the SAT requirement for college application, or even the requirement of having a college degree in order to program professionally (more on that in a moment). I feel there is a certain amount of emotional inertia, if you will, in society that keeps us tied to things long after they stop being a necessity.
So you are probably wondering at this point what is going on with this vendetta against multiplication you seem to have, Mad Ned? Did something happen as a child? Show me on this times table where the bad math teacher hurt you.
Honestly, yes. If we really want to go back to the root of it, I came from a background where no one in the family really knew anything about math. But my mom would teach me how to read pretty early, so when I got to grade school, I was put in a group with the “gifted” students, and we had all sorts of side enrichment activities we could go to instead of regular class. They figured if I was good at reading I must be super smart and I probably could skip the math stuff too about multiplying. Which was definitely not the case, and I did end up behind in math then for a while around 3rd grade or so.
Eventually some teacher gave me a pop quiz, like “what’s 6x9?” And when I came up with 56, they pulled me out of “gifted” class and back into “regular” class, and I caught up on the whole multiplying thing. (Incidentally - this scheme of how kids were sorted out and extra attention paid to the “smarter” ones was pretty backward in my opinion, but I know a lot has changed, we are talking about the early 1970s here.)
This really was not the big trauma for me though. That would come later, in college. The net effect of my upbringing and early grade school experiences was, I really didn’t like math that much. So a few years down the road when there was a choice of going straight into an algebra course, or opting to take an easier, pre-algebra course, I took the latter. No one really brought up the consequences of this decision at the time, which was that it set me on a track that made it pretty difficult to get into college. When I took the PSAT, I had not yet taken geometry, and scored bad on many math questions. Same goes for the SAT, where I had yet to take any pre-calculus kind of course, and my other college-bound friends had.
Maybe it all owes back to me not spending enough time memorizing my times tables, who knows. Or maybe, math education spent too much time on pushing kids through the process, without explaining enough about why, and I lost my motivation for it.
But whatever the case, I did go to college, engineering school in fact, and hold a BS in Computer Engineering from Boston University. They let me in, in spite of my so-so math test scores and grades, and I don’t really know why. But maybe because my other grades and scores in things like English and History were pretty good, and also to be honest BU’s admission standards in the 80s were a lot less selective than they are today.
But it continued to be a struggle, academically. While I would pull A’s in courses actually directly related to computers, there were many math-based mandatory classes I did poorly in. Calculus, Multivariate Calculus, Differential Equations, Fourier Series, Vector Mechanics and Physics I and II, were all requirements for my BSCE degree, and that might not even be the full list. I had to repeat some of these, and was happy to get a C in some of them. It pretty much wrecked my GPA, and that in turn made it tough to get a job. (Fate again would intervene, which I’ve covered in a different post.) Personally though, I would have much rather spent all that time and money taking actual computer courses.
But everyone knows Engineering school involves math, though right? Why would you go into it if you were bad at it? It’s a good question. The honest answer is, because I had no idea. There are no engineers or math or computer people in my family, so no one there to advise me on how to pursue what I loved, which was anything to do with computers. A teacher in high school suggested Computer Engineering ( a new degree at the time), since it was kind of a 50/50 split of software and hardware. I just knew that I loved computers in general, and I could not make up my mind what area interested me more.
“Computer Engineering” sounded as good as anything, and so I went that way, with little info on what an engineer even was. Absolutely no clue of the math that would be involved in getting that degree, and really I think that ignorance was maybe the best thing. Because had I known what was in store, I certainly would have been dissuaded from pursuing any kind of engineering degree, and maybe even from going into computers at all.
The reason I am comfortable with confessing my math failings here with everyone is this: in the end, none of it mattered. I can look back now on an almost 40-year engineering career of designing computer hardware and software, and say with confidence that at no time did my inability to solve a quadratic equation or double integrals stop me from doing the things I wanted to do, or was expected to do. Once I left school, never did I crack any of the calculus books (I was forced to own) to solve any kind of computer problem I had over my entire, decades-long career — hardware or software.
And when I ask my fellow better-at-math engineers if they ever use these required courses from college in their day-to-day work, they almost universally say no as well. There have been a few, very infrequent occasions when a little bit of complex math knowledge was needed in my job. The most recent was, I had to design a prototype of a spectrum analyzer that displayed a time-based waveform in the frequency domain. There is some involved, Fourier-series math going on with this, but fortunately for me, also some pretty good libraries to do it.
Someone once again had made the chicken nuggets for me, which was great because it freed me up to worry about other things on my plate, like debugging protocol problems with the server, and designing a GUI interface for the prototype. Now, I still needed at least a basic understanding of what a Fourier transform did to use this library, but not to the point of justifying spending a whole semester studying them.
The guy who designed that DFT library certainly needed to have taken that course, to be sure. But I feel the vast majority of programming tasks out there are more like mine, involving no more than basic math, with perhaps just a general understanding of some more advanced concepts.
And it all leaves me with a big question in my head: Why are we forcing these heavy math requirements on our aspiring computer technology students?
Finally, we get to the real purpose of this post. You thought it was just about getting rid of multiplication and stuff, but that was just a pretense, to get you thinking about what is required for a good education in computers, what is optional, and what is just forced upon us due to tradition.
I have a coworker friend, George, a software engineer who has also spent time as an assistant professor in a midwestern college. He is an all-around great guy, has a PhD in mathematics, and is also an avid foodie, like me. The basis of our relationship is mostly about going to weird places to eat, when we find ourselves out in California together. This happens more often than you might think, because our company and customers tend to be in California.
George is Vegan and so he’d convince me to briefly forego my chicken-nugget-eating ways, and we’d end up in places like Loving Hut, which is a chain purportedly owned by a religious cult and run by a woman who is referred to as “The Supreme Master”. The food was fantastic, although you do have to dine while “Supreme Master Television” plays in the background.
We’d also go to sketchier places, like a Dosa place in Mountainview in a strip mall where the cops were raiding the business next door as we dined. Super tasty $4 Dosas though, I think our combined dinner bill that night came to like $18 or something.
And we would end up having all sorts of interesting discussions over dinner. I eventually brought up my feelings on whether math should be a requirement for software engineering. I would claim that advanced mathematics in general seems more needed for specific application spaces in computing, and not as a general requirement.
For instance I’d argue, pretty sure if I worked for SpaceX, I would be expected to be well grounded in all kinds of complex math, it is literally rocket science after all. But something like bioinformatics, from what I had seen, was a growing field looking for computer programmers who had PhDs in biology, and could not care less about advanced math degree candidates. So whether or not complex math was needed was heavily dependent on the application space of whatever computing field one was interested in.
This was my case for why we should not be making attending advanced math courses and having good math test scores a requirement for things like computer engineering and computer science, but instead make them electives. George’s take on it was this. He had interviewed a lot of people in his job as a manager, and found that people who were good at math made good programmers and engineers. They thought logically, and also if good at math could solve problems and were generally smart people.
In general I agreed with George on this. There was no debate that math people generally make good engineers — but to me the problem with the thinking was, this was all just correlation, not causation.
In other words, being ‘smart’ by some definition, was a requirement for being good at math, and also a requirement for being good at programming. Being good in both math and programming were correlated, since often this ‘smart’ person could do both, but one was not the cause of the other. And it left open the possibility that someone could be good at one, but not the other. (I am not sure I got this idea effectively across in our discussion that night, due to what the French call L'esprit d'escalier.)
George and I finished our dinner though, and we managed not to get shot while leaving the dosa place. We agreed to disagree on this matter, but my feelings on it remain unchanged, to this day.
I don’t run into many people with a similar experience to mine. It feels like a bit of a fluke that a guy bad at math would slip through multiple levels of screening designed to keep him out, become an engineer, and manage to have a decent job and career in computers. But I often wonder, who else is being filtered out in this process?
I gave a neighbor kid who went to school with my daughter a ride home from band practice one night, and I asked him what he wanted to do after high school. He said he was interested in computers, but thought there was too much math required so he didn’t know, because he wasn’t that good at math. I told him of my troubles with math and that it was something that could be overcome, but in the end, he chose a different field. Civil engineering I think, which still comes with some math requirements, actually. (I would not be surprised if in practice, there is more everyday use of math in his job than mine.)
The perception (and to some practical degree, reality) that getting an education in computers requires you to do a lot of math was a known thing for my neighbor, and enough to discourage him from even trying. Perhaps he’s found is best destiny in Civil engineering. Not like its a bad career, and I really never caught up with him after to see how he did. But perhaps, the world missed out on a good programmer, because the system filtered him out before he got a chance to even try it.
I wonder how many people who had a passion for some other field, like language, art, history, religion, or cultural studies could have brought their unique perspective to the world of computers and programming, if things were more open-ended in the world of computer technology education. I’m not just talking about relaxing math requirements for computer science and engineering degrees, I’m also talking about actively attracting people who would identify as right-brained into the world of programming and hardware design.
And it seems like there is a need for fresh ideas and thoughts, as we enter the new and uncharted waters of machine learning, artificial intelligence, quantum computing, human thought interfaces, and so on. These technologies have a need for people with strong math and science backgrounds for sure. But they are also gray in a lot of ways. Ethically, sometimes. Or even deterministically, if we are talking about quantum computing. There is space for programmers who look at the world in a perhaps less scientific, more humanistic way. There is space for artists, and musicians, who want to not just use computer hardware and software in their craft, but also create it. There is space for spiritual people here, to help us not just build new things, but to find meaning in it.
I did not devote any time here to the fact that the bypassing formal education requirements, including mathematics, is already happening in the computer industry. More and more companies have changed their hiring process to include candidates without a formal higher education degree, but who can demonstrate value - through a portfolio of work, or via online coding testing: either by the employer or through a growing number of online coding test sites. Also, low-code and no-code platforms are already opening the door to people without formal computer science and engineering backgrounds.
This is a relevant but different topic, and a big one. Probably worth a separate discussion. My take on it relative to the math requirements question is twofold: First, if colleges and universities are struggling to be relevant now in the computer industry, they should really be looking at being more inclusive to attract more people to their computer science and engineering programs beyond the standard math-and-science focused candidates, so this idea is a win.
And second - the fact that people can now get jobs programming without going to college is great, but it doesn’t do enough to attract these right-brained sorts of people in general to the field. There is still the issue for instance of primary education being structured in a way that narrowly defines who will be able or want to continue in the field of computers. Our local primary school recently changed its STEM program (science, technology, engineering, math), to STEAM - where (A)rt is incorporated. But its really still a rarity for schools to be inclusive of the arts when talking and teaching about technology.
The thinking and language we use as parents also tends to sort kids into specific “types”, with computers and math/science interests being lumped together, but non-math interests such as language or art being excluded from association with something like programming. It becomes kind of a self-selecting process, with only one of these “types” choosing to go forward with an education and career involving computers.
Is the making of new software and hardware an art, or a science? I would say it is both, which means we should be tapping talent across the spectrum. Time to open things up, expand the talent pool, use our full human potential. If just 6 of you tell your 9 non-math-loving friends to consider learning to program or to design hardware, that could be 54 new and unique perspectives brought into our field! Or is it 56?
So was it all crazy talk? (I am under contract to produce a certain percentage of Memos that are Mad.) Let’s hear your thoughts:
Schoolhouse Rock! (a.k.a. where I really learned to multiply)
Next Time: In the 1970’s, no one had a computer in their house yet. But I think it’s safe to say we were doing the prep work for them. Check out my list of chip-free 70’s consumer tech in: When we all pretended we had computers.
If I subscribe to the Mad Ned Memo, won’t I get spam? No! Just strange, nerdy tales and discussions of computer technology, past present and future - delivered to your inbox regularly. (Average frequency, about once or twice a week.) It’s cost-free and ad-free, and you can unsubscribe any time.
The Mad Ned Memo takes subscriber privacy seriously, and does not share email addresses or other information with third parties. For more details,
I completely agree with your position. I've argued for the same, for a long time. Personally, I did graduate from a technical university, I did learn all the hard math. Differential equations, FFT, FE, vector fields, tensors, algebra, everything. Basically the first two years of university were 90% math.
I passed those exams. I'm not making an argument about something I don't understand. I have even used some of those knowledge here or there in my work. But often enough I need to look it up anyway.
It seemed to me completely misplaced in the first two years of university: Only a small subset of programmers will ever need this rather specific set of math. Then in year 3 or 4, you decide on your focus direction, and depending on which one you choose, some or all parts of your math basics don't matter.
If you do databases, you need set theory. If you do networks or crypto, you need group theory. If you do simulation, you need analysis. If you do graphics, you need linear algebra.
So it would make much more sense to put the difficult math courses into those focus courses, and not annoy everybody with them. Right now we have a ton of programmers who are good at math, and terrible at writing text, terrible at communication, even of technical concepts. There's too much knowledge for everybody to learn everything, so it makes sense we don't waste so much time on "fundamentals", if those fundamentals aren't actually of direct use.
Ever since I got bit by the bug that made me do computery things, I have had people say to me "Oh, you must be really good at math, then!" And then I'd laugh, they'd get confused, and I'd have to explain that I took Algebra twice in High School. I did worse the second time.
Mind you, I'm not a programmer. I can write medium sized bash scripts if I need to, and I can do stuff with Arduino if I have to. But I'm not somebody you'd associate with programming. I am an expert troubleshooter however. And that has zero to do with math.
On the other hand I also did not go to college, and I have had multiple people who did tell me that I dodged a bullet.