In 2014 I wrote a post about how kids should learn how to type and then learn to code. Two years later I still stand by that assertion. After two years I thought it would be a good time to revisit and dive deeper into the topic.
Back in 2014 I decided that I would finally teach myself how to code. Maybe you’ve see nonprofits popping up lately wanting to kids to learn to code or maybe you’ve seen Project Blok or Making Science. These are great initiatives but for anyone who doesn’t currently code, you may be missing the point.
Learning to code teaches three critical ideas:
- Critical Thinking
- Problem Solving
- Thinking Programmatically
Think about the printing press that was invented in the 1400’s. It ushered in a completely new era for the printed word and books. Before that books were dependent upon scribes who spent many hours on their craft. Or take the industrial revolution for example. According to Wikipedia, the industrial revolution lasted from about 1760 to 1840. Both had the same goal “How do I make as many things as possible with as few errors as possible?” That’s not to say that typos were made or that machines never became worn and needed repair, but the scale of growth was astronomical compared to what humans could do by their self.
What does this have to do with coding? Good question.
When we learn to code, we learn to think critically. We learn to ask questions like “Is there a better way to do this?” or “Could this be done more efficiently?” You learn how to look at the same problem from many different angles instead of just diving right in.
When we learn to code, we learn how to solve problems. We have come up with so many solutions for things, but there is still so much left to do. Take the idea of sorting mail at a post office. Someone came up with an ideal solution for this problem. Or think about how FedEx delivers packages (the travelling salesman problem). People are working everyday to come with an optimal route for you to get your packages from Amazon as quickly as possible.
When we learn to code, we learn how to think programmatically. What if you had to do the same steps over and over each day at work, would you want to continue to do it or would you want to figure out a better way to do things? Take the job of a toll booth worker. Until recently, we didn’t have the luxury of EZ-Passes. People had to stop and hand someone exact change so that they could drive down and expressway. How could you build or invent a solution that worked automatically 95 - 99% percent of the time?
Why should I care about any of this?
When you learn how to code, you learn how to approaches problems and solutions differently. It’s not about learning a new language, that’s a byproduct of the entire process. There are two things that hinder us from all thinking this way: abstraction and complacency. Let’s look at abstraction, take the coffee pods for example. Most people (not coffee snobs) are fine with the coffee pods. You don’t need to know how to make coffee, you just need to put your pod in your machine and out pops a hot cup of coffee. It wasn’t always like that though, someone has to come up with that process, an algorithm for how long to brew the coffee and at what temperature for you to enjoy it.
It’s the same thing with a computer program like Excel. People love Excel because it’s great a “reading” csv files. It’s really not, Excel has a good parser for CSV files that most people never even seen. This is another example of abstraction.
You also see complacency a lot in the workplaces. It’s similar to the story of the Christmas ham. A girl is baking a ham and cuts in half. The husband asks why? The girl responds “That’s what my mother use to do.” They go to ask her mother if she did the same and the mother tells them that she learned it from her mother. They ask the grandmother why she cut the ends off the ham and the grandmother replies “I just didn’t have a pan big enough to cook it in.” I’m sure this story is a fable but it illustrates a point about how we do things because we learned from someone who might not have been properly equipped to handle a problem or think differently about a solution.
It’s simple. There are so many things that are waiting to be done with no solutions in place. Would you depend on someone else to build it or would you do it yourself?