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.