So, you’re thinking about transitioning into tech, but if you’re like some of us, you might not consider yourself a “math person.” But does software engineering require math skills? Do you need to be good at math to be a software engineer? Or can you get by with that algebra you learned in high school (and maybe haven’t used since)?

Well, ask around, 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.

So let’s look into whether a software engineer needs math skills. And if so, how much math will it take to be successful?

## 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 software engineers 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 math pros. In fact, writing code is more like writing in a foreign language. It has its own system and strict rules, but there’s no math in it at all. So there’s no need to take a special course about math for software engineers.

Programming can also be compared to composing music_{From Making Music to Making Commits: Jenny Doctor’s TripleTen Story}. 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 as a software engineer?

Math 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 math at a college or university to do this. In fact, there are three basic areas worth paying attention to: arithmetic, logic, and combinatorics.

### Arithmetic

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.

Useful resources:

### Logic

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 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.

**Useful resources:**

- Introduction to Logic on Coursera
- Logic tasks in the archive at codeforces.com.

### Combinatorics

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.

**Useful resources:**

- Combinatorics and Probability on Coursera
- David Guichard “An Introduction to Combinatorics and Graph Theory”.

## To math, or not to math: You can still be a software engineer

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. Give it a try — no math required!

Ready for the answers to the puzzles above?

Lottery probably example: