Those who are not in the software engineering industry let themselves think software engineers are good at Math. Most likely this is because you hear the word engineer in the title, and almost instantly your brain relates to studying Physics and/or advanced Mathematics. As a professional software developer, software engineer, or programmer, let me answer your question: Do you need to be good at math to be a software engineer?
No, you don’t have to be good at Math. In most cases, having basic knowledge of Math is enough. Therefore, you don’t need to worry about excelling in this topic. However, based on the kind of projects you work on, Math can be useful for you to solve complex problems.
It is interesting to know many developers with a background in Math tend to learn programming skills quickly. In fact, I was one of those who enjoyed solving Math problems when I was in high school and college. Even though I graduated with a bachelor’s degree in Information Systems and Technology, where I also got to take programming classes, Math was not needed to start getting hands-on programming.
Why Do You Not Need To Know Math As Much As You Think?
Software Engineers mainly spend time developing solutions in the form of code. Although oftentimes you come up with a solution to get the right answer for Math problems, the kinds of problems are different. Software Development relies on common sense and also the logic behind the software, rather than facts. Let me explain.
A group of software engineers is contracted to develop an entire web application, and the customer wants them to have a create and a delete button to add or delete users in the app. If we decide to think about the user interface of the application and coloring schemes in the application, you know you would not use a green background inside the delete button and a red background inside the create button. Did we use common sense to make this decision? Yes.
However, if the customer for some strange scenario decided he wanted to get a green background color in the delete button and red background in the create button (things like this could actually happen by the way) because the red color is the predominant color throughout the whole website, then background colors are set based on the customer’s requirements no matter whether you agree or not as a software developer. In this case, we wrote in code the logic to translate the requirements.
Most software engineers work common web development problems which can be:
- CRUD, or in other words to Create, Read, Update, or Delete records, such as users and user access types.
- Downloading or Uploading Files
- Improve App’s performance
- Troubleshoot website problems
- Monitor website traffic
- Ensure the app is user friendly and looks good
As you start looking through that list, you will notice there’s little to no Math involved. For example, some applications set size limits when uploading files, let’s say the limit is 100MB. You would think you would need to calculate the size of the file a user is uploading, right? In reality, all that information is already part of the file and the only thing that is needed is to access the file’s information. The only thing closer to numbers is to validate that the file is less than or equal to 100MB.
Another reason software engineers don’t need math is that a big chunk of the time spent is in writing code. To write code, you need to know a programming language, and learning a programming language is about understanding and using the language’s syntax to process any logic defined. It is like learning a foreign language. Let’s say you are learning Spanish. Therefore, you need to make sure you learn words in Spanish and put them in a way that makes sense for Spanish native speakers to understand what you are trying to talk about.
Does Knowing Math Help?
I previously mentioned I was particularly interested in Math when I was in my high school and college years. Whenever there were complex Math problems, it required a solution I could come up with by understanding first a high level of abstraction.
What do you mean by high level of abstraction? A high level of abstraction allows you to have an overall understanding of a problem. For example, what is the high level of abstraction for the problem of constantly having delays at an airport? Let’s bring this hypothesis:
An airplane arrives at the airport. The passengers arriving at their destination step out of the aircraft. Then, there is a general maintenance check of the aircraft. If the aircraft is in good condition, the airport workers will start fueling the airplane. If the left-wing has torn, maintenance workers will work to fix the left-wing. If they fix it on time prior to the next flight, there are no delays. However, oftentimes the aircraft needs to go through an additional check prior to giving the thumbs up to allow onboarding.
Let’s keep this hypothesis for now and see the high level of abstraction simplified:
Airplane -> Airport -> Maintenance -> OnBoarding -> Take Off
In this case, we are going to say the root cause of the delay problem is during the “Maintenance”. Although this sounds weird, maintenance doesn’t mean a problem, it is where the technicians found the left-wing issue. With this information, I am able to start working on a plan of action to prevent delays on future flights.
Understanding the high level of abstraction, which trained me while I was challenged to find solutions to Math problems, has helped to develop solutions at the software level. In the end, software engineering is all about abstraction when you start learning about it.
What Programming Niches Use Require Advanced Math?
There are physicians who specialize in family medicine, others in internal medicine, and accountants can specialize in corporate finances, others in internal audit. Even athletes can have specializations, some soccer players excel at scoring free-kick goals, others are masters in scoring penalty-kicks, and software engineers can specialize too.
There are different niches in software development such as:
- Mobile Development
- Front-End Development
- Back-End Development
- Android Development
- iOS Development
Just to name a few. However, there are some niches requiring software engineers to have either a good to advanced knowledge of Math such as:
- Machine Learning or ML
- Artificial Intelligence or AI
- Modeling Software
- Gaming Industry
- Virtual Reality
- Autonomous Driving
Depending on the niches a software engineer is interested in pursuing, they will require learning advanced math topics such as:
- Linear Algebra
- Abstract Algebra
- Graph Theory
- Discrete Mathematics
- Numerical Analysis
- Real Analysis
Problem-solving Skills Are More Important than Math Even For Jobs Requiring Advanced Math Skills
Even if you were a math expert or even if you decide to specialize in a programming niche requiring an advanced level of Math, in the end, it will always come down to your problem-solving skills. Software developers constantly face uncertainty. What you worked on one day might be completely different from what you are going to work on the next day.
The software that worked years ago, might need new changes to adjust to new businesses or users. The problems that were solved yesterday, are not the same as today. Therefore, software engineers often work on coming up with the best possible solution within the shortest amount of time possible.
Yes, it is possible you end up using some serious linear algebra calculations in your code for niches requiring advanced math skills. However, the use of these advanced skills is the result of a previous process understanding a problem at a high level of abstraction to subsequently create solutions that best suit the case.
With that being said, I’m not encouraging you to throw away your math books or stop learning math. Math is used on a daily basis for multiple activities in which we don’t realize we are using math, even for simple or advanced calculations in software development. However, in software engineering, problem-solving skills are by far more important than advanced math.