Monday, July 14, 2008

Computer Programming Vs. The Humanities, Part II


So my new friend, Sanjay, liked by response (found in my earlier post) and ask me so more specific questions...I hope I gave him some specific answers...
Sanjay wrote:
Thanks Kenny for detailed response.
Would you also like to reflect upon  if your background in literature plays any role  in requirement definition phase?   Would you like to recall some specific incidences where the literature training gave an additional edge in any phase of Software Engg?
For quite some time, I have been thinking to propose  educational programs mixing Humanities and Software Engg.   Real experiences like yours will help in building the case.
regards,
-Sanjay

My response:
Let's see, literature and requirements gathering....
Well, with literature, we'd often come to class having read a story/poem/novel and be met with some questions from our prof like "what was the author trying to say?", "what in the author's background might have lead him/her to write this way?", "why does the character behave this way?"  What we couldn't figure out on our own, the prof would help fill in.  In this way we became more adept at asking questions of the text and drawing out the answers.
Often when we meet with our clients during the requirement definition phase, they like are like a poem, explicit in some of their details, yet hiding many others.  Of course, it's not their fault, they just how to explain everything they need from the system.  As programmers in an analyst role, we need to be able to anticipate what other requirements might be hiding beneath surface.  We need to have the ability to ask them more questions and draw out the answers.  Perhaps the training that literature provides in having us constantly asking questions of the text to draw out meaning also helps us in these endeavors.
A quick anecdote on drawing out meaning from a poem, or in this case a poet.  One of my favorite classes was taught by the Chilean Poet, Gonzalo Rojas (http://www.amazon.com/Lightning-Selected-Poems-Green-Integer/dp/1933382643/ref=sr_1_3?ie=UTF8&s=books&qid=1216105264&sr=1-3).  For years the University had asked him to teach a class on his own poetry, but he always declined.  Finally, he agreed and I was one of the lucky ten grad students that was allowed to take the class (though, usually about 10 to 20 other students stood in the conference room just to hear him speak).  Anyway, I recall one time we were discussing one of his poems and one of the students said "Profesor Rojas, when you wrote this line, did you mean to say..." and he went on with his explanation, the details of which I cannot recall anymore.  When the student was finished, the poet sat back in his chair and thought about it for a moment, then he responded "yes, you are right.  That is probably what I was trying to say.  I never realized that before".  I learned a lesson that day, that even great artists don't always know the whole meaning of what they produce.  Likewise, I have found that clients don't always know the whole list of requirements for the system the are asking us to build.
Another practical application of literature classes to requirements definition is the idea of "brain storming" that is common to both literature and software development.  Before we ever start writing a paper for a literature class, we are asked to jot down ideas, any ideas that come to us.  Even if these ideas seem stupid.  At the brainstorm phase, there are no stupid ideas.  I do this all the time for software development too.  After all ideas have been exhausted, we then start sorting them out into related ideas.  The ideas often form our paragraphs in writing and our subsystems or classes or data tables in software dev.  We then look for the details that become the sentences of our paragraphs for literature or the functions/methods/fields/procedures in our computer system.
Anyway, I hope that helps...
Kenny

Sunday, July 13, 2008

Computer Programming Vs. The Humanities


I responded to a question someone raised on LinkedIn and I'm cross-posting it here on my blog. It's a topic I've discussed with bosses, clients, co-workers, and friends through the years.  "How are you a computer programmer, when you studied Latin-American Literature in college?!? Did your college education help you at all?!?"

The original question: "Are humanities useful for computing engineers?" [sic]

My response:
I seem to find myself in this discussion quite often as I have a Master's Degree in Latin American Literature, but have been working as a software programmer for over ten years now.

I'll lead with what seems to be the most convincing argument: the brain is like a muscle and needs routine exercise to get stronger, or at least to stay in shape. Just as your muscles in time will adapt to the same daily exercises and receive less and less benefit from that exercise, your brain starts to tune out repetitive thought processes. Giving your brain some different types of problems to think about helps it get stronger. The Humanities can offer very different problems than what your "engineering" brain is used to. Your stronger brain can then help you out more when it comes to figuring out that next algorithm.

Secondly, our work as programmers (and other engineers) requires us to be creative. Nearly every day we are faced with a problem we've never encountered before. From architecting a huge inventory system to fine tuning a long running function, the fun part of our job is making things and watching them work. The problem is… I don't think creativity can be taught...I believe it grows through inspiration, and inspiration comes from experiencing the creativity of other talented people. The Humanities have been pretty good about letting time sort out the great, creative minds of the centuries. The guided study of the Humanities (whether formal or otherwise) allows us to appreciate even more what makes these great minds so great.*

Number three...research and organization. My clients and past employers always seem to get a kick out of the fact that I studied Spanish Lit, and ended up programming computers. My usual response is, "hey, whether it's Spanish or SQL, French or C#, they are all languages, right?". Then I usually tell them that the single most valuable part of my college education was that d#@% Thesis paper I had to write. When you write a Thesis (usually over 100 pages long), you are expected to become the authority on the very narrow subject you carved out for yourself. My Thesis chair pointed me in the right direction with a couple books to read first and then said essentially "you need to become the expert now...figure out how to become an expert..." Well, I found that meant doing a lot of research. In the days before Google, I learned how to follow a trail of one author quoting another, then finding the second author and reading his or her references, and so on. This skill has helped me immensely as I now have the Internet at my finger tips and am constantly looking up how to troubleshoot problem X or how to use the methods of class Y. I've even picked up whole languages (like javascript and python) through internet research. I'm convinced that the Humanities, more than any other discipline, help you learn how to learn.

Oh, I failed to address "organization" in that last paragraph, but that paragraph was getting entirely too long (just like this response as a whole)...ANYWAY!...the Humanities demand that you write, and write a lot. I also usually end up explaining to my amused clients, bosses, and colleagues that the d#$% Thesis also forced me to learn how to organize my thoughts. To take something big and overwhelming and to break it into smaller parts, and then break those smaller parts into even smaller parts, and on down until things are manageable. And that is the same exact process I use when I'm faced with a new project. The client has a rough idea of how they want the system to behave, but no idea of how to get there. That's when I grab a pen and paper and find a quiet area to start thinking the problem through. I'm telling you, the process is nearly identical to writing a big paper, only, to me, the satisfaction of watching your program run is greater than seeing your paper published, which is why I ended up a programmer and not a professor. ;)

OK, one last argument and then I'm going to bed. I've already eluded to it...Communication. Because you write so much in the Humanities, you just naturally become a stronger writer. And judging from so many confusing, rambling, and/or scatterbrained emails I receive, the business and computing worlds both need stronger writers.

Whew! 

Oh yeah, then there's also the whole "Humanities brings richness to your life" thing that has been true in my case, but who am I to say that it will for others?

I guess to the engineer who hates the Humanities and stubbornly takes only the required classes, there's not much I can say. If coerced, your benefits are probably minimal.

I hope that helps, Sanjay.
 
~K


_______________________
 
*Look at me, I didn't even use the worn out and (by now) meaningless business-speak phrase "thinking outside the box". Let's face it, "thinking outside the box" just means "creative".