I have defended this position before here, and didn’t get much love them.
Code is math. Not arithmetic, to be sure, but math.
When you speak of inheritance or interfaces, that’s group theory. You might not know what the heck is group theory, but you are using it intuitively. And, of course, you might incur in errors when intuition fails, or you might reinvent the wheel (and call it Liskov Substitution Principle, for example).
When you use any flow control, that’s automata theory. Again, you might not know the theory, but you are using it. So when something more complex show up, you might spend some hours rewriting your algorithm, or write spaghetti code instead of using a DFA, for example.
There’s logic, which has been mentioned before. If you have seen incorrect usage of , || and !, that’s math (or the lack of it).
There are algorithms, such as those used in linear programming, which might save you (or your user) time for what would have been simple tasks (such as optimizing load).
And so on.
If you write a program, you are actively using math. If you lack math, you waste time. Either your time figuring out how to solve a problem that has been solved before, your successor by writing code unnecessarily complex, or your user by writing code that takes longer to run than needed.