Why Programming Is the Best Thing Ever

hourofcodeThe “Hour of Code” is a nationwide initiative sponsored by Computer Science Education Week and code.org to introduce millions of people to computer science by introducing them to the art and science of writing computer code. There are plenty of other sites where you can pick up some programming, including checking out a few videos about Python at the Lewis Computer Science website. Take an hour, geek out just a little, and write some code that actually accomplishes something. You’ll be a programmer in virtually no time.

My question is, “Who in their right mind would stop at an hour?”

To me, few things are more rewarding intellectually than writing code. And, to be honest, few things are more addictive.

After my freshman year of college, I returned from the Big U determined to change my major. I was majoring in Electrical Engineering, but I didn’t like it much. Numbers didn’t stir my passions; words did. I wanted to be a writer, a writer of fiction, in fact. I had always loved to write. So, I walked up to my dad and told him that, after weeks of thought, I was going to switch my major to English. In one of those “tough love” moments, my dad expressed his support for my decision, but said that I’d have to pay for it myself.

I am grateful to my father for that decisive non-ultimatum he offered. Electrical engineering was my ticket to a career, as well as to a more favorable salary bracket. I knew early on, however, that it wasn’t going to make me happy. I rode the Electrical Engineering horse all the way to the Ph.D., but only because I knew that, since I didn’t want to do electrical engineering for a living, I could always just teach it. We make interesting sacrifices in our quest to force the square do-hickey into the round thingamabob. Pursuing the terminal degree in a field that didn’t excite me so that I could prepare others who were excited about it was mine.

But I was lucky. Along the way, I discovered something peripherally related to electrical engineering that I not only liked, but loved; something I could see myself doing for the rest of my life. My dissertation advisor founded a software company, and he asked me to be part of it and to help develop the product. He needed me to be a software developer, a programmer, a computer whisperer, a code wizard, a hacker; whatever you call a “god who speaks the computer’s language”, he asked me to be it. I took up the challenge, and my notion of what I wanted to be when I grew up was suddenly thrown into sharp relief.

It turned out I could be a fiction writer and an artist and a storyteller after all.  But I could also be a technogeek, a left-brained logician, a puzzle-solver, and an engineer, too, so that I could could still launch that well-paying, there-for-the-taking career my dad wanted for me.

Exactly how was I going to be both? Simple: I was going to code.

(Cue the sound of angels and trumpets.)

I love to code. Let me say it again. I love to code. To me, coding is nothing more than the act of writing a story. As the author, I decide the plot, and I identify the main characters who will carry it out. I have a starting point, which is the information I know and the constraints and situations I must obey for the story to reflect the world in which the story will unfold. I decide the plot’s twists and turns. I create the opportunities for the characters to communicate and collaborate. I build the walls between characters that give them the space they need to stay true to themselves while remaining productive and useful to those who call on them. I create the escape routes for the story’s heroes to take when trouble brews. I create a back story for each character that enables him or her to borrow from the time-tested greats in their family who first established their clan’s ways of doing things but also gave their descendants enough leeway to innovate and freestyle.

My stories deftly explore the politics of delegation and collaboration, the efficiency of tit-for-tat pay-to-play. And my yarns have plenty of models, lots of views, and an assortment of puppet-mastering controllers. My works aren’t dime-story mysteries or Harlequin romances. They are rich stories that convey valuable ideas to readers (users) who consume them to satisfy a variety of needs that must be met simply and swiftly.

When I’m really on my game, my stories remain ones my audience will want to read even as their lives change and their needs evolve. With a minimal amount of rewriting and reinterpreting, perhaps recasting certain characters in different roles, I can achieve a more elaborate but related set of outcomes, moving the plot in exciting directions that had not been imagined at first, but that reveal lessons that remain relevant as time ticks by. In other words, my stories stand the test of time because I skillfully wrote them that way.

What’s most remarkable, however, is that I don’t write these stories in imprecise and verbose languages that make everyday communication colorful and nuanced. I write them in languages that use a much narrower set of nouns and verbs, along with a lot of curious punctuation. And yet, I contend my code-prose is pretty. It uses just enough words to communicate its intended meaning, no more, no less. Its terseness is part of the key to its flexibility; its economy makes possible its extensibility. In fact, code geeks have a surprising word for this kind of code: they call it “elegant”. When was the last time your read a book review that commented on the elegance of the author’s prose?

To code is to create. We spend our lives creating things, because creating things brings us fulfillment. You never get your fill of fulfillment.

An hour of code? Ha! Make it a lifetime.

About Ray Klump

Professor and chair of Mathematics and Computer Science Director, Master of Science in Information Security Lewis University http://online.lewisu.edu/ms-information-security.asp, http://online.lewisu.edu/resource/engineering-technology/articles.asp, http://cs.lewisu.edu. You can find him on Google+.

Leave a Reply

Your email address will not be published. Required fields are marked *