This is a quote from the textbook we used in the Programming Languages course I took in college: “It is widely believed that the depth at which we can think is influenced by the expressive power of the language in which we communicate our thoughts. Those with a limited grasp of natural language are limited in the complexity of their thoughts particularly in depth of abstraction. In other words, it is difficult for people to conceptualize structures they cannot describe, verbally or in writing.” – From: Concepts of Programming Languages; by: Robert W. Sebesta
I believe that has we progress in our professional careers as software engineers, system architects, and development managers, we learn certain patterns, and no matter how creative we are, we slowly start to normalize into a recognizable pattern of designs, coding concepts, languages, and project management techniques, that peers can look at and say, “Yes that has the mark of [INSERT YOUR NAME HERE] “.
It’s not that we get lazy, or lose our creativity, I just believe it’s human nature to fall back and lean on what we have learned “works”. And there’s really nothing wrong with that in itself (we obviously fall back on our education and values we have picked up from our family, friends, churches, and cultures, constantly over our lifetimes), however I believe as creative individuals, programmers and people who are at their heart programmers, need to stay creative, not only for their jobs but for their own sanity.
As Robert Sebesta has said, our thought processes are limited by the language we know. I believe it’s not only written language but also visual representations as well, and how we can use those “thought elements” or our vocabulary both in the written/spoke language sense and visualized elements to create new and amazing designs, systems and applications. Although in programming, eventually we need to describe these designs using words and math. Especially if we are working in teams, and need to produce readable, reusable, and maintainable code. See my article on “SFEMS – Stable, Flexible, Extensible, Maintainable, Scalable“. As good programming citizens we aren’t supposed to start naming everything a, b, c, a1, i2, j, k, etc…
So how do we stay fresh? Is it merely a matter of reading new books and watching the same types of movies we always have? No, I think this is the trap. We need to Expand our Minds. We need to “Free our Minds”, yes, from the Matrix. If our creative thought processes are limited to the language elements we know and understand, then, if we limit our input of new data, vocabulary, stories, music, and visual imagery to those same basic genres, that we always watch, read, and otherwise consumed, then we really aren’t going to expand our base knowledge stores that our creative parts of our brain randomly and so naturally pull from to create new and interesting ideas, designs, and in the case of programmers, new systems and applications.
I love the quote from Doc Brown in the Favorite movies of all time “Back to the Future“, where he tells Marty “You’re Not Thinking Fourth Dimensionally.” (Although he doesn’t say this until Part III. Check out FuturePedia on the Fourth Dimension.) While he of course is referring to time as the fourth dimension, I’m thinking of this quote more generally, to mean, we aren’t thinking outside of our normal frame of thought. We aren’t considering new and different ideas, movies, music, art, books, and other information sources during our programming down time in order to expand our “thought element vocabulary”. Again what I mean by thought element vocabulary, is our knowledge base of ideas and concepts that we use to create and design and express ourselves in programming.
I believe the exposure to information sources that we already enjoy does not expand our minds after a few decades of consuming these books, comics, movies, etc, instead we need to look to other genres, and even activities to further expand our minds.
If you are a sci-fi fan, how predictable are the plot elements to you? Here and there, you will find something absolutely surprising, but for the most part, after a couple of decades of consuming all the sci-fi you can, you probably will see patterns in the storylines, and I’m pretty sure you make comparisons how one movie just ripped off half the story from another, or complain how there’s really nothing new out there and Hollywood just sucks (while I don’t disagree here ).
So what I started to do, is started reading and watch different genres of books, comics, and movies. I have also started to try to pick up new activities as well. Example: If you are a gamer, how long have you been playing games? In my case it’s since the mid-1980’s. While I’m not saying to stop playing games, all I’m saying is to try something new. For example, recently, I pick up drawing and reading up and practicing meditation.
I believe learning these new activities and consuming these new genres will help me to expand my mind, and keep my creativity fresh and exciting. While I’m not saying or encouraging you to pick up something that you feel you would never like, I’m sure their other genres and activities out there that you haven’t tried yet, and would find enjoyable.
I also want to encourage you to day dream a little more. I remember as a child I would love to day dream about new inventions, and space adventures, saving the world, etc. I think half of my ideas have some correlation to my childhood day dreaming. I now see it as some sort of meditation. Of course as adults, we can’t day dream at work like we may have done in the classroom from time to time, or can we?Just Another Stream of Random Bits… – Robert C. Ilardi