XProgramming > XP Magazine Index
COLLECTED TOPICS: Adventures in C# | Documentation in XP | Book Reviews
Kate Oneal: Diet Cola With Carl   Ron Jeffries   04/24/2008

Carl is concerned about small releases, and catches Kate in the coffee room. They talk about why small releases matter to Kate, and they both learn a bit.

Kate Speaks: Background and Prologue   "Kate Oneal"   04/22/2008

"Kate" puts a word in about how things really got started, and promises to come back and sort Ron out if he needs it.

Kate Oneal: The Empire Starts Out   Ron Jeffries   03/28/2008

After Dan Devlin, President of Oak River Software, dropped in on her at the coffee shop, Kate agreed to consider helping with the proposed new Empire project. Empire was life or death for Oak River. Without Empire, they'd go under, and Dan couldn't afford to fund it.

Forum.AgileSoftwareDevelopment.org Closing   Ron Jeffries   03/27/2008

The forum was set up as an experiment to see whether a self-sustaining forum-style site would work. This one, at least, has not. With regret, I'm shutting it down.

Kate Oneal: Productivity   Ron Jeffries   03/04/2008

Organizations certainly need good productivity. Sometimes they ask for improved productivity, and a way to show that we have improved. Is this always evil?

On the Rails Again -- and Off   Ron Jeffries   12/21/2007

Chet and I have decided that the thing to do is to build the software page using full-on Ruby generators and get it out of the way. Here we go again.

This doesn't turn out at all as we expected. Project cancelled! Has XP failed???

Finishing Story One   Ron Jeffries   11/19/2007

We review cards and letters, and we finish our first elementary story. We think we will start over. Oh, and my computer is now fast again. Read on ...

Rails: The First Story   Ron Jeffries   11/13/2007

We start on the first story, but get into some trouble with my machine. And you're probably wondering what we're actually up to anyway ... take a look!

Planning the Project   Ron Jeffries   11/12/2007

We take a few moments to write stories and talk about what should be done. Who says we don't plan?

Getting Off Our Tails and Onto the Rails   Ron Jeffries   11/05/2007

After a long hiatus, we're back! We're tired of Java and C# and decided to do something with Ruby on Rails. Come along for the train ride. Or wreck, as the case may be.

Further Report Refactoring   Ron Jeffries   06/14/2007

With a little time on our hands, we make our sketched story run and smooth out the code. Generality is showing up, almost by magic. Except it isn't magic -- you can do it too!

Ljutic Mono Gun   Ron Jeffries   06/12/2007

We move forward incrementally, improving the report generation by adding new paragraphs, observing missing ideas, and removing duplication. Could that be all there is to this? Is "all" a good word in that question?

Calling the Shot   Ron Jeffries   06/11/2007

In which our intrepid heroes leap fearlessly directly into a flaming pot of YAGNI. Will they surface? Will they be fried?

End to End, or, Another Run on the Hamster Wheel of Life   Ron Jeffries   06/07/2007

Our tests run, the code structure is good, yet we are not entirely happy. What's up with that?

Reloading the Shotgun Project   Ron Jeffries   06/05/2007

Distracted by the Style and Grace planning and other things, Chet and Ron have been away from the Shotgun project for a while. They need to reload their minds and get back to it. Will our heroes prevail? You know they will.

Five Days of Software Development   Ron Jeffries, Chet Hendrickson   05/07/2007

After a lot of reflection on how things are proceeding in our favorite software community, Chet and Ron have decided to hold a public workshop to share and practice building software in teams, with an eye to helping all the attendees ... including ourselves ... sharpen software and team skills.

High-Altitude Pair Programming Record?   Ron Jeffries   02/02/2007

With great courage and at great personal risk, Chet and Ron attempt a new world's record in high-altitude pair programming.

Shooting End to End   Ron Jeffries   01/24/2007

We've been working for a couple of weeks of elapsed time now, we figure, so it's time to focus a bit more on end to end. How about a draft PDF report?

Shotgun: Improving the Drawing Code   Ron Jeffries   01/23/2007

When we went to the unit square implementation of PatterningSheet and ShotPattern, we stopped after the FitNesse tests ran, but before we modified our image-drawing spikes. Here, we complete that implementation and clean up the code as we do it.

Shooting for Cleaner Code   Ron Jeffries   01/15/2007

We get all the tests running after scaling to the unit square, and clean up the code substantially. Full listings in this issue, so stand back when you open the page.

Shot Clouds   Ron Jeffries   01/14/2007

We draw some density pictures, improve some code, and recognize at least some of our flaws.

Shooting for Cleaner Still   Ron Jeffries   01/09/2007

A few more notes from our friends, and a solo pass over the code. Redneck's last words? "Watch this!"

Shooting for Cleaner Code   Ron Jeffries   01/08/2007

Last time, we jammed our new density code into the system, adding some incompatible methods and values. Today we're going to begin to smooth out that code to get the design back closer to good. Will we succeed, or fall on our faces?

ShotDensityPassesTests   Ron Jeffries   01/05/2007(updated)

A little experiment for confidence, and we make our Customer's Density test complete, and make it pass. The world does not come to an end. (Updated: a remark on time.)

Shooting for Shibumi   Ron Jeffries   01/04/2007

Much less effort, a step toward perfection. And perhaps we know why ...

Shooting for the Foot -- and Missing   Ron Jeffries  

Today's plan was to write the acceptance test for another story, and make it run. The best-laid plans ...

Shooting in All Directions   Ron Jeffries   01/03/2007

Chet and I get together for the first time in 2007, to some useful effect. Also I try to provide a bit more insight into what we're doing, and not doing, and why.

Agile2007 Call for Participation   Agile Alliance Conference Committee   01/01/2007

Here's the call for participation for the Agile2007 conference, August 13-17, 2007, in Washington, DC.

I Have No Idea Why I Did This ...   Ron Jeffries   12/30/2006

I was reading some interesting stuff on Andy Hunt's blog, and as it was 6 AM and I had nothing else to do, I took this test ...

Shooting, the Picture   Ron Jeffries   12/23/2006(updated)

There has been some interesting discussion of image processing ideas and such on the lists, owing to our discovery that the paper has some 1500 holes, and the picture only about half as many visible strikes. Here are some of the pictures, and some thoughts on what we're about.

Shooting for Graphical Effect   Ron Jeffries   12/22/2006

All right, already! We break down and draw a visible picture, mostly because I wanted Chet to share in the discovery and I knew I couldn't hold off over the holidays. It looks cool. Does it tell us anything?

Clumping Along   Ron Jeffries   12/21/2006

We combine the PatterningSheet into ShotPattern, and discuss the effects of doing so.

Shotgun Hit Consolidation   Ron Jeffries   12/20/2006

Today we think we'll work on consolidating pixels into actual hits, or an approximation thereof. Join us at Borders. If nothing else, you'll see a prodigious 18 minute spewing of code.

Building the Hit List   Ron Jeffries   12/17/2006

On the plane to Florida, I got an idea for how to clump adjacent pixels to represent a single hit. Apres moi, le rat hole. Here's a report ...

Shooting Oneself in the Brain   Ron Jeffries   12/09/2006

A new low! We're taken to task for thinking in our free time! I attempt an explanation, and add some random thoughts. Quelle surprise!

Shooting for an Acceptance Test   Ron Jeffries   12/08/2006

We've agreed to do this project the way that we think projects should be done, and that includes Acceptance tests. Today we'll try for the first one.

Shooting in Circles   Ron Jeffries  

I have the day off, and I drew a nice picture for the previous article, so I decided to work on a spike for Chet's radial pattern density chart. Let's find out what happens.

Shooting for Stories   Ron Jeffries   12/06/2006

We've been working for almost two full days now, and it seemed time to refine some stories. We found some conflicts between ourselves as programmers, ourselves as customers, and ourselves as advisors to projects.

Shooting the Spike   Ron Jeffries   12/04/2006

We've been spiking long enough to learn some key things, and it'll soon be time to create better stories and estimate them. Today we finish up the spike on density and learn a few things about those libraries everyone thinks we should use.

Darker Before the Dawn   Ron Jeffries  

Our first spike took a bit longer than we had hoped, but we successfully interpreted a BMP file. We worked to improve our code, while people wrote to us to tell us how ignorant we are. Fun all around.

Shooting for Estimates   Ron Jeffries   12/03/2006

Input from a few readers, and our initial estimates for the shooting project.

Shooting in the Dark   Ron Jeffries   11/29/2006

While we wait for the estimates to come rolling in, and before I forget, here's a report on our work so far on the Shot Pattern Analysis program.

Shooting for Simple Design   Ron Jeffries   11/28/2006

Estimation, simplicity, TDD, tracking. Chet and Ron undertake a project a bit larger than their usual run, to see what happens.

Single Frame Cleanup   Ron Jeffries   11/16/2006

The Frame object in our Haskell-inspired Java program has an awkward interface. Let's take a look at it and see what can be done.

Thoughts and Actions: Single Frame Scoring   Ron Jeffries   11/15/2006

Let's proceed with making the Haskell-inspired Java version "better", focusing on writing tests for a new Frame object. The code gets odd, but turns out better after a while ...

Thoughts and Actions: Beyond Haskell   Ron Jeffries   11/07/2006

The Haskell experiment we did at the Simple Design and Testing conference has led to some questions and some answers. I'd like to discuss some of them here, and start in a slightly different direction based on the learning.

Recurring Drama   Ron Jeffries   11/05/2006

The continuing saga of recursive implementations of Bowling, email from our fans, and a refactoring of my Java code.

More Hassling with Haskell   Ron Jeffries   11/04/2006

Lots of fine feedback on the Haskell article. Alternative implementations in Java, Ruby, and even Haskell! Much fun! PLUS!! FATAL FLAW DISCOVERED IN RECURSIVE VERSIONS!!

Haskell Bowling   Ron Jeffries   11/01/2006

At the Simple Design and Testing conference, Dan Mead bravely agreed to implement the infamous Bowling Game exercise, TDD style, in Haskell. It was fun and interesting. Here I present some discussion, his program, and a Java program in a similar style.

Doing the Impossible   Ron Jeffries   10/20/2006

Dogbert teaches us all a management lesson. He's even offering a diploma. Is that better than a certificate?

Call for Papers: IEEE Special Issue   Grigori Melnik and Ron Jeffries   10/16/2006(updated)

IEEE Software will be publishing a special issue on Test-Driven Development, in the May/June 2007 issue. The issue will be edited by Grigori Melnik and yours truly. We would love to consider your paper for inclusion in this issue.

Updated: We're now scheduled for the May/June issue.

A Ruby FITting, with Little Finesse   Ron Jeffries   10/04/2006(updated)

During our Agile Experience session with a client a couple of weeks ago, Chet and I were helping them with FitNesse for .NET. We thought it would be interesting to get FitNesse working with Ruby, so we've begun to work on that. Here, the results of that trial ...

Now! With new explanations and graphics! See the end of the article.

Risk Management   Ron Jeffries   09/08/2006

On a few of the Agile lists, Paul Arrowood asked: "How does Agile address a conventional Risk Log? I wouldn't call these 'blocked items' (aka issues). But more or less the [Scrum Master's?] watch list for things that could go awry (content not fabricated, new/unfamiliar technology, geographically dispersed team, interdependence with another project, etc)." I wrote an answer, and liked it well enough to put it here.

Offering a New Community Resource   Ron Jeffries   09/04/2006

It is my pleasure to offer the Agile community a new resource, an Agile Forum. I'm hoping it will be a brand-neutral, consultant-neutral place, open to and shared by everyone who is interested in advancing him- or herself in Agile, or in bringing Agile to the world. I'm inviting you to help make it a place you'd like to be.

Sudoku 5: Objects Begin to Emerge   Ron Jeffries   07/13/2006

The code is beginning to ask for some help. We're processing a simple array of cells instead of an object, and the classes don't feel cohesive. Let's push some methods off to new classes and see what happens.

Sudoku 4: Disaster Narrowly Averted   Ron Jeffries   07/11/2006

The program reached an impossible state during the first test of the algorithm that I turned loose. I thought I had made a mistake, but it turned out I had not. Well, not a coding mistake.

Sudoku: Learning, Thinking and Doing Something About It   Ron Jeffries   07/09/2006(updated)

I've read a bit more about Sudoku, and even played part of a game. Plus, the ideas of others in the lists and in email have me thinking. Should I try some of these ideas ... or not? UPDATED: My strategy conclusion is wrong!

Moving On With Sudoku   Ron Jeffries   07/08/2006(updated)

A little more explanation of what I'm up to, and a test of a method that actually figures out what could go in a cell. Whee!

OK, Sudoku   Ron Jeffries   07/07/2006

A number of people on the tdd list have reported having a lot of fun TDD programming the game of Sudoku. I've not played the game, though of course I've tripped over the piles of books in the bookstores and at the airport. But discussion of the thing makes it sound like it might be fun to TDD on it, as people are saying. Let's get started.

Misstating the Evidence for Agile and Iterative Development: an accusation from Isaac Gouy   Isaac Gouy (this page: Ron Jeffries)   06/14/2006(updated)

Isaac Gouy is a perenniel poster on comp.software.extreme-programming, where his primary focus has been to "debunk" Craig Larman's book, "Agile and Iterative Development: A Manager's Guide". He has written an article, and I have agreed, in a spirit of open discussion, to post it on XProgramming.com. Here it is. (Updated: a reply from Craig Larman.)

The "Eighty-Twenty" Rule   Ron Jeffries   06/04/2006

A comment from Alan Shalloway, on the Lean Development group, points the way to fame and fortune!

Automating "All" Tests   Ron Jeffries   05/25/2006

Sure, test automation is a good thing. But we can't, and shouldn't, automate them all. Why then, ask people to "automate all tests"?

Bowling Vectors   Ron Jeffries   05/03/2006(updated)

June Kim posted a J Language version of bowling that is very vector-oriented. As an experiment, I coded up a vector-style version in Ruby, TDD of course. It turned out to be kind of interesting.

We Tried Baseball and It Didn't Work   Ron Jeffries   05/02/2006

An allegory? Sarcasm? Humorous pastiche? You decide.

Book Review: Pragmatic Ajax   Ron Jeffries   04/29/2006

Justin Gehtland, Ben Galbraith, and Dion Almaer bring us a valuable and enjoyable book describing Ajax. It is full of running examples, points out the major gotchas, and it's a good read too! Recommended!

Grotesque Hackery in XSL   Ron Jeffries   04/22/2006

Between the new book review page and a few other things, I just spent a few days in a painful, test-free update of my web site scripts. Here, a report on how much it hurt. Lessons learned? We'll have to see what I do. Like lots of folks I know, I haven't figured out how to do what I know I should.

Book Review: Refactoring Databases   Ron Jeffries   04/17/2006

Scott and Pramod have done an excellent job with this book. It's full of practical advice about how to improve your database design, when to do it, and even how to manage the transitions. If your project involves a database, this book can help.

Impact of Overtime on Productivity   Ron Jeffries   04/14/2006

More features will always bring more revenue, more customer satisfaction, other good things. Therefore there is always pressure for people to work harder, longer hours. This is demonstrably a Bad Idea. Here's some evidence, and some ideas about how to know if pressure is too high.

Thoughts on Offshore Testing   Ron Jeffries   03/26/2006

On the agile-testing group, there has been a little discussion about offshore testing. Herewith, some thoughts, cleaned up slightly from my comments there.

Frame Status in the Delegates Version   Ron Jeffries   03/16/2006

I was glancing at the delegates version of the code last night, and I have the impression that the frame status requirement will be more readily implemented there. So today we give that a try. The results are strikingly better than yesterday's!

Continuing the FrameStatus Implementation   Ron Jeffries   03/15/2006

Today we set out to finish the essentials of the FrameStatus implementation for the Kicker version of the Bowling Game. Things go in easily, without many surprises. But we have a lot of code, and it doesn't all feel good.

New Requirements for Mining Bowling   Ron Jeffries   03/14/2006

We have a very procedural implementation of the bowling game, and a very nifty OO version with classes representing states of a state machine. Which implementation is more responsive to new requirements? We'll find out soon!

The Miners Delegate   Ron Jeffries   03/13/2006(updated)

We use the C# "delegate" feature to come up with a solution to the Bowling problem that is perhaps a bit less OO, but is also only 40 percent the size of the version with the Kicker classes. Fun exercise, but the proof will be in the next stories. [updated, see footnote]

Producing Documents   Ron Jeffries   03/12/2006

I wrote this answer in response to a question on one of the Yahoo groups: "What is the list of documents produced when you are implementing a pure Agile project?" Martine Devos liked it, so I decided to preserve it here in hopes that someone else might like it as well.

Kick Out the Duplication   Ron Jeffries   03/10/2006

We build some superclasses to remove the duplication from the Kicker classes. One false start sends us down an unpleasant path, and we decide to start over more cleverly. As for the end result, we have our doubts. The proof will be in the updating, later on. Right now, it's hard to see why five times bigger is better, just because it looks like Object-Oriented.

The Miners Strike   Ron Jeffries   03/09/2006

Chet and I get this version running all the way, by implementing the Strike functionality. We do some cleanup, and plan next steps. We can get a pretty good look at the OO-style version of bowling. Is it better? It's not clear.

Roughing in the Kicker   Ron Jeffries   03/08/2006

In which our heros find a straightforward way to replace conditional logic in the Frame with series of Kicker objects. The design so far is quite "object oriented", and is turning out as was envisioned. But is it better? That remains to be seen.

Mining the Kicker   Ron Jeffries   03/07/2006

Using a pinball "kicker" metaphor, Chet and I are going to try a version of the Bowling Game. We'll talk about the metaphor a bit, and then check our intuition that it will work out well.

Mining the Bowling Game   Ron Jeffries   03/06/2006

A TDD demonstration of the Bowling Game suggested that there is material there worth mining. Let's start digging.

Designated QA People on the Team   Ron Jeffries   02/23/2006

Recently on the Scrum list, I characterized the practice of having designated "QA" people on the team as a "second- or third-class practice." Here's some expansion on that ...

Integrating Agile Methods   Ron Jeffries   02/23/2006

A poster to the CrystalClear list offered a classification of Agile methods, triggering these brief thoughts about integrating the ideas rather than dividing them.

XST: Embedded Scope Transformation   Ron Jeffries   12/13/2005

The ScopeTransform experiment was a good one, but I think that scope transformation should be part of XSet, not a separate operation. We'll work on that ... and it turns out pretty nicely. More to do, of course, and things are a bit fuzzy, but I think we're on a good path.

XST: Mapping Considerations   Ron Jeffries   12/12/2005

Our previous work left me thinking about whether there would be lots of redundant Scope Transform bytes needed in all the records. I chatted with Chet about it, and thought about it a bit more, and I think we're OK. This article will bring you up to date on the thinking. No new code, but I will include the complete listings as of now just to keep you up to speed.

