It is well known there is a strong link between computer science and mathematics. In looking to improve my own software engineering skill set I'm interested to know what concept from mathematics has helped you to gain deeper understanding of software development as a whole? What would be the biggest bang-for-your-buck concept to learn from the domain of mathematics that would carry over into a software engineering career?
As a somewhat heavyweight example, Alex Stepanov of STL fame has often compared concepts in C++ (DefaultConstructible, Assignable, Regular, etc.) to concepts from abstract algebra (groups, rings, monoids, etc.) In fact much of the direction C++ is going (generic programming) can find its roots back in his initial observations. In his latest book he recommends brushing up on Chrystal's work on Algebra, which is a bit too much for me to chew off, but the point remains valid.
I'm not looking for answers as hardcore as the one above (though they are useful and welcome) - in fact I would find answers that are achievable to be more attractive, as I'm looking for something to put into practice.
Answers would be most helpful if they addressed the following:
- How you learned it
- How you applied it
- How it changed your code / methods