There is something about programming that really makes me happy. The ability to create something from seemingly nothing. It could be simple, like a font or complex like a program that will tell what day it will be in the next 23 full moon cycles. Even programs that run calculations to find hidden particles and calculate the speed of atoms.
Sounds all very science-y.
I believe there is more to programming than getting machines to do our bidding. I want to share with you the treasure I was given from a teacher I admired.
I suppose starting from the beginning would be important. I mean how does a girl in the early 90’s jump into a computer science class and start doing programming? Certainly one that had no idea on how to install a program let alone code one. I mean my first experience with coding was in grade 5 on an apple computer making a turtle move in a box on the screen. Sadly, I could only manage making stairs.
I remember signing up thinking it would be the most challenging class for me. I love challenges. They really get me excited. In a class that started with 20+ people, we finished the year with only 6. Yea, it was hard, frustrating and long. However, in that year something amazing happened. Something more powerful than learning how to make machines do my bidding! Although, that is pretty cool too.
Problem solving. How simple? Problem solving is something we aren’t taught growing up. It’s often left to be explored through trial and error. Think of how many times we make the same mistakes over and over, until we finally get it. Rarely are we independently taught other forms of problem solving; root cause analysis, abstraction, reduction, etc.
Perhaps I was lucky in having such an amazing teacher as Mr. Rummery. He pushed for the right methods. Mediocre coding, mediocre solutions, weren’t good enough. They had to be creative, they had to smart, they had to be efficient and well documented. Very well documented.
However, problem solving is what he talked about most. Mr. Rummery always said (and I paraphrase), you may not understand what you are making or how it all works right now. It is important to know how it’s suppose to work, why it is working. One day, you will wake up and it will suddenly all make sense.
I can tell you, I checked every morning to see if I understood it. To see if I finally “got it”. I believed him, I believed it would happen, like a magical spark in the back of my brain. I didn’t see it until I was long since graduated. It was exactly as he described. In a moment everything just suddenly seemed to fit. It felt like an intricate dance of instructions and actions. It was humbling and beautiful. It was amazing and still is.
Programming teaches more than how to perform a task. If you really take it in: It teaches accomplishment, it teaches systematic analysis, it teaches creative thinking, it teaches problem solving.
These skills go far beyond the computer screen. They can touch every aspect of your life if you apply the knowledge. Knowing how to approach the really hard parts in my life were always supported by what I learned in those three years of Computer Science. Instead of playing trial and error with my life, I was removing myself from the problem to really look at it. To theorize solutions, to find root causes, and to address them.
Problem solving isn’t really taught in school, but computer science should be. Programming is more than making a machine do stuff. Programming is an art and a life skill. Everyone should learn.
This post was inspired by the following movement, which I am very happy to see: