Why I decided to learn to code
2 November 2013
Being a carpenter or a hobbyist woodworker is great; with some materials and tools in your hands, it suddenly becomes possible to mould the world around you, create the very structure in which you are living. The same applies to a potter, knitter, blacksmith, and builder. All these people are makers; they refuse to just consume things that others have made, but rather create things for themselves and others to consume. Some might even be net-creators as opposed to net-consumers, creating more than they consume.
Creation is a better means of self-expression than possession; it is through creating, not possessing, that life is revealed.
Vida Dutton Scudder
However, an ever-larger part of the world around you today consists of not the beautiful atoms crafted by the carpenter, the knitter, or the blacksmith. This part of the world is made up of varying patterns of 1s and 0s. It’s called software.
You probably interact with this part of the world more than you even realize.
How was the last interaction you had with your bank? I’m guessing it took place through software that you accessed through your phone or computer. What woke you up this morning? I hope it was the beautiful sunrise casting through the window blinds, but more likely is that it was software in the form of the sweet alarm sound of your phone. You didn’t check the weather by taking a glimpse outside through the window, but by opening a weather app in your phone or a weather site in a browser. The last interactions that you had with many of your friends were also software-mediated.
From the moment we wake up in the morning until we close our eyes in the evening, we are constantly using software. Some people even track their sleep using software; in effect they are using software pretty much 24 hours a day.
A carpenter can mould the part of the world which is made up of wooden objects. A person who knows how to write code can mould the part of the world which is made up of software. And, like it or not, the software part of the world is growing at a staggering rate. Software is eating up the world. It has already chewed up your calendar, alarm clock, music, photo albums, postcards to mom, shopping, entertainment, tools that you use for studying and at work. The list grows everyday.
Learning to code has helped me to bust the myth of the nerdy computer scientist whose thinking revolves in a different universe from that of mine. At the heart of this art is problem solving, which is something that people in any other walk of life also regularly engage in. I’ve learned that the things that software does are very simple and that the power that it has comes mainly from the speed and scalability that it can perform these simple things.
It takes these very simple-minded instructions —Go fetch a number, add it to this number, put the result there, perceive if it's greater than this other number— but executes them at a rate of, let's say, 1,000,000 per second. At 1,000,000 per second, the results appear to be magic.
I’ve also learned that knowing how to code does not equal being a software engineer. I have some software engineer friends who can pull out stuff that amazes me out of a hat in no time and build complex infrastructures for complex systems. My own skills are more on a level where I can test my own ideas by hacking up a prototype. These prototypes can be quick and dirty, but they are enough to see if something would work or not. I’ve found this skill to be essential if you have some ideas of your own that you would like to see come alive one day.
I went through 3-4 years thinking I was going to meet some magical engineer who would build all the stuff I was thinking about. But I never met that person, so I taught myself ... out of a book and got to work just hacking stuff together. I'm still a really shitty programmer ... but I know enough to hack a prototype together.
Dennis Crowley, founder of Foursquare
Not so long ago (and unfortunately even today in some parts of the world) there was a division between those who could read and write and those who could not. In the future a similar division is likely to exist between those who can read and write code and those who cannot; between those who can manipulate the structure of the world around them, and those who are at the mercy of others who can.
I know which side of the division I want to be on.