I would argue that giving many super precise instructions is exactly an example of mathematical thinking. It's like the old algebra problem of "Prove 23=6". It's blatantly obvious to everyone over the age of two, but the proof is quite long and tedious.
2*3=(1+1)*3 | Definition of 2
2*3=1*3+1*3 | Distributive property
2*3=3+1*3 | Identity of Multiplication
2*3=3+3 | Identity of Multiplication
2*3=3+(2+1) | Definition of 3
2*3=3+(1+2) | Commutativity of Addition
2*3=3+1+2 | Associativity of Addition
2*3=(3+1)+2 | Associativity of Addition
2*3=4+2 | Associativity of Addition
2*3=4+(1+1) | Definition of 2
2*3=4+1+1 | Associativity of Addition
2*3=(4+1)+1 | Associativity of Addition
2*3=5+1 | Definition of 5
2*3=6 | Definition of 6
It's the exact same set of logical skills to take a fixed set of tools and see how those tools can take you from where you are to where you want to be. It's not that programmers need Category Theory and Partial Differential Equations (however fun and useful they can be), but rather that someone who can't prove that 23=6 probably can't code.
Comments
I would argue that giving many super precise instructions is exactly an example of mathematical thinking. It's like the old algebra problem of "Prove 23=6". It's blatantly obvious to everyone over the age of two, but the proof is quite long and tedious.
It's the exact same set of logical skills to take a fixed set of tools and see how those tools can take you from where you are to where you want to be. It's not that programmers need Category Theory and Partial Differential Equations (however fun and useful they can be), but rather that someone who can't prove that 23=6 probably can't code.