Code is Not Literature
Code is not literature and we are not readers. Rather, interesting pieces of code are specimens and we are naturalists. So instead of trying to pick out a piece of code and reading it and then discussing it like a bunch of Comp Lit. grad students, I think a better model is for one of us to play the role of a 19th century naturalist returning from a trip to some exotic island to present to the local scientific society a discussion of the crazy beetles they found: “Look at the antenna on this...Seibel's observation that reading code is less like literature and more like science is dead on. No matter how readable the code is, when I'm confronted with 10,000 lines of it spread across numerous encapsulated functions, I must tackle it very differently from how I read prose. With a complex literary text, I can just read it in linear fashion with occasional segueing to look up words and concepts, with well-engineered code I must follow numerous cases into different flows of logic. These aren't the same at all.
I appreciate that he's trying to dispel the idea that we "read" code as we read for pleasure, I learn from code by experimenting with it. I open up the debugger and step through it, watch the variables change and see where it goes when I execute it. Most of all, I learn by changing that code and trying to build on it. I have enhanced my javascript skills immensely in recent years by cloning various projects on github and trying to expand on them or adopt them to my own purposes. I don't recommend opening up a code base and just reading it, actively engage it, break it, and enhance it.
Programming as the Fifth Discipline
Seibel: You mention four disciplines: music, graphics, mathematics, and text those are about as old as humanity. Clearly there are powerful ideas there that are independent of computers—the computer just provides a way to explore them that might be hard without the computer. Is there also a set of interesting, powerful ideas inherent in the computer? Is programming or computer science another deep discipline—a fifth area we can only do we have computers? Ingalls: Yes, I think that's wha...Dan Ingalls sees computer programming taught along with math, music, graphics and text, with computers bringing the other four together within it.
Brad Fitzpatrick on What Makes a Great Programmer
Seibel: What do you think is the most important skill for a programmer to have? Fitzpatrick: Thinking like a scientist; changing one thing at a time. Patience and trying to understand the root cause of things. Especially when you're debugging something or designing something that's not quite working. I've seen young programmers say, "Oh, shit, it doesn't work," and then rewrite it all. Stop. Try to figure out what's going on. Learn how to write things incrementally so that at each stage you...A programmer must think like a scientist.
Fran Allen Sees Computer Science as Science
Seibel: Do you think of yourself as a scientist, an engineer, an artist, or a draftsman? Allen: I think of myself as a computer scientist I was involved in my corner of the field in helping it develop. And those were interesting times—the emergence of computer science—because there was a Ic lot of question about, "Is this a science? Anything that has to have science in its name n't a science." And it was certainly unclear to me what it meant. But compilers were a very old field—olde...Allen started out as a programmer, but became a scientist to perform her job well.
Donald Knuth on Getting to the Source Material
Seibel: Do you feel like programmers and computer scientists are aware enough of the history of our field? It is, after all, a pretty short history. Knuth: There aren't too many that are scholars. Even when I started writing my books in 1963, I didn't think people knew what had happened In 1959. I was reading in American Scientist last week about people who had rediscovered an algorithm that Boyer and Moore had discovered in 1980. Ii happens all the time that people don't realize the glorio...The joy of going to the primary documents for understanding how people throughout history thought.