Published: 25 Jan 2008
By: Alessandro Gallo

Alessandro Gallo reviews the latest book by Kent Beck.

Introduction

Kent Beck, the father of Extreme Programming, is considered one of the pioneers of modern software design methodologies. His research represents a substantial contribution to the fields of agile processes, design patterns and test-driven development.

Beck's latest book, Implementation Patterns, is a collection of patterns aimed at solving common problems that the programmer faces when writing code. I like to think of these as "low-level patterns" because they target problems at the statement level.

In fact, this book tells much more than just discussing coding strategies. Let's dig a bit deeper.

Code as a communication medium

This book provides answers to common questions like: Should I use an abstract class or an interface here? Is inheritance a good choice in this case? What kind of collection should I choose? What are the best approaches to deal with state and behavior?

The author's point of view is that there's one general answer to these questions: Choose the construct or pattern that better communicates your intentions and your choices to whoever reads your code. Beck reinforces the vision that writing code that runs is important, though it's just half of the story. At least of the same importance is writing code that can be easily read and understood. If code is treated as a communication medium, it can survive software's intrinsic complexity and continuous change. The patterns in this book help the programmer write the best code that expresses all the choices and trade-offs made during the design phase.

Let's take a peek at the book contents to see if Beck managed to clearly communicate his vision of programming.

An inspiring reading

The book starts with three chapters dedicated to programming. The chapter entitled "A theory of programming" presents the author's ideas about communicating through code. Here, Beck talks about the elements that concur in forming a style of development. These ingredients are patterns, values and principles.

"The patterns describe what to do. The values provide motivation. The principles help translate motive into action."

The combination of the author's values and principles leads to the implementation patterns described in this book.

The remaining chapters present a collection of patterns that target classes, state, behavior, methods and collections. The final chapter discusses the strategies and trade-offs involved when developing a framework. The patterns don't follow a precise schema, like the majority of books on this topic. Instead, they are introduced as parts of a discussion that spans the whole book. Of course, we get a description of each pattern together with the whys and hows behind it. Each pattern is accompanied by an example written in Java. As usual for these kinds of books, examples are simple and concise. Nonetheless, they're chosen to provide a convincing demonstration of what's stated in the previous discussion.

Every time I read a book by Kent Beck, I am really pleased by his prose. The writing style is fluent but concise and simple. Explanations are convincing, and the author's point of view is clearly stated and never ambiguous. The technical content is excellent, both in terms of research quality and reference material. You will learn a lot from this reading, and even the most predictable patterns (such as variable declaration) leave room for reflection. I've appreciated the whole chapter dedicated to collections, even though a good portion of it is performance-oriented and thus specific to the Java programming language. Treating frameworks as a separate piece of software than applications is another good idea. In the last chapter, Beck discusses what probably the main problem of framework development is: Evolution and how changes affect the applications built on top of a framework.

Conclusions

I've found this book an inspiring reading. While the first impression might be that of a book targeted to beginners, I'm convinced that this book can be really enjoyed by experienced programmers that know how hard writing code that communicates well is. Five stars out of five.

<<  Previous Article Continue reading and see our next or previous articles Next Article >>

About Alessandro Gallo

Alessandro "Garbin" Gallo is a Microsoft MVP in the Visual ASP/ASP.NET category and a .NET developer/consultant. He is a contributor for the Ajax Control Toolkit project, owned by Microsoft. Alessandro won the Grand Prize at the "Mash-it-up with ASP.NET AJAX" contest held by Micr...

This author has published 23 articles on DotNetSlackers. View other articles or the complete profile here.

Other articles in this category


Introduction to StructureMap
Have you heard of StructureMap, generally know what it’s for, and want to know how to get started qu...
The Command Pattern
In this article I will provide a quick refresher on what the command pattern is used for, how it wor...
DI Patterns: Constructor Injection
In this article, an excerpt from the book "Dependency Injection in .NET", we will take a detailed lo...
TypeMock’s Arrange-Act-Assert
Brian Mains discusses how to implement the Arrange-Act-Assert pattern in TypeMock.
Key Process Patterns
This article, based on chapter 2 of Specification by Example, presents effective patterns for softwa...

You might also be interested in the following related blog posts


November's Toolbox Column Now Online read more
What is Softwaremaker doing now ? read more
October's Toolbox Column Now Online read more
September's Toolbox Column Now Online read more
Live and well read more
August's Toolbox Column Now Online read more
Data Access Guidance read more
Sneak Peek at our book Beginning ASP.NET MVC 1.0 read more
Im asked, how did you learn what you know ? read more
July's Toolbox Column Now Online read more
Top
 
 
 

Discussion


Subject Author Date
placeholder I didn't know it existed Granville Barnett 1/25/2008 3:44 PM

Please login to rate or to leave a comment.

Free Agile Project Management Tool from Telerik
TeamPulse Community Edition helps your team effectively capture requirements, manage project plans, assign and track work, and most importantly, be continually connected with each other.