XST: Considering Some Exotic Transformations   Ron Jeffries   12/09/2005

We're walking a narrow path bounded by theory and practice. This time we'll do some work on those records with holes in them, like the first-name set. In so doing, we'll try not just to hack in the code, but to keep it consistent with our understanding of the math. We don't really understand the requirements, or the theory. Can we possibly succeed?

XST: More Scope Transform   Ron Jeffries   12/04/2005

We'll push forward with Scope Transformation ideas. First step will be to make the :restrict operation return a ScopeTransform set. That part will be easy. Then we start thinking about just what that :contents method means. Still, good progress for a little time in an airplane.

XST: Some Planning   Ron Jeffries   12/03/2005

We need to look around a bit, to decide where to take this project. To do so, we need to get a bit more clarity on the big picture, and the small one.

XST: Looking Around   Ron Jeffries   11/30/2005

Some cleanup efforts lead us to a theoretical idea, and to a successful spike. Out of chaos, order.

XST: Theory to the Rescue   Ron Jeffries   11/28/2005

There's this hack where we return the elements of a set as if they were sets. Nothing like theory to fix a hack, is there? Naturally there are some stumbles along the way, mostly involving the tests. Remember who you're dealing with.

XST: Improvements, We Hope   Ron Jeffries   11/25/2005

I did an offline experiment to figure out what to do about this :each thing that returns two items instead of the usual one. Based on that, we'll create a new little object, wire it in, then clean up the tests a bit. Join us ...

XST: An Iterator   Ron Jeffries   11/23/2005(updated)

Just for a little something to do, let's add iteration capability to our XSets. [Added: Clarification of something that threw at least one reader off.]

XST: A Little Help From My Friends   Ron Jeffries   11/22/2005

One of the great things about writing these articles full of mistakes is that I get lots of useful feedback and ideas from readers. Tonight, mostly, I'll be cleaning up the code and otherwise responding to input.

XST: Complex Scope   Ron Jeffries   11/21/2005

In which we discover that our implementation is "totally wrong" and we have to rewrite everything. Or do we?

XST: a Ruby Experiment   Ron Jeffries   11/20/2005

A small experiment, implementing "restrict" in Ruby. As usual, warts and all.

XST: More Thoughts on Extended Set Theory   Ron Jeffries   11/19/2005

Some friendly folks have been making suggestions and asking questions. I'm still in the mode of figuring out what to do and how to do it. For those who are interested ...

XST: Some Thoughts on Extended Set Theory   Ron Jeffries   11/17/2005

For some reason, I'm thinking -- at 2 AM -- about Extended Set Theory. An interesting topic, to me, even at this hour. But should I build something? I don't know; help me out.

Making the Date   Ron Jeffries   11/10/2005(updated)

It seems like every development project begins with the date, and we're held responsible for "making the date". Making the date is a management responsibility, not a development responsibility. Here's why.

Updated with cool cartoon from Simon Baker.

RTF: Maximize Each Iteration   Ron Jeffries   10/21/2005

Delivery of the running, tested, features the customer wants is the purpose of the development team. Sometimes the work we signed up for won't quite fit into the iteration. What should we do?

Off the Road -- a Podcast   Ron Jeffries / Chet Hendrickson   08/06/2005

Chet and I got together at Borders in Brighton yesterday, and talked about teams going "off the road" and what a process should do to address this concern. We recorded the chat and have put it up as a sort of podcast. We hope you enjoy it, and request your help.

Agile, Top Down   Ron Jeffries   07/29/2005

There's a recent thread on the Scrum list about how an executive or highly-placed manager could get Agile going. I've been one of those guys, and I know a bit about Agile, and here's how I'd proceed. First, focus management attention on cyclic delivery of running tested software. Second, provide the resources to learn how to do that.

TDD by Intention?   Ron Jeffries   06/11/2005

Can Test-Driven Development and Programming By Intention play together? Or do they annihilate each other, like protons and antiprotons, or XPers and CMMers?

Eine Kleine Refaktorung   Ron Jeffries   05/14/2005(updated)

Friedrich Brunzema offered a problem on the xp list, with a series of stories that he felt were noticeably less costly to do in one order than another. I've nothing to do tonight, so I'm going to work the problem -- more accurately a subset of it -- to see what happens. (Updated to include a bit more summary, and the code so far.)

A SeaSide Vacation   Chet Hendrickson   02/24/2005

Ron and I have been doing some Smalltalk lately. He has been writing about coding the bowling game as an exercise to help get our chops back, so I thought I should do something to help us catch up with the current state of Smalltalk development.

Practice: That's What We Do   Ron Jeffries   01/16/2005

To really take an important role in practice, ideas need to get built into people's heads. Since most practitioners don't read much, they get most of their ideas from people they talk to, things they can read quickly, and most of all, from ... practice.

DBC: All Over the Map   Ron Jeffries   01/15/2005

Our mission, should we choose to accept it, is to "spike" a map drawing program. We know nothing about maps or drawing, and very little about programming. How might we proceed?

A Map is a Document   Ron Jeffries   01/02/2005

Harald Mueller and I have been having a little mailing list debate about documentation. I've been taking the position that we want understanding, not documents. He's been saying that documents are one good way to get understanding. So far, we haven't gotten on the "same page" yet, but I trust that we will if we keep going. In the light of that conversation, though, here are some thoughts on documenting this little product we're working on.

Where's the Spec, the Big Picture, the Design?   Ron Jeffries   12/28/2004

These questions were recently asked on the XP group, in the context of a review of Mike Cohn's User Stories Applied. The answers are a function of the whole project, not just User Stories.

DBC: StreamBowlingGame   Ron Jeffries   12/27/2004

Based on a suggestion, I'm going to build the BowlingGame in yet another way: based on a Stream concept. This will be more fun for me than what I should be doing: I hope it's the same for you.

DBC: An Example Refactored   Ron Jeffries   12/25/2004

A famous author also refreshing his Smalltalk proposes a single method solution. Going where no man dares to tread, I'm going to try to refactor it into the style I consider to be "good". You decide.

DBC: Another Frame   Ron Jeffries   12/22/2004

I had this cool idea for another way for Bowling to work. I'm snowed in, so I tried it. The results were good ... and very thought-provoking.

