Reading, 'riting, 'rithmetic, and Magic…

There are Many Reasons to Learn to Program

In the above video from a variety of celebrities make a case for why programming should be taught to all children. It is worthwhile to watch the full 10 minute video at Code.org. Code.org also offers links to a variety of learn to program resources, including Scratch.

During this project to transition from Scratch to learning to program in Python, Madeline Bishop has twice made comments on my post suggesting that my journey moving from scratch to python would help students wishing to pursue career. She asked:

Do you have any idea of how many kids transition from Scratch into another language? How many go on to have IT career?

My first reactions were– I don’t know and I don’t really care. But this comes off as blunt and doesn’t fully explain my thoughts on teaching myself how to program, or teaching children how to program.

To explain, I have to tell a little bit about myself- I am a singer- songwriter, I play guitar and bass, I am a podcaster, blogger and have dabbled with creating websites since the early web. I dabble with photography and video. I was an early volunteer for Librivox.org recording public domain audiobooks. I am a fan and proponent of open source software and make liberal use of public domain and creative commons media. And I am a slow but persistent home handyman– I told my wife I am restoring our house on the 21 year plan (7 years in and it is starting to look quite nice).

As a regional children’s entertainer and folk songwriter, I have long become accustomed to well meaning questions of “So when can you quit your day job?” The answer is “Never”. But I derive immense pleasure from writing and sharing my music with others. When I get the odd paying gig, it helps subsidize my gear buying habit. But I derive far more value from all my creative endeavors than just monetary value. I think one of the greatest values is that I approach the world as a creator– rather than a consumer: of music, of media.

So learning to code for me is another creative outlet. For me it is a liberal art… not just a means to a career path. I found an article that develops this idea better than I can explain it: Why Everyone Should Learn to Program by Dan Haggard. In it, he explains how teaching himself to program in python has enabled him to do his work as a university administrator more efficiently. Let me share just a brief snippet that gets to the heart of his argument: (emphasis is all mine)

Given the relative ease in learning the basics of programming in scripting languages like Python, the time has come to challenge the assumption that programming is a specialisation. If you need an analogy: is learning to read and write in a spoken language like English – a specialisation? No, it’s a fundamental tool needed to navigate your contemporary existence. It’s easy enough to learn that you devote some of your early years to the task – and then it stays with you for life. You could go on to specialise in language use. Maybe you’ll go on to become a writer. But you don’t need to specialise for your language skills to provide you with an incredible level of life-improvement. Well – so to with programming.

What’s more – I now feel cured of an affliction I never realised I had. If I had to name this affliction, I’d call it –defaultism. Always did I just default to the way of things as it was handed to me. Now I look at every aspect of my life with a hacker’s eye. How can I free myself of this task? – is the question now at the forefront of my mind at all times. There is no need to throw out every interface with which we are presented. If it fits our needs and desires then fine. But how often do you subvert your own desires and needs because of the constraints imposed by the limitations of the interfaces with which you have been bequeathed?

I also found a nice contrasting view by Jeff Attwood at Coding Horror entitled: Please Don’t Learn to Code. Atwood’s key arguments centre around the idea that skilled programmers do not just produce lines of code. The are problem solvers who through years of experience develop certain ways of approaching and solving problems. He writes:

Look, I love programming. I also believe programming is important … in the right context, for some people. But so are a lot of skills. I would no more urge everyone to learn programming than I would urge everyone to learn plumbing. That’d be ridiculous, right?

In the final paragraphs of his article, Atwood seems to come closer to what I have been getting at:

The general populace (and its political leadership) could probably benefit most of all from a basic understanding of how computers, and the Internet, work. Being able to get around on the Internet is becoming a basic life skill, and we should be worried about fixing that first and most of all, before we start jumping all the way into code.

Please don’t advocate learning to code just for the sake of learning how to code. Or worse, because of the fat paychecks. Instead, I humbly suggest that we spend our time learning how to …

Research voraciously, and understand how the things around us work at a basic level.

Both articles suggest that knowing how computers and programming work are a life-skill rather than just a career-path. They teach us a certain approach to problem solving and how to think.

Back to the initial question of how does my Scratch help kids transition to an IT career. I still don’t know. But I have found out through my readings and learning a bit about Python, that Python is a great first or second programming language that allows someone lots of opportunity to explore a variety of styles of programming and almost limitless applications: whether it be making games, applications for the web, mobile apps, or complex scientific mathematics. So yes, I guess it could be a first step to exploring an IT career, or the first step to becoming a creator rather than consumer. I find the latter idea much more compelling.