I am a designer and developer and content strategist. I use my experience as a magazine art director and web editor to help publishers, marketers, non-profits and self-branded individuals tell their stories in words and images. I follow all of the technologies that relate to the content business and try to identify the opportunities and pitfalls that these technologies pose. At the same time I am immersed in certain sectors through my content practice and am always looking to find connections between the worlds of neurology, economics, entertainment, travel and mobile technology. I live near the appropriately-scaled metropolis of Portland, Maine, and participate in its innovation economy (more stories at liveworkportland.org. A more complete bio and samples of my design work live at wingandko.com.

Learn To Code #2: The Many Reasons Why We Must Program (And The Few Why Not)

So, do you really have to learn to program to participate in 21st century society? Absolutely not, you can be as analog in your life as you can get away with and still put food on the table. But the significance of code literacy in contemporary culture is about more than personal lifestyle choices. We are all now immersed, if not in code itself, then in the effects of code on everything around us.

We have even reframed our conception of the analog vs. the digital. Are our “codes” just simplifications that attempt to describe nature, or is nature itself the playing out of “codes” that are complex beyond our understanding? It’s an important philosophical question, but in practical terms, we manipulate our abstractions through programming at whatever level of approximation we are working at.

In fact, all programming exists at a certain level of abstraction, from machine language on up to preference settings in consumer user interfaces. The geeks below create layers of abstraction for the geeks above. Geekiness can be defined as a willingness and a zeal for engaging with things abstractly and programmatically. As such, it exists in every area of human endeavor. The consumer’s first response to a new iPhone is, “how can I use this thing, now,” while the geek’s is, “what can I program on this thing?”

So the two important points about “learning to code” are finding what you are already geeky about and discovering how, at what level of abstraction, you enjoy engaging with it. Anyone who has learned how to program or how to use professional level programs will tell you that you need to have a project to pursue. You need to have something you are trying to do in order to learn how to do it. Simply reading books or doing exercises, no matter how well crafted, will not get you there.

And this necessity, in itself, gets to the biggest reason to learn to code—to create value with your own ideas. It is often said in startup circles that the execution of an idea is worth much more than the idea itself, usually by a factor of 10 or more. From another perspective, this means that an idea expressed in code is more valuable than an idea as words or diagrams alone. Once you write something as code, others who can read code can evaluate it and see if you indeed have a unique idea that can generate value.

As Douglas Rushkoff writes in his brilliant manifesto, Program or Be Programmed, the hacker ethos that led to all of this digital technology is no longer present for most users. We are like the passengers in those new Google cars, being driven about by our own inferred preferences. Rushkoff suggests we consider putting our “own hands back on the steering wheel of our civilization.” In less grandiose terms, this means engaging with the biases that have been coded into our technologies, thinking about them critically and creating our own counterbalances where we deem necessary.

At first, you will write bad code, and you will most likely never write actual “production code.” That’s what engineers are for. But if you can learn to think in code, you can have conversations with others who think in better code, either directly, or through using their code.

Again, music is a relevant example. You can learn to use Garage Band without knowing how to make original instrument sounds or being able to create the music that you can sample. But you can put together something unique through how you work with the musical content of others. And as you do so, you are having a conversation with these musicians through the music you are sampling. These internal conversations enable you to understand how other people make music and zero in on what you want your own music to sound like, both in imitation of and contrast to the music of others. [Please see my story about and interview with Gregg Gillis of Girl Talk for more on this idea]

Programming works this way, too, and this is why the open source community is so important. People share their code to demonstrate their skill and to express their ideas. They contribute to open source projects, as well, to participate in problems larger than they can solve themselves, and to learn how other people solve problems.

The biggest problem to overcome in learning to code is what I’d call NFM, not for me. We can get trapped in alternating delusions of grandeur and delusions of worthlessness: programming is for other people to do (it’s beneath me) or it is for other people to do (I can’t understand it). The truth, as usual, falls somewhere in between. There is an appropriate level of programmatic thinking relevant to your mind, and engaging with it can make your ideas more valuable in a social context.

On a social level, too, we have to get over this duality between liberal arts and the sciences. The sciences are more rigorous in many ways than the arts because they explicitly rely on standardized vocabularies that facilitate collaboration. Many people with liberal arts training do not realize the “codes” that they use or the ways in which the idiosyncrasies of their vocabularies actually inhibit collaboration. So, learning to code, for liberal arts types (myself included) involves engaging with the rigors of logical vocabularies and methods—in order to better communicate and express ourselves.

Once you see this, it’s just a matter of time. Programming is no longer NFM, but NFMY (yet.)

Post Your Comment

Post Your Reply

Forbes writers have the ability to call out member comments they find particularly interesting. Called-out comments are highlighted across the Forbes network. You'll be notified if your comment is called out.

Comments

In this era of MOOC there is a mad rush to learn programming. Nothing wrong with that though. I am going through the same path. I totally agree with your that no matter what course you take and what books you read but if you don’t have a project in mind which can demonstrate your learning then learning to code is just meaningless. Moreover people who are learning to code (from scratch) should also find enough motivation to keep them on this path of learning.

I guess soon GIT will replace the resume for software professionals coz people who will hire you will be more interested to see what you’ve built instead of seeing what you’ve read/know.