Demystifying Modern Sorcery (Coding)
Coding (or programming/black magic) is one of those things everyone talks about, acknowledges that everyone needs to know something about, but barely anyone actually does. Coders have this weirdly conflicting aura; they are the kingmakers, modern day sorcerers who, with seemingly an incomprehensible wave of the hand, can conjure a piece of software out of thin air, and in many cases, a billion dollar IPO at the blink of an eye. Yet at the same time, there persists the stigma of a loner nerd with dark rings under his eyes, eliciting vast worlds from his fingertips yet barely able to keep a conversation going after the first sentence. Is this image problem accurate in these days of teenage billionaires?
Some time ago, I started thinking that I should learn how to code because one thing is clear in 2016; much of how the modern world works depends on lines of code and people with the ability to create it. Unfortunately, perhaps the combination of its seemingly high barrier to entry (do I need to be brilliant at maths? Do I have to be a savant? Those numbers and symbols and colons look scary) coupled with the aforementioned image problem might be a little off-putting for many, despite the almost limitless job prospects and high salaries.
I have no problem being around nerds since I am one myself. That poindexter cliche never mattered to me anyway. Coding, though, was something I always presumed was forever out of my reach. It just looked so alien, like descending into an ancient cave and stumbling upon some lost civilization’s hieroglyphics. Code is a pure kind of distillation of logic, and our common spoken/written languages rarely adhere to logic because they’ve been devised, deconstructed, remodeled and butchered according to our needs over thousands of years. Coding languages do not undergo this process of entanglement, but iterate based on what might make it simple work better or more elegantly, and always with its end game (i.e. whatever it was designed to work with, whether that’s an ugly database or a lovely piece of software with a beautiful GUI).
It was this article from Lifehacker that made want to give it a go, so I took its advice and plunged headfirst into Zed Shaw’s freely available book, deceptively titled ‘Learn Python the Hard Way’. Shaw’s withering, no-nonsense approach to the fundamentals of code has allowed me to drop all the fear and magical thinking I had built up about what is essentially an exercise in learning to apply logic, problem solve, and become adept at proof-reading my own work. Yes, it gets increasingly difficult and complex the deeper you go, as with any new skill, but Shaw manages to be both a reassuring and strict master, telling us not to worry if a piece of code makes no sense right now, but reserving no sympathy for anyone who tries to shortcut their way through it either.
I can look at a clump of python code and at least have a grasp at what it’s trying to achieve. I mightn’t be quite ready to churn out the next Windows, but I've passed that sticky point where it all seemed crazy hard and confusing to feeling like I actually know what I'm doing. I remember watching this video about why people should learn to code, and Gabe Newell recalls the first time he ran a piece of code that produced the words ‘Hello World’ onto a console. That tiny spark of creation is the magic inside code at work, and if you want to think of it that way then I would recommend reading this article on why coding is so often compared with magic, which hints that computer code may provide more clues as to the nature of reality than we think.
Here are some great resources for fearful coding n00bs like me:
- ‘Learn Python the Hard Way’ by Zed Shaw, available for free here
- Code Academy, which offers free courses in many languages with an easy to follow, gamified learning system.
- Cybrary's Python Class
- Github – a repository for programmers to store and share their open source code with the world. Worth a rummage to find beginners’ projects, figure out what others are up to, or just see what kinds of things are possible
It might take years to become a whizz kid programmer extraordinaire (at which point I’ll be more likely nicknamed something like ‘that old whizz man’), but my point is that learning enough to at least know what the hell is making everything happen is nowhere near as abstract as you had built it up to be.