Putting a Face to a Name

2008-08-07 – 04:45

I had the pleasure yesterday of finally meeting Michael Feathers, author of one of my favorite programming books, and a contributor to Beautiful Code. Along with a couple of other people, we talked for a bit about unwritten books, software design, and the fact that discussion about the latter seems to have stagnated. A lot is still being written about how to put code together, but I can’t remember the last time I heard someone say something on the subject that was genuinely new.

One thing that was new (at least to me) was Michael’s observation that refactoring pure functional code is a lot easier than refactoring imperative code. Like a lot of people, he has been messing around with current-generation functional (or nearly-functional) languages, and he has discovered that when you take side effects away, reorganizing code becomes much, much simpler. I’m still not convinced that Erlang, Haskell, or F# is actually going to be the next big thing, but hey, I’ve been wrong before…

Another thing that came up was a way of teaching students how to navigate large code bases. The idea was to give a good developer some code she had never seen before—some big code, not just a screenful or two—and make a screencast of her thinking aloud as she figured out just enough about how it worked to make a simple change. I would use videos like that in my software engineering courses (and not just because it would save me having to make up a lecture or two); I’d also watch them myself, and I expect that most students who were about to start interviewing for their first jobs would want to sit through them as well. Anyone know of anything like this out there already? Or if not, would anyone like to volunteer to make one?

  1. 5 Responses to “Putting a Face to a Name”

  2. The Association for Software Testing (AST) latched onto this idea a year or so ago. At the 2007 conference there was a testing competition and as part of the submission process you needed to have your bugs and bug finding techniques videoed. The videos and all the other associated documentation can be found online for free at http://www.associationforsoftwaretesting.org/drupal/CAST2007/Challenge.

    -adam

    By Adam Goucher on Aug 7, 2008

  3. If you were to pick a bug in some large python codebase and make a challenge out of killing it, I would try to participate.

    By Bill Mill on Aug 7, 2008

  4. I like the idea. vim + ctags + grep + id-utils = very nice toolkit for navigating a large unfamiliar code base. Screencast-recording tools for Linux, on the other hand… :(

    By Marius Gedminas on Aug 7, 2008

  5. “Another thing that came up was a way of teaching students how to navigate large code bases. The idea was to give a good developer some code she had never seen before—some big code, not just a screenful or two—and make a screencast of her thinking aloud as she figured out just enough about how it worked to make a simple change”

    Brilliant, really. When can we watch a screencast of this?!

    By Dave Cooper on Aug 7, 2008

  6. How many kinds of “Beautiful Code” have been published?Got confused.
    http://www.scribd.com/doc/7399295/Beautiful-Code-Minibook-by-InfoQ

    By Ran on Oct 23, 2008

Post a Comment