DBC: With a Little Help From My Friends   Ron Jeffries   12/22/2004

Some discussion of style triggered by reader input. Then on to another "improvement", followed by discussion of whether it's an improvement, and why we did it.

DBC: Keep on Rollin'   Ron Jeffries   12/21/2004

Let's try some more incremental improvement to the objects. Meanwhile, some people think I'm taking bites that are too big. Let's think about that as well.

DBC: I Was Framed!   Ron Jeffries   12/20/2004

Let's reflect a bit on the Smalltalk bowling experiment so far. And then ... I've got an idea!

DBC: Bowling For Smalltalk II   Ron Jeffries   12/19/2004

In the previous article, we made our first test run, and sketched a bit about how Smalltalk helps us. Let's make some more tests run.

Discovering Better Code: Bowling For Smalltalk   Ron Jeffries   12/19/2004(updated)

After a long time away, I had occasion to start using Smalltalk again. To get my chops back, I started with the Bowling Game exercise. My experience quickly reminded me why Smalltalk rocks. (Updated: includes changes and remarks about "==" vs "=".)

Biographical Notes   Ron Jeffries   12/07/2004

Ah. Well... I attended Juilliard... I'm a graduate of the Harvard business school. I travel quite extensively. I lived through the Black Plague and had a pretty good time during that. I've seen the exorcist about a hundred and sixty-seven times, and it keeps getting funnier every single time I see it... not to mention the fact that you're talking to a dead guy... now what do you think? You think I'm qualified?

XP West Michigan Talk   Ron Jeffries   10/27/2004

To paraphrase Red Green, if the audience doesn't find you informative, they should at least find you entertaining. Chet and I addressed the XP West Michigan group recently, and here's an article from the Grand Rapids Business Journal that resulted.

Big Visible Charts   Ron Jeffries   10/20/2004(updated)

It's time to revisit the topic of Big Visible Charts. Display important project information not in some formal way, not on the web, not in PowerPoint, but in charts on the wall that no one can miss. [Updated: Velocity Charts]

Passion   Ron Jeffries   10/04/2004

Brian Marick, in a blog entry that is quite interesting on its own, points to a very provocative article about group think, German philosophy, and the old Saturday Night Live gang. It got me thinking about Extreme Programming and the "Agile" methods. Have I mentioned passion lately?

DBC: A Frame Object   Ron Jeffries   10/01/2004

I was wondering what would happen if I injected a Frame object into the bowling example, early on. What happened is that I got in a bit over my head. Come along and point and laugh.

As You Were   Ron Jeffries   09/24/2004

It's important to take grammar seriously, even if she has been dead for years.

Hearts as Weapons   Ron Jeffries   09/21/2004

To every Card, turn turn turn, there is a season, turn turn turn, and a time for every Suit under heaven. It's not the Suits, it's the Game.

Discovering Better Code: What's It All About?   Ron Jeffries  

Programming can't be successful without design. But I begin my projects with very little design and seem never to do any. On the contrary, I'm designing all the time. That's what makes incremental delivery possible.

Discovering Better Code: ArticleList Continued   Ron Jeffries   09/19/2004

We need a test. We discuss why we work that way, then we write the test and make it run. In so doing, we learn something very important: maybe we don't want ArticleList to be a typed collection after all!

Discovering Better Code: ArticleList   Ron Jeffries   09/17/2004

Inspired by an example from Jonathan Pierce, I typed in a walkthrough of the .NET CollectionBase, a base class used for building typed collections. Chet and I talked about it at Borders today, and it inspired us to look at the ArticleList in the blog software. We tweaked it to make it more like a typed collection, and it's definitely better.

Discovering Better Code: Factory   Ron Jeffries   09/16/2004

Chet and I talked about the results of our work so far, and decided to build a factory class. We like it, but we're not sure why. That's not very satisfying.

Discovering Better Code: Article Filer   Ron Jeffries   09/14/2004

In which we set out to drain the swamp, encounter some alligators, and quite possibly add a little water to the swamp in the process.

Discovering Better Code: Let's Stabilize Those Tests   Ron Jeffries   09/07/2004

I've got a little time here, and there are those tests set to Ignore. Let's fix them so we don't have to ignore them.

Discovering Better Code: File Stuff   Ron Jeffries   09/06/2004

Inch by inch, step by step, we work on improving the internals of the ArticleFiler. No master plan, no grand design. Just gently polishing until the object is visibly better. A good way to proceed? You decide.

Discovering Better Code   Ron Jeffries   09/05/2004

When I'm programming, I work very incrementally, almost intentionally with no grand plan other than my stories. I pay attention to the design, but I'm not working toward a planned design. When the code starts pushing back, I make it better. This feels to me like a course of discovery rather than bringing about some carefully thought out transformation.

Book Review: My Book   Ron Jeffries   08/31/2004(updated)

This book includes some really excellent examples of pair programming sessions with XP superstars such as Chet Hendrickson and Paul Friedman. Author Ron Jeffries has chosen some great partners. It's too bad they couldn't be with him more often. (New note inside review.)

A Metric Leading to Agility   Ron Jeffries   06/14/2004(updated)

Nearly every metric can be perverted, since up- and down-ticks in the metric can come from good or bad causes. Teams driven by metrics often game the metrics rather than deliver useful software. Ask the team to deliver and measure Running Tested Features, week in and week out, over the course of the entire project. Keeping this single metric looking good demands that a team become both agile and productive.

The Irony of Extreme Programming   Ron Jeffries   04/12/2004

The irony of Extreme Programming is that while detractors continue to explain why it cannot work, software developers all over the world are having success with it.

Adventures in C#: Building the App from the Book Files   Ron Jeffries   02/23/2004

An Amazon reviewer had difficulty building the application from the final files provided. My mistake, my expectation was for people to follow along in the building of the code, not for them to build the application from the existing source. I hadn't even intended to provide the source files until Microsoft asked me to. Here's how to build the app from the final file list provided on the book web site.

I was wrong. They're not rules!   Ron Jeffries   01/15/2004

And thirdly, the Code is more what you'd call guidelines than actual rules.
  -- Captain Barbossa (Pirates of the Caribbean)

Book Review: A Short History of Nearly Everything   Ron Jeffries   01/09/2004

Bill Bryson writes a delicious book that lives up to its title. The cosmos, the earth, atoms, geology, life, homo sapiens -- it's all here.

