Growing up, I was known for 2 things: acting and writing. In high school, I starred in plays, won medals at speech meets, and was president of the writing club. No one, except a few close friends, even associated me with programming or computers, and I sucked at math! So, when people from my childhood find out what I do for my day job, they often look a little confused. Technical people have the same reaction when they find out that I am also a writer. After all, aren't those two worlds mutually exclusive?
The short answer: No.
A few days ago, a friend on Facebook posted a link to a recent article in the Washington Post regarding a study done by Google on the most important skills for programmers to have. The study concluded that (GASP!) programmers with creative backgrounds were much more effective than programmers who were solely STEM- (Science, Technology, Engineering, & Math) focused. My Facebook friend commented that maybe she would let her son pursue his newfound interest in acting, after all. I told her that she should.
There is a lot of logic in programming, [but] you usually don't think about it while you are doing it.
The thing is that most people think of programming as a purely logical exercise. They figure all you need to be good at it is a ton of math. While it is true that there is a lot of logic in programming (okay, ALL programming is logic), you usually don't think about it while you are doing it, and the fact that programming code is primarily Algebra really doesn’t come into play on a day-to-day basis. Case-in-point, I’d been a programmer for over 5 years before I realized that I was using the very thing I almost failed in high school!
How did I manage to miss the fact that I was using Algebra? Simple: it didn’t look like Algebra. In high school we learned that x + y = z. But what does that mean? What is x? What is y? Who cares? They are just letters without any substance or context. On the other hand, currentAccountBalance + newDepositAmount = newAccountBalance means something and, more important to me, there is a story behind it.
What most don’t realize is that programming is really just storytelling. Granted, all the stories are about data, but they are still stories. And when you can make code do something you didn’t think possible, or when you get past the hurdle that’s been keeping you from accomplishing some task, you feel just as much a rush as when you figure out a character or a plot point. And you better believe that shipping software is just as exhausting and exciting as shipping a finished story.
You better believe that shipping software is just as exhausting and exciting as shipping a finished story.
So, while programming is logical and math-based at it’s core, it is also creative. STEM-focused programmers often get into a rut thinking that there is only a single, logical solution to programming problems. Creative programmers, on the other hand, know that there are hundreds or even thousands of ways to accomplish something. They have that undefinable ability that The Giver called “seeing beyond.”
To fully cement my nerd-cred, I will compare it to Star Trek: The Motion Picture (often known as “the boring one,” though I actually enjoy it quite a bit). In that movie, they encounter a completely logical being: V’GER. The crew of the Enterprise discovers that V’GER is a sentient mechanical construct on a quest to catalog everything it encounters. It has reached the extent of its programming and yearns for the ability to see and to believe in things that stretch the bounds of logic—in other words, it seeks creativity.
While Star Trek is fantasy, V’GER’s plight is a reflection of something very real: logic, as great as it may be, is not enough. Spock isn’t in charge of the Enterprise because he lacks the passion and the creativity to be a good leader. He needs Kirk (they also need Bones, but that is for another discussion).
In my 20 year's experience, programmers that are solely STEM- and logic-focused are also limited. They get stuck in the rut of thinking that problems have a single solution. Creative programmers, on the other hand, can see problems from different viewpoints and angles and can better communicate and work with others, all critical skills for any software developer.
That is why I advised my friend to let her son pursue his interest in acting. The creative experience will be a huge benefit, if, in the end, he decides to go the STEM route after all, and, along the way, he’ll have a lot of fun.