TITLE: Two Things, Computing and Otherwise AUTHOR: Eugene Wallingford DATE: June 16, 2007 3:34 PM DESC: ----- BODY: My recent article on Alan Kay's thesis incidentally intersected with one of those blog themes (er, memes) that make the rounds. Kay brought out two essential concepts of computing: syntax and abstraction. Abstraction and the distinction between syntax and semantics are certainly two of the most important concepts in computing. Charles Miller takes a shot at the identifying The Two Things about Computer Programming:
  1. Every problem can be solved by breaking it up into a series of smaller problems.
  2. The computer will always do exactly what you tell it to.
That first one, decomposition, is closely related to abstraction. When I followed the link to the source of the The Two Things phenomenon, I found that my favorites were not about computers or science but from the humanities, history to be precise. These are attributed to Jonathan Dresner. Here are Dresner's The Two Things about History:
  1. Everything has antecedents.
  2. Sources lie, but they're all we have.
Excellent! Of course, these apply to the empirical side of science, too, and even to the empirical side of understanding large software systems. Consider #1. That Big Ball of Mud we are stuck with has antecedents, and understanding the forces that lead to such systems is important both if we want to understand the architectures of real systems and if we seek a better way to design. All patterns we notice have their antecedents, and we need to understand them. As for #2, if we changed 'sources' to 'source', most programmers would nod knowingly. Source code often lies -- hides its true intentions, masks the program's larger structure, misleads us with unnecessary complexity of embellishment. Even when we do our best to make it speak truth, code can sometimes lie. As a CS instructor, I also liked His The Two Things about Teaching History:
  1. A good story is all they'll remember, not the half hour of analysis on either side of it.
  2. They think it's about answers, but it's really about questions.
This pair really nails what it's like to teach in any academic discipline. I've already written about the first in All About Stories. As to the second, helping students make the transition from answers to questions -- not turning away from seeking answers, but turning one's focus to asking questions -- is one of the goals of education. By the time students reach the university these days, the challenge seems to have grown, because they have grown up in a system that focuses on answers, implicitly even when not explicitly. I'm not sure any of the entries on computing at the The Two Things site nail our discipline as well the two things about history above. It seems like a fun little exercise to keep thinking on what I'd say if asked the question... -----