Adventures in C#: Coffee Shop   Ron Jeffries   12/08/2003

Steve Howell on the extremeprogramming group is proposing a Coffee Shop application and acting, I guess, as customer on it. The discussion of the program has gone on too long without anything concrete, and so I have decided to program something to crystallize my ideas, and the situation.

Adventures in C#: Extending the Procedural Bowling Game   Ron Jeffries   11/20/2003

Object aficionados worldwide are concerned that the procedural bowling solution presented last time is just not robust enough. They want to see how we would make it score the frames incrementally. Frankly I haven't the slightest idea.

Adventures in C#: Bowling Revisited   Ron Jeffries   11/18/2003(updated)

Here's the Bowling Game again. This time I'll take a simpler approach, along the lines I usually follow when I do a Test-Driven Development demonstration. The result is strikingly simpler than the preceding "object-oriented" solution. What does this tell us about TDD and how to use it?

Adventures in C#: The Bowling Game   Ron Jeffries   11/17/2003

When I demonstrate Test-Driven Development using the Bowling Game example, I begin by describing the problem and inviting the attendees to do a little up front design about what objcts we may need. Then I take a very simple approach that produces a rather simple single-class solution, with none of the complexity we anticipated. I've been wondering how to drive the development to cause the creation of some of the classes that are anticipated, supposing that we might have some actual need for them. Here's an example of doing TDD with a bit bigger "design" in mind.

Let's Get Organized   Ron Jeffries   09/11/2003

I can put off anything except procrastination. When I make a "ToDo" list, a card is too small and they get all bent and dirty before everything is done. Wait! I'm an XP guy. I'm trying separate "ToDo Story Cards" to see what happens.

Book Review: Leadership and Self-Deception: Getting out of the Box   Ron Jeffries   09/10/2003

This isn't just one of those self-improvement books. It asks us to dig deeply into our own feelings about people and situations. Reading this with an open mind will ask some hard questions that need answers.

Book Review: Extreme Programming Refactored   Ron Jeffries   09/05/2003(updated)

This book is painful to read for anyone who understands what XP is, because it goes to such pains not to understand, to take out of context, and to distort.

It is dangerous to read for anyone who does not understand what XP is, because it goes to such pains not to understand, to take out of context, and to distort.

Beta Testing in XP   Ron Jeffries   09/04/2003

Beta testing is a common final check on system content and accuracy. When feature or defect problems come back from beta testing, that's bad news, and we might have to freeze the code. Therefore, treat beta testing as "business as usual". Plan to have no problems come back.

Book Review: Balancing Agility and Discipline   Ron Jeffries   08/19/2003

Barry Boehm and Richard Turner have produced an important and balanced book about agile versus plan-driven methods. Unfortunate title, perhaps, and a few things to disagree with, but highly recommended.

Adventures in C#: Sustainable Pace, and the Lack Thereof   Ron Jeffries   08/01/2003

Maybe there's something to this sustainable pace idea after all. Here's a report on part of the Undo feature of the Adventures' XML Notepad.

Customer Service: A Letter to BMW of North America   Ron Jeffries   07/28/2003

With the best of will and effort, sometimes things still go wrong. When that happens, the way we deal with the problem can make the difference between an unhappy customer and one who is actually happier than he was before the problem happened. This letter tells about such a time.

What's the Second Directive?   Ron Jeffries   06/12/2003(updated)

I'm been struggling for years with notions like having empathy with our mistakes, Kerth's Prime Directive, and the like. Springing from a couple of notes on the extremeprogramming group, and a blog entry from Dale Emery, here's my latest rant.

YAGNI Prohibits Data-Driven Code -- or Does It?   Ron Jeffries   06/03/2003

The YAGNI principle says that we should not build any code that we do not currently need. But some parts of our systems benefit from being built from data rather than from code. Therefore if we follow YAGNI we could never build such code. But wait? What about the rules of simplicity?

Flowers of Evil: Ask Charles Baudelaire   Frank Gannon   04/02/2003(updated)

Frank Gannon wrote this column for New Yorker, if I'm not mistaken, back in 1987. I think it deserves another run. I wrote a year ago for permission to publish, but so far cannot find the copyright owner. It's about flowers and gardens, so perhaps it's appropriate for this Valentine's Day.

(Frank found this page somehow and has kindly granted his permission to post the article, which appeared in Atlantic, not New Yorker. Thanks, Frank!)

Adventures in C#: Testing XSLT   Ron Jeffries   02/16/2003

We're going to try to be a bit more test-driven in our work with XSLT and the chapter number lookup. This turns out to be more difficult than we could have hoped. I think the result is a bit of an improvement. You get to decide whether you agree.

Adventures in C#: Chapter Numbers inside the Chapters   Ron Jeffries   02/14/2003

We would like the chapters to have the chapter number in them. The chapter number is in the file name, but we don't know how to get it into the output chapter. We have a scheme in mind. Maybe we can make it work. For sure we are going to learn something.

Adventures in C#: Making the Table of Contents   Ron Jeffries   01/25/2003

As I move towards turning these chapters into an actual book, I need to build a table of contents, so I want to create a new XML construct describing each chapter. We'll look at how I approach building a little application that will only be used a few times.

Adventures in C#: Digression -- WordCount   Ron Jeffries   12/16/2002

These chapters are supposed to add up to a book. And my publisher wants to know when they're going to get it. I need to get estimates of word counts for the chapters to have a sense of progress. Here's a digression to get the word counts.

Adventures in C#: A Code Management Vision   Ron Jeffries   11/24/2002

A number of XPers have been talking about how code management should really work. Here are some of the ideas. They sound crazy. That might be what I like about them.

New Toy: Logitech io   Ron Jeffries   11/21/2002

The Logitech io Personal Digital Pen remembers what you write or draw and then uploads it to your computer when next you plug it in. It must be good for something. How does it work? The paper has coordinates built in!

Adventures in C#: Building a Web Service   Ron Jeffries   10/14/2002

By way of learning something, I followed the walkthroughs in Visual Studio to build, deploy, and access a Web Service. These are some notes on what I learned. Mostly history, some pictures of what you get, and a little of the code.

Book Review: Questioning Extreme Programming   Jeff Langr   10/09/2002

Jeff, an experienced XP coach, takes a hard look at Pete McBreen's book, and finds it to contain good questions. He feels that the answers fall short -- perhaps due to Pete's inexperience with XP.

