| As someone who has done a fair bit of both math and programming, I will agree that having some math knowledge has definitely helped at various times when programming, but I don't think these specific instances (e.g. the 10 examples given in the article) constitute the primary reason it's a good idea to learn math. For the purposes of handling those specific situations, I think you would do fine to just learn the math as you encounter the need for it (and 95+% of the time you don't need anything beyond high school). To me, the primary value of math for programming is that it is a pure form of exercising many of the skills that help you write good code. For example: - fluency in logical reasoning - turning vague intuitions into precise statements (translating business requirements into code) - formalizing proofs (covering all cases, establishing invariants) - developing abstractions to succinctly describe relationships - solving a problem systematically You can also learn these skills by programming, of course, but probably not as quickly, because you will be distracted with other tasks such as debugging, setting up your dev environment, waiting for your program to run, etc. So in my opinion, what's important is not so much the immutability of the math itself, but rather the process of doing the math. I would be interested to know if others have had similar experiences. |
On the other hand, what gets overlooked, IMO, is the "other stuff". Humanities, law, business, biology, take your pick!
When faced with a problem, a programmer is always looking at at least two issues:
1. to implement, 2. to understand the problem domain.
I see math being exceptionally helpful in 1), but at most somewhat helpful in 2) -- because at the end of the day, programs that we write tend not to be about math, or logic. Category theory does not help you understand the contract your company signed with some other company 12 years ago, and the amendments they made 7 years ago. It does help you implement these things concisely and correctly. What'd would help you understand would be for a programmer to know something about contracts.
Most programmers that I know have a certain talent for and knowledge about math. Most programmers that I know, also don't know a lot about the world outside of computers. That includes me, fwiw.
I think that their careers would profit from considering learning some non-mathematical domains more than from learning more math.
I'm not arguing against math, but I'm arguing for a good balance. To know at least the basics of some other domains, before you set out to learn a lot about one.