It Helps to Know your Times Tables...07 Mar 2013
This week I watched a video called “What Most School’s Don’t Teach”. I actually only got about halfway through the video before I had to stop and have a wee lie down. I found the video to be patronizing, belittling and oddly a tiny bit smug?!? While having my little lie down I started to think about the sentiments behind the video and something that seems to be advocated by a growing number of industry bigwigs - should everyone learn to code?
Is that not the equivalent of saying everyone should learn to plumb or everyone should learn to engineer? In fact I think plumbing and engineering would be more useful than being able to program. Certainly if my job didn’t require me to learn to code I would be much more useful round the house if I could do DIY for instance. There is a reason that not everyone is a plumber or engineer or pilot or tree surgeon or musician and that is because these are skilled jobs requiring years of training, determination and commitment. Not to mention, more often than not; an initial aptitude. I’m sure you could become proficient at any profession relatively quickly but I wouldn’t trust a hobby electrician to wire my house nor would I hire a sometime pilot to fly my commercial airliner. So would I commission a hobby programmer to create an application for me? Would I buggery is the answer!
So if people aren’t learning to code to start a fledgling career as a software engineer then why are they learning to code? The first half of the video didn’t even approach a reason why. As far as I could tell the video wanted me to be a programming celeb, and not for the accolades or respect from my peers but because programming could make me rich! I think business makes you rich! Ideas make you rich! Steam, Facebook, Windows; these are all good ideas that filled a gap in the market. Programming is a means to an end and is often no better paid than bus driving, teaching or nursing. Most programmers I know fell into programming. They had a game they wanted to mod or make, they had a piece of software that didn’t quite do what they wanted it to. In short they had a problem. The solution to that problem required some programming. Programming is a means to an end; not a get rich quick scheme.
I have my own reasons why I think learning to code can be beneficial: I found it improved my maths skills by allowing me to think more laterally in order to solve problems. Coding allowed me to get a job in a dynamic and creative industry. Coding allows me to work with motivated and like minded individuals. Programming often gives me euphoric highs and in certain moments of epiphany a clarity that results in an underwhelming “Oh! That’s it”. On the other hand I’m pretty sure programming is responsible for many of my sleepless nights as my sub-conscious attempts to solve some half finished problem and when sleep does come often it brings the dreaded (and notoriously strange) coding dreams. For most software engineers coding is not something that can be turned on at 9 in the morning and off again at 5 in the evening. That being said programming can be fun (often masochistically so) and rewarding to those who persist through the initial trials and challenges.
The video states (and I’m paraphrasing here) that programming is easy. Basically no more than addition and subtraction! Certainly most programmers are by no means mathematicians and nor are we required to be. However I didn’t do 4 years of addition and subtraction at Uni I can tell you that much. Apparently you don’t even need algebra, communication skills or problem solving; who would have thought it! Maybe coding is easy for Mr Newell, Mr Gates and Mr Zuckerburg; but my experiences are somewhat different. Programming has stages ranging from ‘How do I do this’ to ‘How do I get this to work’ to ‘What is the best way to do this’ and each stage brings its own challenges and rewards. I would agree that the fundamentals of programming are simple, but simplicity and difficulty are two very different beasts. The difficulty in programming is making the complex look simple; much like a sportsman or a magician make a skill or a trick appear effortless. Striving for simplicity in a world of complexity, flexibility and change is a constant battle.
So do I think everyone should learn to code? No. Learn to code if you enjoy problem solving, if you like being part of an active community, if you want to make a game, a mod or an app. Learn to code if you love computers and have an aptitude for learning and a thirst for knowledge. Learn to code if you have a problem and no other solution. Otherwise learn to put up shelves and fix the washing machine…your partner will be much happier.