My two cents: to be a professional software developer (as opposed to a computer scientist) does not usually require a lot of actual *math*, but it does require one to be able to *think like a mathematician*.

In my career as a software developer, I have very rarely needed to use maths above high school level, and in fact I didn’t even need all of my high school skills – I don’t think I’ve ever used calculus in my professional work, for example. (There are some math-related topics which you don’t necessarily get taught in high school, such as binary and hexadecimal notation and big-Oh complexity, but those are not particularly difficult things to learn.)

On the other hand, the relatively basic math and logic skills which I *do* need, I need *all the time*. Every time I write an algorithmic function, it’s like proving a little maths theorem – perhaps not a particularly difficult one, by the standards of a maths PhD, but it’s what I do for many hours per day, every day. If you want to work as a programmer and you don’t have an intuitive knack for that kind of logical problem-solving, you will either deliver crappy code or have an unacceptably low productivity. (You also won’t enjoy it very much, unless you manage to gravitate towards a role which does not involve too much actual programming.)

To be a good programmer, you need to be able to look at a piece of code and understand, almost instantly, not just what it does but also what are the edge cases which require special attention, how efficient it will be on unusually large inputs, etc. When reading through a piece of code which does something with a list of elements, you should be verifying without even consciously thinking about it, whether it will do the right thing for a list with zero elements, whether it doesn’t loop over the list more often than neccesary, whether it could happen that new items get inserted into the list while you’re looping over it, and if so, whether the code will handle that correctly, etc.

Understanding such things usually does not involve particularly sophisticated mathematics. But a large real-world software application consists of many, many thousands of such little informal theorem-proofs, all interconnected, and in order to be able to understand how the whole thing hangs together (and especially in order to figure out what’s going wrong when it doesn’t quite work correctly!) you need to be able to look at any of those individual little pieces of code and grasp what it does almost immediately, subconsciously, because otherwise you will miss the forest for the trees.

Which means that, even though you may never need to use any mathematical concepts which a reasonably smart high school student would be unfamiliar with, you still need to have the same kind of brain structure which is needed to become a good mathematician.