I had a friend recently talk to me about selecting between software engineering and computer science as a major. He hadn't done too well in his Calculus class in high school, and the software engineering major didn't require as much math, so, he was leaning towards it.

As evidence, he stated that he would probably never use math again in his life as a developer so it doesn't make any sense for him to learn so much of it.

While I understand his sentiments against math (hey, I'm no good at history classes), the idea that the skills you learn in math are never useful is simply not true.

Math (not high school math, math taught at top tier universities with good professors) is a subject which tests your ability to work on multiple levels of abstraction at once and also learn how to tackle problems that seem too difficult at first.

When you're working on a difficult problem set, more often than not, you'll be considering concepts both at the bottom and the top of the "conceptual hierarchy" (a bit like high-level and low-level languages).

This is similar to how we want Rails developers to know atleast some stuff about how Rails works internally, because without that understanding it becomes very difficult to solve many problems you encounter as a developer.

What separates good programmers from excellent ones is not how many languages they know or whether they can recite PEP-8 start to finish. It is their ability to solve problems which sets them apart.

Math is excellent training for this type of thinking. Regardless of whether or not you ever use Gaussian elimination or vector spaces ever again in your life, those four hours you spent on that problem set probably made you a much better problem-solver, and quite possibly a better developer.

blog comments powered by Disqus
Mobile and Web Analytics