Foreword to
Smalltalk Best Practice Patterns
Volume 1: Coding

by Kent Beck
foreword by Ward Cunningham

Ahh Coding.

Coding is the ultimate test of your understanding. Coding will tell you what you know and what you do not. Coding caps a process of discovery, of invention, of decision making. Oh, what pleasure when code falls into place.

Smalltalk rewards those who seek understanding. The radical modularity of its pure objects makes a perfect medium for expressing complex ideas, and for testing them. Of course with tests come the possibility of failure. Perhaps you do not understand as well as you thought. Then what? Well, then you read the code and reason about it and reflect on what it says. The code will tell you what is missing if only you listen.

Kent (your author) and I spent many months in the early Eighties tackling the toughest problems we could imagine. We worked all development phases together: analysis, design and coding. We worked the problems together at a machine, a machine we recognized to be full of potential. We worked our problems in Smalltalk.

Kent and I found Smalltalk could keep up with us. As we discovered something, we put it into Smalltalk. When we decided something, we made sure it showed in our Smalltalk. We were climbing a ladder of understanding. Our code was only a rung or two behind us. We kept it that way. Sometimes it was a rung ahead.

This book tells how to talk to a piece of code. The patterns in this book are the words and phrases you will use in conversation with the Smalltalk machine. Using these patterns you will express your meaning, your thinking, your understanding. As you code with these patterns you will have the Smalltalk machine watching over your fingers. It will warn you when you are unclear.

Yes, it really feels like that when coding. Of course there is more going on in the social context of development than the actual instructing of the machine. The machine is really just a reflector for your thinking, and that of the people around you, and the people before you who took the time to express their thoughts in the code you choose to use. The patterns work because people see and use them. This book is about people even though the patters address code.

Study the patterns in this book. Understand what they say and why they work. Make them yours. Then take your best ideas and drive them through to code. Watch that code grow and flourish. Learn from it, have more ideas, then drive those ideas through to code too.

Kent and I produced fifteen frameworks in as many months. Each work played off the ones before it. They were all useful. They were all used. I continue to draw on the experience gained fifteen years ago. The value of the experience lasts because we drove our thoughts through to code. We made our ideas real, tested and showed to work. We used these patterns reflexively in our coding then and still do now. These are the patterns that turn Smalltalk into an idea machine.

Date: 29 Aug 96 14:36:56 EDT
From: Kent Beck
To: Ward Cunningham

Because of a production screwup, your foreword will not appear in the first printing of the book. I had to choose between having the book at OOPSLA and having your foreword in the first printing and I went with having the book at OOPSLA. I apologize, especially in light of your extra effort in getting it to me.