Thursday, 22 January 2015

Why Geeks Should Write

(the name wasn't my decision. Personally, I prefer the word "nerd", since I find it has more positive connotations...)

Greetings blogosphere. I am a computer science major at the University of Toronto, with an interest in Linguistics and Cognitive Science. As a part of my introduction to computer science course, I was required to start a blog. It's kinda like being sentenced to community service hours without having done anything wrong. On one hand, you know that it could potentially benefit many people (including the one writing). But on the other hand, there are far better things to do on a Thursday evening than write a blog post only a few people will ever read- one of which is only reading this because they are being forced to (and I thought my life sucked).

Anyways, I can't think of a better way to kick start a computer science blog than to go off on a tangent about how important writing skills are in CS. But first, I would like to address a more general question- what does it really mean to "improve" your writing skills? There are many prescriptive notions of what it means to write well. For instance, If you and me were to get into a discussion about good communication, you might be tempted to dock me some marks for "style" since I used the objective personal pronoun "me" in the subject position. But you wouldn't do a mean thing like that, would you?

In linguistics, one of the most important concepts is mutual intelligibility- the idea that there is a scale in which two people actually "understand" what each other are saying during a given speech instance. Basically, it can go from perfect clarity (where there is essentially a one to one mapping between the concepts in the mind of the speaker and the listener due to the magic of language), to no clarity at all- such as if anyone were to speak to me in a language other than English. In between these extremes, which is where we usually find ourselves, is ambiguity- where we aren't 100% sure if the message we got was what the speaker intended. Now, what does this have to do with computer science? Well, everything! There's a reason we call python a programming LANGUAGE after all. What we do when we program is very analogous to what we do cognitively when we try to communicate with a human being. The only difference, of course, is that computers lack our threshold for ambiguity. See, while humns ar rlatvly god at ndrstndng rlly ambgous sntnces, computers aren't. They lack much of the cognitive architecture humans seem to possess when it comes to the parsing process. Rather than engage in simultaneous top-down and bottom up processing, they just kinda process it all at once. Either they fully get it, or they fully don't. Strictly speaking, they'll never ask you to repeat yourself.

So why should "geeks" write? Because geeks (erm... computer programmers) need to get used to this notion of ambiguity. Our entire careers are contingent on being perfectly understood by a computer at every stage of every program we write. In fact, I recently was having trouble because I forgot to put a closing bracket on one of my print statements. And although the problem was petty- it took me nearly an hour to solve it! I was trying to tell python to print a message, but was not being clear about what it was I wanted it to print. It couldn't tell whether I wanted it to stop or print the rest of the file!

And that is why geeks should write

(As an aside- I purposely did not write anything about how important communication skills were in the workplace because I knew many people were already doing it. I figured this would be more unique. Differentiation is a good policy...)

No comments:

Post a Comment