In my role as Head Instructor of Lighthouse Labs, I spend a lot of time in the community advocating for the adoption of technology and introducing people who have never programmed before to the practice of coding. It is an exhilarating experience, watching people explore and adopt the creative process of communicating a solution to a computer and seeing their efforts work on the screen. I use specific language to describe the process of programming, because at its heart that is all that it is. Programming, or coding, is breaking a problem down into steps so simple that even a computer can do them.
Once we have that series of steps defined, we just need to communicate them to a computer in a way that it can understand. Computers, by themselves, are not very smart. The solutions we give them, however, make them very useful to us. And it’s an amazing process of building and developing technology that has revolutionized our society. Despite the prevalence of technology and software all around us, I still find myself being asked why children should learn to code. I love this question because it is never asking what the words say it is asking. I believe that when people ask whether their children should learn to code, they are asking whether they should have learned to code earlier in life. It is a question of regret, usually.
To help all of you who may wish you knew more about communicating with technology and want to spare your kids the regret for not learning, I want to share with you five reasons why I believe that children should be learning to code. These five reasons will span a variety of reasons, and I hope a few will even surprise you.
We talk a great deal about imparting ‘life skills’ to children as they are growing up. Some of these involve the basics. Topics such as sharing, manners, respect, and restraint are introduced early in life. Other topics come later, such as preparing for interviews, budgeting, and the dreaded topic of dating. Throughout our schooling, we also learn a number of life skills, such as the ability to think creatively or critically. We are taught to express ourselves using language, we are taught to investigate things about which we are curious, and about the successes and failures of historical figures.
Most importantly, we are taught to solve problems. We are taught techniques such as the Scientific Method, the process of elimination, and even the eponymous Eeny-Meeny-Miney-Moe. But we are also taught to do steps like breaking big problems down into smaller ones, taught to recognize patterns and to construct solutions that will be successful again and again. These are all part of the process that is defined as computational thinking.
Computational Thinking is an integral part of many curriculums around the world and has been recognized by institutions such as the University of Prague and Carnegie-Mellon University as one of the most vital problem-solving methods that students can learn during their school-aged years. Computational thinking contributes to success in every curricular area and equips children for success in whatever career they choose to pursue later in life.
When I take the commuter train into work each day, I am using a touch-screen kiosk computer to buy my ticket. I am using a tap-card RFID system to load that ticket onto my pass, and that same system admits me into the train station. At work, I am regularly using collaborative real-time web-based document editor tools and applications which access data from across the country in the blink of an eye. I can unlock my phone by taking a picture of my face and that same phone will overlay dog ears and tongue on my selfie so that I can get a chuckle from my friends.
We are surrounded by technical innovation. Whether it is with the games we play, the social media tools that we use to stay in touch with friends and family, or the productivity tools that power our daily work, there are thousands of software systems that we encounter every year. Understanding how those systems work makes us better users of those systems. Every mechanic becomes a better driver, and every chef becomes a better diner. Why shouldn’t we make better technologists by educating our children about the way that tech works?
We hope that by teaching our children art, music, and poetry that we are going to equip them with the tools to be able to express themselves and give an outlet for the tumultuous emotions and experiences that are part of growing up. Hockey, martial arts, fishing, and video games all become ways in which children find outlets from the day-to-day routine of school.
When we see children that have talents in the arts, whose creative energies shine forth early in life, we tend to want to foster that in any way that we can. We encourage them to write stories, draw pictures, or practice violin. It has been studied and proven that the same language areas of the brain that are used for expression through language are used when programming. A student wanting to build a web application to track their favourite hockey team is still a sports fan. A collector of digital data is no less avid a collector than someone filling shoeboxes with sports trading cards.
Children are notoriously full of energy that needs focus and an outlet. While the idea that they may be interested in sitting in front of a computer to work on coding is dubious, nothing will focus a child’s efforts more than pursuing something about which they are passionate. Just as they don’t know that art is an area they want to explore until they are exposed to it, we can’t know whether a child will want to program until they are shown how.
We don’t teach reading and writing because we intend to make a generation of professional writers, nor do we teach chemistry because we expect every student to develop pharmaceuticals. We shouldn’t restrict whether we are teaching them to code just because we don’t know whether they will get a job in that area.
Hollywood has done programmers a disservice. The stereotypical image of the developer is either the young loner that can’t make friends or the rotund grey-bearded middle-aged guy in his mother’s basement. There is always a perception that you’ll only find them at science fiction meetups or in dark rooms drinking Red Bull. However, in my nearly twenty years in this industry, I can tell you that the world of technology and programming is remarkably social. Developer teams are typically anywhere from four to twenty people at a time. These people are collegial, friendly, and behave exactly as you would expect colleagues to act whether they were accountants, advertisers, or landscapers. We socialize, we celebrate each others’ birthdays, have dinner at each others’ houses.
I cannot help but laugh off the suspicion that someone shouldn’t become a developer because they’re only going to work with weirdos and nerds. Developers do tend to be smart people, good at problem-solving, fond of puzzles, and they are usually quite well-informed on subjects both social and political. Don’t let TV and the movies define what a developer is. We know that all doctors aren’t like Dr. House and not all teachers are like Mr. D.
Remember all those software systems I talked about in #2? Who do you think is building them? Your favourite coffee shop, the one on every corner, has software systems for their inventory, their point of sale, their payroll, their website, their mobile app, their rewards program, and even their espresso machines are connected to a network that monitors them for maintenance and cleaning. Your average small airline has approximately eighty-seven different software systems that they use to manage all the various aspects of their business. Who built those?
Technology is an industry where there is an insatiable need for talent. Whether it is research technology, app development, game development, or large companies such as Microsoft and Apple, people want new and innovative software products. Technical startups are springing up all over the world, every day. The Internet of Things, the race to privatize space travel and exploration, agencies such as NASA and HealthCanada are all looking for software that can push their initiatives forward. When you go to work tomorrow, count how many applications you use. Pay particular attention to custom software that is something only someone in your industry or at your company would use. Someone built that. They learned to code, they got better at it, and they built the software that you use to do your job.
Technology is an unavoidable, inescapable part of our world. Whether it is micro-transactions being transmitted over the cell networks in Uganda or a scoring app for playing squash in South Africa, we live in a technological world. The traffic lights in Toronto and the jumbotron in Rogers Arena in Vancouver are driven by software. A fluency in how technology works is a requirement for interacting with the society in which we live. The next time you hear someone ask whether anyone should learn to code, I challenge you to give them an answer.