There has been a bit of talk recently about the idea of introducing programming in the curriculum for schools (for everyone, not just as part of a computer subject). Andy Young has a very good article discussing the merits of this idea. Someone recently asked my about my thoughts on the topic so I thought it would be good to discuss it here. I would encourage you to leave your thoughts as a comment below as I believe this is an important idea to discuss and consider.
Let's start off right at the beginning.
I do agree with all of Andy's comments (see article link above). I think that teaching programming to students (all students) is a great idea with many benefits. Only if it's done right, however. Otherwise it will just be a waste of time, put students off and confuse them more than anything.
We need to teach programming, and done right I think it does have the potential to effectively develop a variety of life skills including how to how to analyse a problem and create a solution, how to organise (anything and everything), how to explore, how to break things down into manageable chunks etc. But this will only happen if the teacher is someone who:
If you don't have all of these then forget it. The idea will be great but the execution will be a failure. In my personal experience I've had teachers that really knew their stuff but were poor teachers, I've also had great teachers who didn't know their stuff (not their fault though, they were a maths teacher who was told they were now teaching computing). In both instances the students laregely left confused and thinking the subject was a waste of time. Good questions are also important. They have the power to get students interested, to get them to explore, to get them to really understand why they are developing these skills and get them excited. Boring questions will do the exact opposite. Likewise, if the teacher doesn't understand why and how the students are really going to benefit from the skills they are developing then they can't focus the classwork towards that goal. They also can't convey those ideas to the students, giving them the motivation to want to learn too.
So, like most things, teaching programming has many great benefits but it is not a silver bullet. You can't just throw programming at the students and expect magic to happen. You have to put time and effort into doing it properly. It is also something that should not be done in isolation. All of the benefits that learning programming provides can and should be integrated into all the other subjects that the students are doing. (as should most other subjects but sadly they are largely not)
Creative thinking also needs to be taught. Teaching programming is really giving students a powerful set of skills to solve problems and build things (not just on computers, these skills can be applied to anything you are doing). Creativity however, gives you the ability to know what to build.
Teaching programming is also very important in terms of where I think society is heading and where it should be heading. Computers are increasingly being woven into our everyday lives. More and more, they do things for us and make our lives convenient. Interfaces are improving also which is generally great as it makes computers less obtrusive, we can do what we want with less fuss. But there is a downside to this. As the interfaces get better they tend to hide the processing from us. They abstract away the actual functioning.
People are getting used to just pressing buttons and getting a result and not knowing what steps were taken to get that result, not questioning it and blindly accepting it. This is dangerous. Especially as corporations are getting greedy and are more than happy to use this to their advantage. Try this for instance: Walk into a mobile phone store and tell the sales person you are interested in a new mobile phone. They will probably ask you a few questions then tell you they know the perfect phone and plan for your needs. If you work through the details however, and compare to what else they are offering I think you will find that what they have offered you is perfect, for them however, not for you, if the aim is to extact as much money as possible from you.
It worries me that more and more, people are happy to just believe what they are told and accept what they are given, by organisations and government. Computers are also taking over more and more of what we do and people understand less and less how they are actually functioning.
Teaching programming encourages students to break a process down, to understand it and question it. More importantly it also teaches them that they have the power and ability to then change it if what they find does not suit them.
So yes, I do believe that learning to program will not only make the individual a better person but it will also do wonders for society and empower us as a whole to tackle the large problems I think are looming just over the horizon.
You're on your way to becoming a Highly Creative Person.