An XP Diary   Wyatt Sutherland   10/08/2002

Wyatt provides a detailed, exciting, and valuable diary of a project moving towards Extreme Programming. Highly Recommended.

Virtual Mock Objects using AspectJ with JUNIT   Simon Monk, Stephen Hall   10/01/2002

The authors show us how they use aspect-oriented programming in AspectJ to facilitate isolation of testable units, without hand-crafting Mock Objects or using a specialized Mock Object generation tool.

Adventures in C#: Adding a TestFixture to Visual Studio   Ron Jeffries   09/23/2002

Visual Studio is very configurable, if you happen to be a telepathic genius. In this example, I manage to fumble my way through addition of a TestFixture Wizard without benefit of either mindreading or much of a mind. Come along for the ride ...

Refactoring Isn't Rework   Ron Jeffries   09/05/2002

We're often afraid that if we don't do enough design up front, our program may bog down and become hard to maintain. This will cause expensive rework, or worse, project cancellation. Simple design with refactoring isn't rework. You may proceed without fear.

Etudes   Ron Jeffries   08/22/2002(updated)

Some of the XP practices may be things we want to do all the time. Some we may wish to do only part of the time. When we are really skilled in use of a technique, we're best equipped to decide when to use it. Here are some exercises that may help build skill. And make up your own exercises. Let us know about how they work. Added: Planning Etudes.

Adventures in C#: A Better Code Manager   Ron Jeffries   08/21/2002

Chet and Ron reflect, then figure out a better way to roll back than typing Control-Z over and over.

Adventures in C#: Warts and All   Ron Jeffries   08/20/2002

Sometimes the bear bites you. Today it bit Ron and Chet.

Take a Card, Any Card   Ron Jeffries   08/13/2002

Using a simple deck of cards, examine how Extreme Programming gives you a new and better way of managing software.

Adventures in C#: Watts for Dinner?   Ron Jeffries   08/09/2002

Dinner with Watts Humphrey convinces Chet and Ron to do an experiment involving <horrors/> actual data!

The Priorities Changed!   Ron Jeffries   08/02/2002

All too often, they change the priorities and our project gets cancelled, or put on "hold", before it's done. This is frustrating, demoralizing, and wasteful of resources. Ship it before they can stop you! This maximizes the value of your work, and reduces stomach acid, all at the same time.

Petition the King   Ron Jeffries   08/01/2002(updated)

When you're in a group that serves many customers, your backlog list tends to become infinitely long. You're not sure whether to report on things that aren't being done, or to pretend they are being done, or what. Don't keep a backlog list at all. The result could be greater clarity for your customers, and far less hassle for you.

Introduction to the Korean Edition   Ron Jeffries   07/08/2002

I was recently invited to write a new introduction to the Korean edition of Extreme Programming Installed. What a rush! International fame and glory. Thanks to Ann and Chet for making it possible. Here's what I wrote.

Delivering Value in Software Projects   Ron Jeffries   06/29/2002

A recent discussion on the Extreme Programming mailing list addressed whether there is an "80-20" rule in software development. Let's take a look at some numbers.

Feedback and Technique   Ron Jeffries   06/24/2002

Feedback helps a developer know he needs "something". No process will help us notice that mathematical proof is needed if we have never heard of mathematical proof. Some processes choose to list all possible techniques. XP does not.

Review: Rio Advanced Digital Audio Center   Ron Jeffries   06/23/2002(updated)

SonicBlue (Rio) has built a device I've been wanting for years. It eats your CDs and plays them back digitally: 40gig worth of them! Here's an early review of my experience with this new toy. Update: It has a bit of XP in it!

Little Things   Ron Jeffries   04/02/2002(updated)

I have no excuse for this material. It just came out of my pen. And Wyatt Sutherland's.

RecordMap, Test First   Ron Jeffries   03/25/2002

On the "Agile Testing" mailing list, Michael Bolton asked for an example of XP-style testing and programming. This example was the result. It represents about 90 minutes of work, counting two phone calls and doing the original writeup.

Mysterious Stories   "Ernie C", Laurent Bossavit, et al.   03/20/2002

It is said that by meditating on the words and actions of the masters, we may be enlightened. Sometimes it's just entertaining.

Software for Your Head   Ron Jeffries   02/08/2002

If you are serious about your profession, if you are serious about teamwork, if you are serious about success, please read this book.

Book Reviews V   Ron Jeffries   02/05/2002(updated)

Updated to include our first review of Java Tools for eXtreme Programming. These books are all about agile software development, even those written before the term existed. They're all worth having and reading, more than once. Dig in!

Book Reviews IV   Ron Jeffries   02/02/2002

Chet and Ron have been working with Ruby, because it's the nearest thing there is to Smalltalk. Here are the books we use.

Book Reviews III   Ron Jeffries   01/28/2002

A detective in puce, mentoring, massive parallel processing, and two books on writing. What more could you want?

Book Reviews II   Chet Hendrickson   01/28/2002

Chet looks at some humor and some ancient architecture. We leave it to you to figure out which is which.

Test First Guidelines   Sean Shubin   01/25/2002

Sean Shubin has begun using Test-First development. He wanted to share these ideas and guidelines with us.

Misconceptions about XP   Ron Jeffries   01/21/2002(updated)

Maybe it's just the name: Extreme Programming. Maybe it's something we said. Whatever the cause, there are lots of misconceptions about XP. From time to time we'll try to correct some of them here.

Misconceptions II   Bryan Dollery Chaos Engineers   01/20/2002

Bryan Dollery reports on an interesting conversation between Achilles and the Tortoise. This one is about design, or the lack of it, in XP. Thanks, Bryan

Book Reviews I   Ron Jeffries   01/20/2002(updated)

This is the first of a regular series of book reviews. We'll only review books we have read, and we'll call them the way we see them. This time we look at five books, ranging from XSLT to the world of Dream. Updated to add a sixth on time management.

People, Places, and Things   Michael Finney   01/20/2002

People work together to get what they want. One thing that everyone wants in one form or another is knowledge. How can we share knowledge about XP?

Pretend You're Not Afraid   Ron Jeffries   01/20/2002

Fear is good if there's a tiger in the room. Not so good if there's a bug in the software.

XP Design and Documentation   Ellen Ferlazzo   01/16/2002

Ellen Ferlazzo, of Sprezzatura Systems, took my rant on documentation seriously. Ellen says that if you do it right, you can deliver the documentation at the same time as the software. I was willing to give the writers an extra iteration. Rock on, Ellen!

