Ask this question online, and you’ll get a deluge of responses from people vehemently defending their point of view. Here’s the thing, though: We can understand why this question generates so much controversy.
The level of math required for software engineering varies depending on the programming language and the specific project. Some projects require extensive math knowledge, while others require none at all. Therefore, it is possible to answer this question only for a particular specialization.
So let’s look into whether a software engineer needs mathematical knowledge. And if so, what kind?
What Do Software Engineers Do?
Software engineers are vital to the development of all types of software, from small business applications to large enterprise networks. They work with a wide variety of technologies, languages, and platforms to create new products or customize existing ones. Even this page you are reading exists thanks to software engineers.
Do They Use Math in Their Daily Work?
To many of those who don't understand programming, it seems that writing code is the same as solving mathematical problems, and that all programmers are necessarily mathematicians. In fact, writing code is more like writing in a foreign language. It has its own system and strict rules. But there is no math in it at all.
Programming can also be compared to composing music. Just as musicians use notes, chords, and rhythms to create a melody, programmers use code syntax, variables, and functions to build software. Similar to how different musical elements combine to produce harmonious compositions, programmers combine code elements to create functional and cohesive software applications.
The essence of programming lies in logical thinking, problem-solving skills, and the ability to translate real-world scenarios into efficient code. With the abundance of libraries, frameworks, and tools available today, programmers can leverage pre-built functions and modules that handle complex mathematical calculations. That means software engineers really just need to know programming languages and be able to work with different libraries and frameworks. Also, they should have soft skills — teamwork, the ability to seek answers, flexibility, and time management.
But When Math Is Needed
Mathematics may not be directly applicable to your day-to-day work, but some of its disciplines can be useful for advancing your career and developing new skills. It's not necessary to take an entire course in higher mathematics at university to do this. In fact, there are three basic areas worth paying attention to: arithmetic, logic, and combinatorics.
Arithmetic is a branch of mathematics that deals with the properties of whole numbers and fractions as well as the basic operations applied to these numbers.
You don't need to be a mathematical genius to start with arithmetic. All you need is confidence in basic operations: addition, subtraction, multiplication, and division.
Why it can be useful: Although programming languages offer built-in functions for mathematical operations, a solid understanding of arithmetic is crucial for designing, implementing, and debugging software systems. From simple calculations to complex algorithms, software engineers frequently encounter scenarios where arithmetic is necessary to solve problems accurately and efficiently. Whether it's calculating the size and position of graphical elements in a user interface or optimizing code for performance, arithmetic skills enable engineers to make informed decisions and write robust, error-free code.
- Barbara Oakley “A Mind for Numbers: How to Excel at Math and Science”
- Math at Khan Academy.
Since programming is heavily reliant on conditions like "If you press a button, the screen must show a menu," all programming languages include Boolean algebra. This is a branch of mathematics that studies logical expressions and operations.
It's good to start by studying simple concepts, such as what constitutes a statement, the operations that allow this data to interact, and the rules of inference.
Does that all seem complicated? Try this typical example of a Boolean algebra problem:
Why it can be useful: By understanding logical operators, conditionals, and Boolean logic, programmers can create expressions to control program flow and make decisions based on specific conditions.
This ensures that programs behave predictably and handle various scenarios effectively. Moreover, studying logic helps programmers debug and identify logical errors in their code as they apply deductive reasoning and trace the flow of execution. Logical thinking also aids in breaking down complex problems into smaller, manageable components, allowing programmers to approach them systematically and find elegant solutions.
Combinatorics is a branch of mathematics that focuses on counting, arranging, and organizing objects or events. It helps us answer questions like: "How many different ways can we arrange a set of objects?" or "How many possible outcomes can occur in a given situation?" Сombinatorics involves analyzing patterns, considering various possibilities, and understanding how different elements can be combined or arranged.
Here is a typical combinatorial problem:
Why it can be useful: Combinatorics is used to build algorithms that we encounter every day, such as those used for finding the best route or optimizing supply chains. Combinatorics is also used to estimate the run time of algorithms and to speed them up. It helps make search engines, voice assistants, navigators, and other services more efficient.
- Combinatorics and Probability on Coursera
- David Guichard “An Introduction to Combinatorics and Graph Theory”.
To Sum Up
The debate over whether software engineers need math skills comes from the fact that different programming languages and projects require different things. Programming is not the same thing as solving math problems, and it has its own set of rules and systems that don't always involve math. However, understanding certain mathematical concepts such as arithmetic, logic, and combinatorics can be helpful for career growth and skill-building.
Arithmetic is handy for tasks like formula calculation and responsive design. Logic helps coders debug and identify logical errors. Combinatorics is important for creating search engines, voice assistants, navigators, and other services.
TripleTen provides a comprehensive Software Engineering Bootcamp with practical training, portfolio building, and career prep that's accessible to people without a technical background. It begins with a free intro course, so try it out and see for yourself that you don't need any special skills to start your tech journey!