Most of my colleagues in GrantTree do not know how to code.
That's fine. Their job does not involve programming computers, and although there are, I believe, always tangential benefits to knowing how to tell computers what to do, programming is not essential to their jobs and they can be brilliant without knowing how to program.
However, one of the side-effects of the explosion of startups all around the world is that several of these colleagues have already expressed some interest towards various courses that claim to teach someone "the basics of programming", whatever the hell that may be, for a nice round sum like £500 or £800 or thereabouts, in a single day.
The magic wand of bollocks
I know I won't raise any eyebrows in the actual tech scene with this article. Anyone who's learned how to program knows that there's no magic wand that will miraculously teach you how to program in a day, not for £500 or for any amount of money. You can't teach someone to program in a day any more than you can teach someone to ski or write or ride horses in a day. Those things take time. Lessons might help, but at £X00 a day you'll be broke long before you know how to program.
But there are a lot of people who don't know this. This article is for them. If you know someone who's thinking of spending a large chunk of hard-earned cash on the happy-shiny promise of learning to code in a day, please send them a link to this article.
Here's the simple, friendly, warm truth (it's not cold or hard, for once):
Learning to program doesn't cost any money.
Ok, let me qualify that - you might need some kind of programmable device. Any old laptop will do, no matter how decrepit. There are many people who learned to program on calculators. Even the cheapest netbook you can find will do. There is zero correlation between how powerful the machine you're learning on is, and how quickly you will learn. In fact, there might even be an argument to be made for learning to code on an older machine, one from the early 90s with MS-DOS on it. Back then, things were a lot simpler to understand.
Beyond that one programmable device, and a way to access the internet to read up articles about stuff, you don't need to buy anything at all.
Of course, there are many people who will happily try to sell you instant-programming-knowledge-in-a-pill, but they will not be able to deliver, because learning to program is a 10-year engagement and you will not get anywhere useful down that path if you feel you need other people to teach you stuff.
Ultimately, however, no one can teach you how to program in a day. And whatever sliver of tangential, programming-related knowledge they can teach in a day is, in my opinion, absolutely not worth the vast amounts of money requested. The reason is that the only point when you're really going to start to learn to program is when you start teaching yourself to program, and you can do that for free.
How to learn to program
There are many ways that you might teach yourself to program. The paragraphs below outline just one such way, which is the way I usually suggest to people who approach me and say they want to learn to program.
In my view, there is one factor that anyone who wants to learn how to program well must have: a sense of fascination at the idea that you can tell computers what to do.
Steve Jobs called computers a bicycle for the mind. If you can get yourself to the point where you find really awesome the idea of doing brain-work faster by telling a computer what to do, then you will learn how to program. Nothing will stop you, nothing can get in your way, not lack of hardware or lack of knowledge.
Once you have been bitten by the passion bug, you will learn how to program.
So, any early activity should be aimed at finding that bug and getting bitten.
How to get bitten
Each person will naturally be different, but here's a simple approach that should work for most people.
First, find someone in your entourage who does know how to program - ideally someone who's already quite good at it and who's reasonably people-friendly. These days, that's not so hard, as there are many of us "competent programmers" out and about.
Talk to them. Find out why they're fascinated by programming. Find out how the bug bit them. Find out more about why they care, in short. Get interested. Then, when you're starting to feel like what they say sounds pretty damn cool indeed, ask them what they'd suggest you do to get started doing that.
Chances are, whatever they just said is out of your reach, even if it's not particularly complicated for a competent programmer. But they should be able to suggest something you can work on now to get closer to being able to do that yourself. For example, if you want to build your own blog from scratch, someone might suggest that you first learn some basics of programming using one of the Learn X The Hard Way books, and then introduce you to a platform like Ruby/Rails, Python, JS/Node or some other similar thing, and then point you towards the appropriate tutorials and books about how those technologies actually end up producing a website you can deploy and then browse from any computer.
Your path will be entirely unique to you, but the starting point, the initial spark of interest, is what will propel you down that path.
That's all you need to learn to program. A spark. And it doesn't cost any money at all.
If you read this far, you should follow me on twitter here.