Essential XP: Documentation   Ron Jeffries   11/21/2001(updated)

"Outside of a dog, a book is man's best friend. Inside of a dog, it's too dark to read." --Groucho Marx

Outside your extreme programming project, you will probably need documentation: by all means, write it. Inside your project, there is so much verbal communication that you may need very little else.Trust yourselves to know the difference.

Manuals in Extreme Programming   Ron Jeffries   11/21/2001

Here's a bit of a rant I wrote some time back, talking about how to write the manuals for an XP project by using writers as part of the team. It's a serious proposal, written with tongue a bit in cheek.

What is Extreme Programming?   Ron Jeffries   11/08/2001(updated)

Extreme Programming is a discipline of software development based on values of simplicity, communication, feedback, and courage. It works by bringing the whole team together in the presence of simple practices, with enough feedback to enable the team to see where they are and to tune the practices to their unique situation.

Much Ado About Nothing: Documentation   Ron Jeffries   10/26/2001

One of the most common raps against XP isn't even true. People think we say that documentation is a bad idea. XP is focused on conversation for maximum effectiveness. Our recommendations on documentation follow from that simple fact.

Essential XP: Emergent Design   Ron Jeffries   10/21/2001

There are many well-known modeling and design techniques that can be used to bring about a "good design". An incremental process may limit the applicability of these techniques, which are most powerful when applied and committed to "up front". Test everything; eliminate duplication; express all ideas; minimize entities:These few simple rules, applied locally, can help a high quality global design to emerge.

XP and Reliability   Ron Jeffries   10/08/2001

One of the most common failings of XP teams is insufficient testing. XP asks for more testing than many teams are used to. But what about projects that need reliability at a substantially higher level? Are they out of luck?

Natural XP: Documentation   Ron Jeffries   10/07/2001

Kent Beck has described XP as designed to go with people's natural instincts. In this short series of articles, we'll take a look at how XP accomplishes goals without a need for lots of discipline or management pressure. In this article, the topic is documentation.

What's in it for the business?   Ron Jeffries   09/30/2001

XP seems to be made up of a lot of practices. They might be good, but what's the bottom line for a business person? The acid test for XP isn't what the team does, but what they deliver. Here's what you should get from your XP team.

Essential XP: Junior / Senior Pairing   Ron Jeffries   09/29/2001

Pair programming might be useful between peers. But it seems like an inefficient use of a "senior" person's time to be tied down to a "junior" person. Experience shows that pairing almost always pays off for both parties. However, not all readers are convinced: how about you?

They're called Practices for a reason   Ron Jeffries   09/05/2001

People ask whether they have to do the XP practices to be doing XP. In some environments, some of the practices are difficult or impossible. You don't have to do the practices to be doing XP: You have to have done them. Practice makes perfect.

Essential XP: Card, Conversation, Confirmation   Ron Jeffries   08/30/2001

The XP Circle of Life helps keep projects alive. A key aspect of this cycle is the Acceptance Test. Acceptance Tests are critical to communication among team members, especially between customer and programmer.

Essential XP: Unit Tests at 100   Ron Jeffries   08/21/2001

When unexpected defects arise, it can take a long time to isolate the problem. This can have large and unpredictable impact on the team's progress. Extreme teams release software frequently, keeping their unit tests at 100 percent. The result is smoother progress toward completion, fewer unhappy surprises, and continuing improvement in quality.

The Case for XP   Chris Morris   12/13/2000

A pre-introduction to XP from the perspective of the average corporate developer.

When is it not XP?   Chet Hendrickson   12/05/2000

Let's try to get a sense of what is good process and what is not, without a lot of rigmarole about the specific practices.

Curves   Ron Jeffries   12/04/2000

An XP approach may deliver more value throughout the entire project.

Dependency Analyzer Pt 2   Michael Feathers
mfeathers@objectmentor.com
  12/03/2000

Building a C++ Dependency Analyzer Test-First.

An Extreme Space Plan   Ron Jeffries   12/02/2000

Here's the C3 programming space!

C++ Unit Testing from the Inside Out   Bill Pyritz   11/30/2000

Bill discusses the benefits of test first programming in an instrumented C++ telecommunications application.

Are we really doing XP?   Ron Jeffries   11/27/2000(updated)

"Are we doing XP?" may be the wrong question.

Eye of the Hurricane   Mario Contestabile   10/01/2000

Experiments with XP in a difficult environment.

Business Analysis in XP   Ron Jeffries   09/01/2000

Business analysts should work as aides to the customer, not as an interface between customer and programmer

Reexamining the Cost of Change Curve   Alistair Cockburn   09/01/2000

Alistair says that XP does not flatten the exponential cost of change curve.

Test First Design   Michael Feathers   09/01/2000

Growing an application one test at a time
The Series
Introduction
Part 1
Part 2

Dependency Analyzer Pt 1   Michael Feathers
mfeathers@objectmentor.com
  09/01/2000

Building a C++ Dependency Analyzer Test-First.

House Analogy   Ron Jeffries   08/01/2000

Houses aren't software. You can build software incrementally.

A Simple Alarm Clock   Ron Jeffries   07/01/2000

We build a simple alarm clock object, applying the XP rules of simplicity, just to see how it will turn out.

XP and the CMM   Ron Jeffries   01/01/2000

How do XP and CMM relate?

An Open Approach   Ron Jeffries  

An introduction to some of the key XP practices

Antici ...   Ron Jeffries  

Modeling the cost and return of anticipation shows that it may not be as valuable as we think.

Incremental Requirements Capture   Pete McBreen  

How can we approach a project with a very limited analysis phase.

The King's Dinner    

A somewhat hokey tale about the XP variables, Resources,Scope, Quality, Time.

Proposed XP Experiments   Ron Jeffries  

Let's get some data about XP!

Story andTask Cards    

The overly complex cards once tried on C3. Don't try these at home.

Task Estimation   Ron Jeffries  

Repeated estimation and tracking results in improved ability to estimate.

Unofficial XP FAQ   Peter Gassman  

Questions about how and when to do some XP practices.

We'll Try   Ron Jeffries  

"Of all the words of tongue or pen, the saddest are these .. it might have been."

XProgramming > XP Magazine Index
COLLECTED TOPICS: Adventures in C# | Documentation in XP | Book Reviews