Why You Must Code
A few days ago, a great site called Code Academy launched. I saw it via HackerNews. It applies a very intuitive socractic approach to teaching programming (using Javascript) that reminded me of my old Logo books.
It also got me thinking about programming in general, and what it entails. What the ability to manipulate the logic of the machine does to the brain and why I think it is important.
First, let me state my opinion up front: if you are making a living using computers, and in your area consider yourself an “expert,” you should know how to program.
Simple. If you are a “social media” expert, a “product person,” and especially anything tied to the Internet, you should be able to program. It doesn’t mean that you will do it for a living, but you should know how, and do so regularly, if only to keep skills up.
I learned to program when I was about six years old using Apple Logo, like most kids of my age. The reason it appealed to me was primarily because it served as a method to let me wield control of the machine rather than the other way around. There was something profound in the ability to make the turtle move. Later when I went into BASIC on the Apple IIe, the power of even something as simple as a control structure or GOTO felt really nice.
I’m 32 now, and by no means would I identify myself as an engineer. I’ve taken exactly one computer science class in my life. However I do consider myself a programmer. I’m not a great one, I admit, but I try to keep my curiosity high and my abilities at a reasonable level. I haven’t made a living as a programmer in six years, but I still, given the challenge, sit and make something. Lately, because of my pseudo-unemployment, I’ve been doing this a lot.
If you work with Internet technology right now, you are working primarily on distilling the complexities of human thought, expression and society into systems and representations that can be manipulated algorithmically. Now, you might say “I connect brands with their consumers using social media tools,” but what you are really saying is “I manipulate consumer desire into text and use semantic filtering to re-represent that text to those for whom it is necessary and beneficial.” And if you are a programmer, you are really saying “I setup an API call to Twitter called by cron, store the results in a database and display it using a simple SELECT statement.”
No matter how abstract our usage of technology, in the end we are subservient to the methods that computers use to understand what we are needing them for: code. Having an understanding of this should cause a degree of influence on both sides: you will think more abstractly about the possibilities of technology, but always be influenced by knowledge of how to make those abstractions a reality.
The understanding and knowledge of how your tools work will make you a better product manager, social media expert, or what not. It’ll make you more tolerable to those who are 100% head down programming, and those like me who are 50-25% head down.
Great post, Ethan. I definitely agree that one of the greatest benefits of understanding code is being able to think abstractly about technology while also keeping in mind how to make those abstractions a reality. As a designer, I find this idea to be increasingly useful.
Learning to program has been a favorite topic of mine recently, largely inspired by Douglas Rushkoff’s book Program or Be Programmed. In fact, I recently wrote a post about the topic as it relates to digital distraction, which you might find interesting:
http://unraveled.com/archives/2011/08/reprogramming-digital-distraction
Absolutely agree, but I’d go one step further.
Irrespective of your trade, if you’re involved in the space you need to hack in your spare time. It’s the “shed” (not sure if that translates to the US) for programmers to build small (or large) apps to do all sorts of weird and wonderful stuff for fun, or kudos, or even money – but most of all, just outside your everyday area of work. Extending your knowledge all the time is vital.
Nice write up sir.
I particularly appreciated this article because of reference to how programming changes your thinking. I like how it changes your real-world logic. If you get to the “next level” of OOP programming, it has the potential to modify simple core thinking habits. So far, it’s done me good.
Thanks for the write-up.