When I started an engineering program, I was totally caught off guard by how much I like programming, but you’ll probably need to know a little bit more about me to understand why that was so surprising.
I’m a sophomore in Chemical Engineering, but for five years between high school and starting at Northwestern, I was a ballet dancer and musical theatre actor. I initiated the career transition because I realized that my love of dance was based more on its scientific, technical study of movement rather than its artistry, but I’ll blog more about that later.
When I decided to start college, I wanted to get back into hard science, but I also wanted a way to apply the creative skills I’d developed as a performer. Those criteria led me to try engineering, but I was still nervous about that choice because I don’t fit the tinkering, tech-wiz mold that comes to mind with the profession.
Engineering, though, has turned out to be a great fit for me not just for its applications of interesting physical phenomena but also for some of the tech tools that had previously intimidated me such as writing a computer program.
Programming in the 21st century can actually be more of an application of writing skills than number crunching thanks to the plethora of user-friendly compilers. A compiler is software that translates a document written in a programming language into a sequence of ones and zeros called binary code. Computer hardware can then execute binary code by switching current on or off through its intricate network of circuits.
So with a compiler that can interpret words into binary, coding projects remind me a lot more of essay assignments from French class than any math class, but that could partially be due to my French teacher; she could catch every single ambiguity or mistake without fail, just like a compiler will hiccup with any inconsistency in your code. My point, though, is that learning the vocabulary and syntax of a compiling language isn’t all that different from learning any other language, there’ll just be more punctuation marks.
I’ve realized, though, that the reason I truly love programming is because I love telling a good story, something I was doing constantly as a performer. Good storytelling is hard; it’s a struggle to externalize the complete story coherently because it’s already clear in your mind. Being able to line up a beginning, middle, and end for an external reader with seamless transitions throughout is just as necessary when writing code for a compiler.
There’s an end functionality that a coder is trying to achieve, but the compiler starts at the beginning and can’t leap any gaps along the way. It may then seem that the process of writing for an automaton is devoid of the style, insinuation, and subtext of good prose, but the object-oriented, referential nature of programming languages allows ample opportunity for clever complexity.
I’ll attempt to show you what I mean by writing an Jane Austen-inspired story in the programming language I’m most familiar with, C++.
In this example, heroine and heroine_mother are class objects, which in C++ are a way to create names that indicate specific rules and behaviors just like storytellers create characters. The components and actions that belong to a class object like “husband” and “fret” would be coded in an earlier section that corresponds to the exhibition of a story. Each of the lines above is thus associated with an enormous amount of meaning just as a few lines of a story can use symbolism, allusion and metaphor to deepen a reader’s understanding.
With all of these similarities, I think the software industry would be strengthened by cross-pollination with literary fields. Literature provides masterpieces of storytelling for coders to be inspired by. There’s also an untapped talent pool of creative people who are intimidated by the portrayal of algorithms as math. I used to be intimidated too, but after taking the leap of faith, I can see that it was just between two sides of the same coin.