Why you don’t need maths to become a programmer

Programmer, also known as software developer or software engineer, is an in-demand profession that usually pays well. Another good thing about it is that, unlike it is in other skilled professions, you don’t require a formal qualification to become a software developer. Most employers are interested in your skills and not your certificates.

Because of these factors, it is realistic to become a professional software developer purely by learning how to code from the comfort of your home. You don’t need to attend any educational institutions and pay a lot of money for specialist programming courses. If you want to learn how to code, all you need is a computer and a reliable internet connection.

Despite a very low barrier to entry, many people, who are totally capable of becoming successful programmers, choose not to even try learning how to code. And this is primarily because there is one misconception about programming that prevents them from starting – a false believe that, in order to be a programmer, you need to be good at maths.

There are many intelligent people out there who don’t like maths. Perhaps they had a bad maths teacher at school. Or maybe they just find all the maths formulae boring. Regardless of why they dislike maths, the thought that they need to go through the pain of learning it in order to become software developers is what prevents them from even trying to start learning programming.

The good news is that the believe that you need to be good at maths to become a professional programmer is nothing more than a popular misconception. I say this as a senior full stack software developer who has worked in several different industries and have built several different application types. In this article, I will explain why you don’t really need maths to become a software developer.

What skills you actually need for programming

By many, software is seen as something that is primarily being used for calculations. However, although every type of software is performing calculations to some degree, calculations is not what software is primarily written for.

The primary role of software is outlining operational logic. And logic has very little to do with maths in its traditional sense  This is why, in order to become a professional programmer, you don’t necessarily need to possess above-average maths skills, but you definitely need a solid ability to think logically.

To prove my point, I will show you an example of a simple console application written in C#. All of the concepts demonstrated here, however, can be applied in any other programming language.

The entire application code can be found below:

using System;
using System.Collections.Generic;

namespace AppLogicDemo
{
    class Program
    {
        private static Dictionary<string, int> inputtedTexts = new Dictionary<string, int>();

        static void Main()
        {
            var exit = false;

            while (!exit)
            {

                Console.WriteLine("Type any random text.");
                Console.WriteLine("Type 'exit' to stop the program.");

                var input = Console.ReadLine();

                if (input == "exit")
                {
                    exit = true;
                }
                else if (inputtedTexts.ContainsKey(input))
                {
                    inputtedTexts[input]++;
                    Console.WriteLine($"The input of '{input}' has been entered {inputtedTexts[input]} times.");                
                }
                else
                {
                    Console.WriteLine($"The input of '{input}' has been entered for the first time.");
                    inputtedTexts[input] = 1;
                }
            }
        }
    }
}

The application asks you for some inputs and then, based on what you have provided, it executes some code associated with one of the conditions defined by “if-else” statements. And the application keeps asking you for inputs indefinitely by executing a continuous “while” loop until you explicitly tell it to stop. The combination of all of the inputs, outputs the “while” loop and “if-else” statements is known as application logic.

Please note that, in this example, we have not used any maths at all. We do increment the counter by one, but this is a calculation that a two year old can do, so it’s not something that requires any advanced maths knowledge.

Yes, it is true that the runtime itself performs some calculations while the application executes its logic, but these calculations didn’t require any maths knowledge from us. We didn’t write anything that is even remotely similar to any advanced maths operation.

Although this example represents an application with a very simple logic, it’s a fully functioning application nonetheless. The code for most real life applications uses very similar syntactic structures, but has them arranged in a much more complex manner.

Just like in our example, unless you are working in a niche field that requires advanced maths calculations to be performed by the applications you are writing, the most of code you will encounter will have either no maths calculations at all or only the most basic calculations that a primary school student can understand. If, on some rare occasion, you will be required to use something equivalent to high school level maths, pretty much any language has an in-built system library that abstracts these maths formulae to basic methods with simple input parameters. System.Math is an example of such sub-library represented by a single class in .NET ecosystem, which includes such languages as C#, VB.NET and F#.

On the other hand, the ability to think logically is a must. However,  you don’t need an extraordinary ability to think logically. After all, logical thinking is like a muscle. The more you use it, the better you become at it. And continuous programming practice is probably enough in itself to develop your ability to think logically to an adequate level.

However, if you can’t correctly answer even the most basic logic questions in an IQ test, then I have a bad news for you. In this case, you should probably choose some other profession than programming.

Some niche programming fields do require advanced maths

Even though advanced maths skills are not required for you to become a professional software developer, they are absolutely required to be a software developer in certain programming niches. The good news is that the vast majority of programming jobs are outside those niches. On the other hand, you must be aware that these fields exist.

Machine learning is one of such niches. Calculus, statistics and many different advanced maths formulae form the backbone of machine learning.

