When I was younger I asked myself the same question many young or inexperienced programmers ask in the form of forum posts and stack exchange questions today: “Do I have to be good at mathematics to be a ‘good’ programmer?” Recently while tipsy and bored I googled that same question after not thinking about it for almost a decade. While reading through the discussions related to the topic a pattern of answers emerged which fell into three main categories:
- It depends
It started seeming as if the ‘Yes’ and ‘No’ answers are often biased by personal opinion, and show signs of hasty response syndrome. Therefore I’m focusing more on the ‘It depends’ answer, while keeping ‘Yes’ around to prove a more general point. My slightly intoxicated mind went wild thinking about the question to a point where I decided writing about the question would make me stop obsessing over it. The question whether one needs to be good at mathematics in order to be a good programmer can be answered both philosophically and technically. I will attempt to stick to the philosophical side of things. Realizing why all this was important for me, is because a younger me would have spent more time finding reasons to produce a ‘No’ answer to the question based on immaturity and laziness.
First we must attempt to establish what qualifies as being good at mathematics. A person can be good at seeing the global concepts of a given mathematical theorem or modelling equations to fit a situation, while someone else might have a stronger leaning towards the analytical parts of math such as computation, and manipulating expressions or equations. In my opinion both cases can make a person okay at math – average. However, someone who is highly competent in both of the traits mentioned previously might be a better candidate for being considered ‘good’ at mathematics (while remembering to place the ultra-rare John Von Neumann types into their own category of excellent at math). From what I have observed throughout my college math courses so far is that people who are truly good at math do not make up the majority. This complicates the answer more, and the “It depends” answer’s validity strengthens.
During the ‘Hello World’, and throwing the name C++ around without knowing what it really means phase of a becoming a programmer one usually starts with tutorials to get the basics under their belt. The examples usually include mathematics. Assuming a person who has decided to program will most likely naturally think deeper into things, and begin to wonder if mathematics plays a greater role in being able to do something useful through programming.
Sitting and programming for the sake of programming doesn’t serve much of a purpose beyond learning the syntax and mechanisms of a given programming language. Ultimately programming is about solving problems, and creating in the digital realm. What do you want to solve or create through programming computers? If you want to write web pages or scripts to automate tasks Mathematics won’t play a big role. However, if your interests are in graphics programming, building business and scientific applications Mathematics will play a greater role in the development cycle.
Once you have an objective in a specific field the problem lies more in learning the mathematics related to a given field. Coupling the required math, with a strong foundation in algorithmic thinking can produce great software. So it really depends on what you want to accomplish with programming. The previous statement was not a dismissal of learning mathematics in any way. One thing I have noticed while learning to program is that asking yourself if you should learn something new is not a valid question. Software development is rooted in continued learning of new material.
Now let us think about the ‘Yes’ answer to the question whether one needs to be a good mathematician to be a good programmer. For anyone who has not, I suggest looking into the history of the digital computer, and the people behind the evolution of these machines. Digital computing and programming have deep roots in mathematics. Studying mathematics helps develop problem solving skills and analytical thinking. Yes, being good at mathematics is a key ingredient at being a good programmer if you want to solve complex problems in various domains which require mathematics. I try to never set limits, and forge ahead when things get tough.