This is an opinion piece based on personal experience. Feel free to agree with what you like and disagree with what you don't.
"Math matters" - every math teacher ever
I'll start off by saying math matters. We all know it does, or at least have been told that.
Indeed, in every math subject I have taken in school - from Algebra I, to Geometry, to Algebra II, to Precalculus, to AP Calculus BC, to Concepts of Mathematics, to Multivariable Calculus, and even right now in Linear Algebra - my math teacher at the time told us that we would be using math from their course somehow outside of math class.
Up until last year, I was one of the kids who laughed whenever one of my math teachers would say that.
Yeah, I wanted to be a biologist
I honestly thought I wouldn't need the math at all: heck, I was thinking of being a biologist at the time. Yeah, one of those laboratory guys in white coats pouring liquids into bottles and messing around with living cells.
You see, when I was in Freshman year in high school, I decided that I would take the biotechnology route in my school.
To be honest, I wanted to be a biologist because I was bad at math and I thought it would be the easiest way for me to escape from it. I was so bad that by my Junior year in high school it had been four years since I received a B let alone an A in a math course, and honestly I didn't see the point in math.
- Algebra 2: B-
- Precalculus: C
- AP Calculus BC: C
"What's the point of doing something that doesn't really have an obvious application? Math is just so free-form and abstract. What is the use in getting better at it and diving into more obscure courses?" Those were some of my thoughts at the time.
Frustrated, I turned a blind eye towards math and was eligible to finish my high school career with research in biotechnology after finishing the biology sequence.
Academic career switch
That was the year that I also decided to take AP Computer Science on a whim. I aced the course and got a 5 with ease.
As my Junior year in high school came to a close, I had decided that I would switch to a computer science focus instead of continuing down the biotechnology route.
I liked computer science. I liked solving problems and I liked being challenged. I liked the fact that I was good at it.
Most of all, I liked the fact that I found it more fun than biology. ;)
Computer science is like math
As I got more into computer science, I realized that there was a lot of similarities between computer science and mathematics.
In both fields, you learn a bunch of tools and are thrown into situations where you have to use all of the resources you have available to you to solve a problem with no instructions. Nearly everything is justified and there are rarely any reasons why you have to explain something as "it happens just because that's how things are". I love the fact that there are rules to math and computer science but there are many ways of arriving to a single conclusion.
This is the logical algorithmic thinking that I love. Every problem can be solved with a logical step-by-step solution as long as you have the tools.
But, that realization didn't quite help me get any better at math, nor did it really help me see why I needed it at all.
The relationship was undeniable
This school year, I decided to take Artificial Intelligence, Parallel Computing, and Cryptography alongside my computer systems research.
It became undeniable that as I moved higher up in computer science, I had to get better at math. Computer science concepts started getting backed up by rigorous equations and to stay ahead I needed to really understand what was going on.
Even though I knew that I wasn't so great at it, I trudged on and decided to learn math with the intent of helping me get better at programming.
You know what? I found that to be helpful. Math became more palatable as I began looking at it as a tool to help me get better at computer science. I finally found an application of mathematics that I could really care about, and that was enough to get me started on self-teaching myself whatever I could find.
A whole year has passed and honestly I can say with confidence that without the time I have devoted towards getting better at math, I wouldn't even be half of the programmer I am now. Math has been a powerful tool towards solving a variety of programming problems I have been tackling, which is why I am sharing my story and trying to encourage others to keep at it.
What you should take from this story
Being a good programmer is the same as being a good problem solver. This is free from things like:
- How many programming languages you know
- How fast you are
- How much you know
- How much experience you have
... because honestly all of those are irrelevant if you cannot solve problems well.
Being a good problem solver means:
- You are open-minded and willing to use every bit of knowledge to your advantage
- You are devoted and willing to spend time to honing your craft through practice
I talked about math because it is something I think a lot of people here sort of gloss over thinking they can be better at programming without knowing much about math. In all honesty, it is your loss and you will be missing out on a potential way to get better faster.
How can I practice getting better at math?
The best way to get better at anything is to start at a concept you don't understand and then learning everything you need in order to understand it. This will not only help you understand something you didn't understand before, but will also help you branch out and cover more information.
The Snack Break problem series that I manage will have a lot of problems involving algorithmic thinking and mathematics. I highly recommend that you take a shot at them.
Yes. They will probably be challenging.
No. That does not mean that you should not do them or give up. If you want to get better at programming faster, push yourself and persevere. Find a way to overcome all obstacles. If you have questions, ask them. Heck, you can even use ScriptingHelpers and ask a question here about one of the Snack Break problems. If you want my help, feel free to send me a tweet over Twitter @YonaJune or chat with me over our very own Community Chat.
Do whatever you can to pave your path to mastery.