For example, one of the most popular way to execute machine learning logic is to have a several layers of interconnected nodes and then repeatedly execute calculus-based backpropagation algorithm until numerical values associated with nodes and their connections adjust themselves in such a way that, for a given set of inputs, the system starts to reliably produce outputs that are close enough to the expected outputs from the training data.

Backpropagation is only one of many possible ways of performing machine learning. It just happens to be one of the most popular one, because the setup containing interconnected nodes with dynamically adjustable numeric values closely mimics how neurological pathways get established in an animal brain. This is why such a setup is known as neural network.

But regardless of what method of machine learning you would choose to use, you will absolutely have to gain a good understanding of several advanced maths formulae. There is no getting away from it.

Another noteworthy programming niche where a good maths knowledge would be required is writing engines for any performance-intensive software, whether it’s games or modelling software.

The goal of such software types is to be able to use as little hardware resources as possible while producing as much in terms of output as possible. And in order to be able to achieve this, you must be able to write well-optimized algorithms and know specialized formulae. Plus, in such situations, you will have to work with low-level programming languages, such as C++ and C. And when you write code intended for low-level components, such as CPU and GPU, your standard maths libraries would add unwanted overhead, so they won’t be available.

Another reason why you would need to be good at maths if you want to work on gaming or modelling engines is because the logic itself would contain a lot of complex calculations. Imagine an average 3D shooter. Every time you move your character or aim your gun, your position and the direction of your aim need to be recalculated. And the same thing needs to happen to every movable object in your environment. And this happens for every frame.

And there is also gaming physics. Physics in games is nothing more than a set of many real or slightly modified formulae from Newtonian physics that are made to inter-operate with each other. This means that you won’t be able to develop gaming physics until you gain a good intuitive understanding of these formulae.

With modelling software, you will need to learn formulae that are specific to the things the software is designed to model. For example, if you are writing a software that calculates the risk of flooding, you will have to get familiar with a whole range of hydrological formulae. If your software will be modelling a flow of traffic, then you will need to learn formulae that are specific to this area. The list goes on.

There are several other programming areas where knowledge of maths would be essential. However, I have described the most popular ones. But, as you have probably noticed, there are countless of widespread application types that haven’t been mentioned.

And this is precisely because most of application types don’t require advanced maths knowledge. So, even if you have decided that machine learning and developing gaming engines is not for you, you can still write desktop applications, mobile applications, cloud applications, web applications, internet of things (IoT) applications and many more application types.

You can even still be involved in machine learning or game development, but in these cases, your role would probably be restricted to writing high-level components, such as user interfaces. The key point is that, even if you aren’t so good with maths, you will still have plenty of options as a software developer.

Even low-level computing hardware is based on logic rather than maths

You may be surprised, but even at the lowest level, computers are not using anything that even remotely resembles maths. This is true even when they are performing numeric calculations. What they are actually using is logic.
At the most fundamental level, a CPU, the brains of a computer, uses a complex combination of logical gates of various types. There are AND gates, there are OR gates, there are NOT gates and so on. The goal of each gate is to decide whether to produce 1 or 0 based on the available outputs. For example, AND gate will take two bits of input and will produce either 1 if both of them are 1 or 0 if at least one of them is 0. OR gate, on the other hand, will produce 1 if at least one of the inputs is 1.

What we see as numeric calculations is nothing more than several logical gates working together. When a maths operations are performed at a low level, the numbers that the operation is performed on are split into combinations of bits, which are then processed by a series of logical gates. The exact combination of logical gates is chosen based on the maths operation that is being used.

I won’t describe how this logic works in details, as this is beyond the scope of this article. If you want to find out more, there is a great article that you can find here. However, this overview is sufficient to demonstrate that it’s logic rather than maths that forms the fundamental principle behind computers.

Even the binary system itself highlights this principle quite well. You can think of 1 and 0, the only possible binary values, as being equivalent to logical values of “true” and “false”.

Wrapping up

So, even though having a good maths skills will give you an advantage in software development career and in life in general, you absolutely don’t have to be good at maths in order to start a software development career.
Of course, even when you are applying for some job where you wouldn’t have to know maths, there is still a tiny chance that you may be asked some advanced maths questions during the selection process. But this would be purely because of HR bureaucracy rather than the requirements of the job itself. But you should be prepared that you would encounter at least a couple of jobs with irrational hiring practices dictated by people in HR who are completely clueless of what the actual job consists of. Fortunately, there are also more than enough organizations out there with very pragmatic selection processes.

In any case, I would be interested to know your opinion. What do you think about needing maths as a software developer? Are you convinced by my arguments, or do you still have some doubts?

Feel free to let me and the others know what you think in the comments below.

Leave a Reply

Your email address will not be published. Required fields are marked *