Issue #25: Smalltalk,  Library

Kent Beck

Kent Beck might deny that Kent Beck needs an entry in the programmers’ library. “All I did was rediscover what other people had done before,” he might say, or “all I did was to interpret what Ward Cunningham was doing.” But that discovery, that reinterpretation, is the most important part of the process. One person doing things differently is an oddball. Two are the beginning of a revolution.

This being the Smalltalk issue, I will start with one of Kent’s books that deserves a wider audience: the freely-available “Smalltalk Best Practice Patterns” (STBPP). Kent explained that when coding Smalltalk, he built a collection of index cards that described design changes he could make to his code. If he was unhappy, he would riffle through the cards until he found a technique that might improve his work. The book represents a description of these techniques.

The word “patterns” appears in the book’s title as an example of what pattern languages in programming had been before everybody focused on the narrow collection of implementation patterns in the Gang of Four book. Any time there is something you need to do multiple times, and need to communicate to someone else that you are doing it or think they should do it, name it and describe it as a pattern. You are not limited to Abstract Factories and Singletons: Guard Clause is a pattern, and so is Intention Revealing Selector.

STBPP would have reached a broader readership and had more influence under the title “Pragmatic Refactoring”, but neither the name refactoring nor the “pragmatic” series had yet been created. It is not so much a book about things to do in Smalltalk, as a book about things to do when designing a program by building it.

Of course “designing a program by building it” also did not yet have a name when STBPP was written in the 1990s. That would come at the end of the decade, when Extreme Programming was explained in “Extreme Programming Explained“, by Kent Beck. XP would be one of the key influences behind the Manifesto for Agile Software Development, a highly-influential document that counts Kent Beck among its co-authors and signatories (though he claims to have been ill and spent much of the time in his hotel room).

What have I missed out? Test-Driven Development. CRC Cards. Test && Commit || Revert. Explore, Extract, Expand.

Thanks, Kent.


Graham is a senior Research Software Engineer at Oxford University. He got hooked on making quality software in front of a NeXT TurboStation Color, and still has a lot to learn.