Hi! I’m Joel McCracken, a software developer at Think Through Math. We developers have been trying to introduce ourselves so that people outside of our team can get to know us. I have worked on a number of features in the Think Through Math application, including the equation builder and the calculator.
I love programming. I think it is one of the most rewarding and intellectually satisfying pursuits that exist! In fact, next to reading, it is the most important thing that I have ever learned to do.
A little while back, I was part of a conversation with our CTO, James Wrubel. James mentioned to us that he didn’t realize at first how much programmers care about mathematics education, and the mission at TTM would make it eaiser to hire programmers to work on our system.
This conversation got me to thinking: Why do I care so much about math and education? I don’t think the connection between math and programming is obvious. Often, we do not need to use much math in our day-to-day work as software developers. At a glance, it would seem that programming and math do not have all that much in common.
Conversely, computer science is considered a sub-discipline of mathematics. Part of a computer science education typically requires classes in some advanced mathematics. And, computers were developed in order to help humans perform math faster. So it would seem that mathematics is somehow central to what a programmer does. How do we reconcile the fact that we do not need to use advanced math in what we do, and yet math is fundamental to programming?
Here is my answer, in two parts. Back in school, I enjoyed some parts of my math classes. Math helped me to understand parts of the world. I liked learning how things worked and related to one another, and how we can use math to figure things out. Many of the problems we had to do were a certain type we called “word problems”. These problems presented a scenario, and we had figure out how to apply what we are learning to that scenario.
Similarly, developers solve problems with software. We need to ask the right questions, look at code and information available, and then develop solutions based upon what we have discovered. Basically, we do word problems all day, every day, but with real life challenges.
However, I believe there is a more important and subtle connection between math and programming. Programming a computer requires a very rigorous way of thinking. In a mathematics problem, if you write a 4 instead of a 5, forget to carry the one, etc, you will come up with the wrong answer. In software, if a developer forgets to “carry the one” in their code, this creates bugs. Of the things we learn in school, mathematics is the only thing topic that is remotely similar.
In fact, you may be familiar with a recent bug named “heartbleed”. This bug left most of the world’s information exposed to prying eyes. The cause of bug might be likened to forgetting to carry the one! So, exactness and precision are very important to programming.
In our society, mathematics is the gateway into programming. It trains you to think in the way that programmers must think in order to build software. Personally, I hope that the work I do at Think Through Math will help some students become better at math, and through that comfort will be able to experience the intellectual wonders of the world, such as programming.