Wednesday, October 05, 2011

How the Knight-Mozilla Hackfest in Berlin changed the way I think about programming

#Hacktoberfest left me feeling mushier than this plate of potatoes and mystery green goo. I want to give a group hug to the world! (Image credit: Flickr user russeljsmith shared with a Creative Commons license)
At least week’s hackfest, I saw so many people celebrating the simple act of creating something that actually worked. It’s a marvel. But the coolest part about this -- and bear with me as I get all mushy here -- was how the act of making something brought people together.

People are makers. We can’t help it. But why? Why do people write, bake, program or paint? 

Here's my best guess: Our minds are lonely places where our thoughts languish. Until, that is, we can turn them into essays, pies, code, pictures -- something another human being can interact with. Making -- whatever it is you make -- is a way of connecting.

Once we know how to make something, we understand it better. We understand the person who made it better. And we understand ourselves better. By learning new ways to make things, we expand what we are able to imagine. The world of possibilities explodes.

Let me defer to my favorite episode of Radiolab to explain. Words. Go listen to it. Right now. Please.

For those of you disregarding my advice...shame on you! But here’s a quick summary: Words aren’t just words -- they are ideas. Before we have the words for a concept, we don’t have the ability to understand it. This has been shown with spatial concepts, time, empathy, all kinds of things. Our ability to think is inseparably bound to language.

What does this have to do with programming? At last week’s hackfest, I realized that programming is the same as writing. Or rather, I was able to map the programming process -- which, previously, I'd found daunting and unwelcoming -- onto a process of making that I find intuitive: writing.

Writing is thinking. And so is programming.
Language expands our capacity to understand and interact with the world as beings who can write and speak. And new skills -- for example, programming -- expands our capacity to understand and interact with the world as beings who can make and create. Last week, by getting better acquainted with some of the basic building blocks of a program -- code, logic, how different elements interact -- I was able to imagine possibilities that I couldn’t before.

And that’s why I want to learn more. Now I’m hooked.

I’m inspired to continue to expand my skills as a programmer -- which is really just expanding my skills as a thinker and a maker. So what are my next steps?
  1. I’ve been working through Nathan Yau’s new book, Visualize This. I’m about halfway through, and my feet are appropriately wet with some Python, JavaScript and R. I want to keep going. Then go further.
  2. I started an intro to computer science class from MIT’s open courseware. I really enjoyed the first problem set. A lot a lot. But then I stopped. So I’m going to finish it.
  3. I want to apply what I’m learning through real projects. For me, that probably means data visualization.
Any other suggestions?

I’m amazed the diverse backgrounds of the #hacktoberfest participants. As Nicola mentioned in her blog, many people who are verifiable coding ninjas don’t have any formal background in CS or don’t work as programmers. So, it’d be interesting to, as a way of motivating others to take the plunge, collect stories about how people got into programming.

Here comes the audience participation part:
  • How did you first learn to code?
  • What was the first piece of code you wrote that you were really, truly proud of?
Maybe if more people heard those stories from seasoned (and enthusiastic) programmers, they might understand why it's a skill everyone can benefit from learning.

1 comment:

Shin no Noir said...

How did I learn first to code? I can't really remember. I do know I was already programming when I was about 11 yo (in Visual Basic). Before that, I was writing various MS DOS batch (.bat) scripts for installation: startup menus, installation scripts, a nicer front end for ARJ, etc.

Most of what I learnt was through exploration, but at one point I did buy a book (an introduction to VB).

Now, because this is such a long time ago, I can't really remember what my first piece of code was that filled me pride. However, I do think you should feel proud each time you manage to accomplish something nice you haven't accomplished before.

For me, one of those moments was when I managed to create a (point and shoot) game when I was 13-14 years old. It was the first time I created a relatively large program which required me to write some serious notes on paper first before coding some parts.

Now looking back 12 years later, the game is not really special. I'm also pretty sure I'd cringe if I'd look at the code I wrote back then, but it wouldn't be fair as I'm now far more experienced. The most important thing is, like always, to learn from the journey.