If you work in the tech industry, you might be familiar with the popular buzzword “usability.” Although designers and engineers use this term to evaluate how easy their tools or processes are to learn and use, the strategy for achieving usability can be an abstract mystery.
Here’s the most vivid way I can describe usability in action: in the movie Temple Grandin, the titular character crawls through a claustrophobic tunnel on a ranch where cows are prodded and dipped in pesticide to eradicate ticks. She experiences firsthand the ways in which the tunnel violates cows’ natural instincts, scaring them with glints of lights and unnatural direction changes. Later, Grandin redesigns a slaughterhouse to account for their natural sense of direction, and the cows are gently guided to their deaths. They get a dignified ending, and people can enjoy high-quality beef from relaxed cows.
Last semester, a question suddenly occurred to me: “what were my top five favorite classes at Berkeley?” At the time, I was learning about sorting algorithms through Josh Hug’s fascinating online lectures. For some reason, I was especially mesmerized by the shell sort.
When I tell people that I consider myself a logical person, they sometimes ask why I’m not more involved in engineering or math. After all, people usually associate “logic” with mathematical proofs that show you how to get from “ABC is a right triangle” to “a2 + b2 = c2.” But math and science don’t have a monopoly on logic. The more I study programming, the more I appreciate writing as a logical activity. Here’s how some principles of logic and engineering apply to the writing process:
I figure the completion of my final assignment this semester for Computer Science 61A (the introductory computer science course at UC Berkeley) is a reasonable checkpoint for me to reflect on my involvement in programming. For our last class project, the last few lines of directions read “Assuming your tests are good and you’ve passed them all, consider yourself a proper computer scientist!” Sadly, I failed all the tests for the extra-credit question. Even if I had aced every problem, I don’t believe that adding tiny bits of code here and there to the massive skeleton provided by the course instructors necessarily qualifies me as a “proper computer scientist.” Heading into the future, I want to cling to Professor DeNero’s hand, crying “Don’t leave me!”