# How much Math does a developer need to know?

Everything here is just my personal opinion.

I think that every developer should know maths because maths is the fundamental of every science in the world. Everywhere you can calculate something no matter what it is. There is even a theory that you can predict every single action in the universe using math.

What level and which area of maths depends on what kind of a developer you are. This is why no one can say that a developer has to know only this in Maths and will be okey and not need anything else.

FOR GAME DEVELOPERS
Game Developers mainly use these areas in math:
-Algebra
-Trigonometry
-Calculus
-Linear Algebra
-Discrete Math

Vectors
When you are making a game the objects are represented by vectors. You need a really good understand of vectors. Vectors can represent things like direction, speed and the position. Every single thing you do like make an object move is done by vector calculations.

Delta Time
To begin with the term Delta means a difference between two values. Delta Time is the time difference between each update. It can be used to smooth out values for movement and other incremental calculations.

Every game developer must know that the time between each frame is not a constant. Even if you are moving an object with the same constant speed the overall effect might not be smooth. This happens because the amount of time it takes to complete a frame will vary despite the distance of movement remaining constant.

The way to fix that is by making the frames that take longer time to see bigger changes and the frames that take less time to see a smaller change.

If you implement something like Delta Time you will make the game appear a lot smoother.

Complex Numbers
Understanding of complex numbers is needed. You may know that the sqrt(-1) = i well you must know the extended that part that adds j and k as imaginary numbers too. This is called Quaternions. They are used for rotations.

Why do you need such a thing?

Well because if you use it you won't suffer the Gimbal Lock. So in short in Gimbal Lock you lose a degree of freedom when you reach 90 degrees and the Quaterions solve it by adding a fourth dimension.

There are many more things in math that you need to know to be a game developer but I will continue with the other areas of development.

FOR WEB DEVELOPERS
A lot of web developers know that you don't need anything more than what you learn at school. Well this is true and false at the same time. It is true that with knoawadge in maths from school you can make a good career but in this post for web development I will focus only in specific tasks.

For a browser game, advanced data visualization, better security and etc you will need more maths skills. There are other things you will need math skills for too.

Creating a secure hash algorithm on your own
You will need for a hashing algorithm Number Theory, Abstract Algebra a lot. Other areas like Calculas, Trigonometry. But of course you should know things like basic Combinatorics, Information Theory, Asymptotic Analysis of algorithms and some notations.

One of the important notations is XOR which can also be denoted as a circle and the sign + inside of it. Abstract Mathematics and Set Theory are used in hashing algorithms too. You will have to learn the difference between a function, bijection, permutation, etc, but again this is mostly just terminology of relatively simple concepts.

One of the things that is also really importatnt is the Modular Arithmetic (which is a part of Number Theory and it is easy to learn too). I won't go into depths to every part that you need for the hashing algorithm but if you want I can make a whole some posts how to make one.

Here are the things that you need to know and are associated with the maths used in creating a hashing algorithm:
-Fermat's little theorem
-Euler's theorem Euclid's algorithm
-Carmichael numbers
-modular exponentiation-discrete logarithms

Design
To be a better designer you need to know things such as the golden ratio(fi), the golden rectangle and etc. This is why you if you know advanced maths you will become better in designing websites/web applications.

There are still topics that I won't cover because if I write for everything and explain it with details I will be able to fit everything in an amazon kindle book and sell it for 0.99\$. :D

FOR DEVELOPERS WORKING WITH HARDWARE
Well here you need a lot of maths.

You need to calculate everything there is to calculate. You must have a lot of knowadge about physics because you have to know AC, DC, PC. To do a lot of the calculation you must know Integrals.

Here you will need imaginary numbers too. And as a whole here is way too much maths and physics to explain.

SUMMARY
I don't think that any knowadge is redundant especially if you are a developer so no matter what your age is You have to learn something new. This is everything I could fit in a small post. If you want more detailed explanation about a certain thing just ask me or tell me to make a post/posts. I know that I am bad in explaining but I hope you at least understood something.

Posted on by:

### Discussion Good post. My thoughts are that a good software developer will find any task in any platform easy if he has good analytical skills like using loops, recursions etc and basic algebraic skills. That said, other fields specially vector, 3D graphics are more nuanced and one has to go through good amount of time and efforts to learn them and develop user interactive games and apps. In my case, due to nature of clients, formulas for entropy, resistance and scientific formulas were used a lot and reminded me of Engineering days (Electronics was my major) but I didn't care to check about formulas as the core engineering team will provide them. It was basically separation of concerns: the abstract formulas from scientific team and building software based on them was ours :)

I think something people often forget about when talking about maths and coding is that it is possible to mathematically prove algorithmic correctness, although maybe this sort of thing is a bit less relevant for a developer over a researcher

Me irl  