Skip to main content

William C. Wake

William C. Wake is an independent software consultant, coach, and trainer. His interests include agile methods, impossible objects, and games and simulations for teaching. He's been using Java since 1.0.2. Bill is the author of the 'Refactoring Workbook' and 'Extreme Programming Explored.' His web home is at http://www.xp123.com.

 

Articles

In this excerpt from his book Refactoring Workbook, author William C. Wake provides examples of the easy to detect code smells of comments, long method, large class, and long parameter list.

Weblogs

I saw a note in the paper that Western Union has sent their last telegram, shutting down a 150-year-old business. Wish I'd known it was coming, I'd have sent "What hath God wrought?" to several...

How can we write tests that serve as specifications?

I've tried to create guidelines capturing what I do to improve Fit tests.

...

When you first learn how to play pool, you hit the ball with the stick and hope something falls in. After a while, you learn that really playing requires you to call your shot, and then make it....

If you're in the Portland Oregon area (or can be:), you might be interested in this workshop with our colleagues Diana Larsen, Esther Derby, and Ken Schwaber:

"The Secrets of Agile...

I was at the NASAGA conference, and posted this quick report (onto the NASAGA list).

It's always nice to start by running into old friends & making some new ones. Then I get into my...

"The Roots of Lean. Training Within Industry: The Origin of Japanese Management and Kaizen", by Jim Huntziger....

From Chris Crawford on Game Design:

"But there's one word, a German word, that we haven't yet stolen that should be high on our list of targets: schwerpunkt.

Random notes from Open Space

Overheard: "Whenever I've been late, I've been yelled at by management. One time, we actually pulled it together and finished early.

Jeff Sutherland on Advanced Scrum

"Better, faster, cooler." If this is interesting, see Jeff's paper...

Rachel Davies' and Mike Hill Workshop on Informative Workspaces

Informative workspaces:

  • Team memory
  • Visible status (keep it fresh)
  • Automation - light and sound
  • ...

More from the Agile 05 conference...

Delivering APIs in an Agile Context, John Major

John Major described a project that was doing custom programming of lab workflows as part of...

The "North American Simulation and Games Association" (NASAGA) is having their annual conference October 5-8 in Manchester, NH, USA.

This group is...

The Agile '05 conference was July 24-29, 2005, in Denver, Colorado, USA. There were about ten or twelve tracks at all times, so this report is necessarily...

Fit for Developing Software, by Rick Mugridge and Ward Cunningham.

[My bias disclosure - I know both Rick & Ward, I was a reviewer, and
I've written for their publisher...

A RowFixture is used to test that a set of items is as expected. The fixture flags surplus or missing items.

ColumnFixture is an easy fixture to understand from the user's point of view: each row is a test case, with some columns being inputs, and others being outputs:

...

Martin Fowler posted a good article on the idea of Language Workbenches, followed up by some nice links and more reading:

...

National Games Week is Nov. 20-26, 2005. See www.NationalGamesWeek.net.
Yes, it's an event focused on non-electronic games, but those still...

JUnit 4 is out for JDK 1.5. Gunjan Doshi summarizes the changes here.

It...

C# Fit

I've gotten some mail letting me know that the C# Fit has forked a bit - there's a newer version that's the regular Fit distribution, and an older/modified version that's part of...

I love when somebody just digs in and shows the possibilities. Berbank Green has an article at gamasutra showing what you can do with just one button:
...

Wow - this one is a lot cleaner than I expected. I had tried overriding the C# version and had all kinds of grief. This version is straightforward and extensible.

Fields

The class...

Fixture: Fields and Two Helper Classes

There's a Map summary that accumulates things like the "run date." I don't know why the top-level Fixture has this, but it does. The...

Parse

First I want to chase down a couple oddities in what I saw last time.

Inside Parse

I spent last time on tests only - this time I want to go inside the Parse class.

The top of the class reveals strings for leader, tag, body, end,...

"Fit" is Ward Cunningham's "Framework for Integrated Tests". You can pick up a copy by starting from fit.c2.com.

I've used it for a while, and looked at...

[Trimmed and crossposted from XPlorations]

I don't think the new edition of Extreme Programming Explained has
had as much exposure as it deserves. I've summarized its key points,...

In JUnit Recipes, JB Rainsberger points out this idiom:


static final Set s = new HashSet() {{

  add("this");

  add("that");...

Kent Beck's workshop was a chance to spend a few days programming and thinking about programming.

We used "games" as the vehicle. That worked well enough - you can get the feel of a game...