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 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 03/28/2008After 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 03/27/2008The 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 03/04/2008Organizations 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 12/21/2007Chet 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???
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 11/13/2007We 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 11/12/2007We 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 11/05/2007After 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 06/14/2007With 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 06/12/2007We 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 06/11/2007In 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 06/07/2007Our tests run, the code structure is good, yet we are not entirely happy. What's up with that?
Reloading the Shotgun Project 06/05/2007Distracted 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 05/07/2007After 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? 02/02/2007With 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 01/24/2007We'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 01/23/2007When 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 01/15/2007We 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 01/14/2007We draw some density pictures, improve some code, and recognize at least some of our flaws.
Shooting for Cleaner Still 01/09/2007A few more notes from our friends, and a solo pass over the code. Redneck's last words? "Watch this!"
Shooting for Cleaner Code 01/08/2007Last 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 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 01/04/2007Much less effort, a step toward perfection. And perhaps we know why ...
Shooting for the Foot -- and MissingToday's plan was to write the acceptance test for another story, and make it run. The best-laid plans ...
Shooting in All Directions 01/03/2007Chet 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 01/01/2007Here's the call for participation for the Agile2007 conference, August 13-17, 2007, in Washington, DC.
I Have No Idea Why I Did This ... 12/30/2006I 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 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 12/22/2006All 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 12/21/2006We combine the PatterningSheet into ShotPattern, and discuss the effects of doing so.
Shotgun Hit Consolidation 12/20/2006Today 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 12/17/2006On 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 12/09/2006A 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 12/08/2006We'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 CirclesI 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 12/06/2006We'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 12/04/2006We'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 DawnOur 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 12/03/2006Input from a few readers, and our initial estimates for the shooting project.
Shooting in the Dark 11/29/2006While 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 11/28/2006Estimation, simplicity, TDD, tracking. Chet and Ron undertake a project a bit larger than their usual run, to see what happens.
Single Frame Cleanup 11/16/2006The 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 11/15/2006Let'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 11/07/2006The 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 11/05/2006The continuing saga of recursive implementations of Bowling, email from our fans, and a refactoring of my Java code.
More Hassling with Haskell 11/04/2006Lots 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 11/01/2006At 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 10/20/2006Dogbert teaches us all a management lesson. He's even offering a diploma. Is that better than a certificate?
Call for Papers: IEEE Special Issue 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.
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.
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 09/04/2006It 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 07/13/2006The 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 07/11/2006The 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 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 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 07/07/2006A 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 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 06/04/2006A comment from Alan Shalloway, on the Lean Development group, points the way to fame and fortune!
Automating "All" Tests 05/25/2006Sure, 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 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 05/02/2006An allegory? Sarcasm? Humorous pastiche? You decide.
Book Review: Pragmatic Ajax 04/29/2006Justin 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 04/22/2006Between 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 04/17/2006Scott 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 04/14/2006More 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 03/26/2006On 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 03/16/2006I 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 03/15/2006Today 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 03/14/2006We 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 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 03/12/2006I 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 03/10/2006We 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 03/09/2006Chet 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 03/08/2006In 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 03/07/2006Using 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 03/06/2006A TDD demonstration of the Bowling Game suggested that there is material there worth mining. Let's start digging.
Designated QA People on the Team 02/23/2006Recently 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 02/23/2006A 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 12/13/2005The 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 12/12/2005Our 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 12/09/2005We'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 12/04/2005We'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 12/03/2005We 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 11/30/2005Some cleanup efforts lead us to a theoretical idea, and to a successful spike. Out of chaos, order.
XST: Theory to the Rescue 11/28/2005There'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 11/25/2005I 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 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 11/22/2005One 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 11/21/2005In which we discover that our implementation is "totally wrong" and we have to rewrite everything. Or do we?
XST: a Ruby Experiment 11/20/2005A small experiment, implementing "restrict" in Ruby. As usual, warts and all.
XST: More Thoughts on Extended Set Theory 11/19/2005Some 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 11/17/2005For 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 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.
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 08/06/2005Chet 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 07/29/2005There'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? 06/11/2005Can 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 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 02/24/2005Ron 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 01/16/2005To 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 01/15/2005Our 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 01/02/2005Harald 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? 12/28/2004These 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 12/27/2004Based 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 12/25/2004A 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 12/22/2004I 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 12/22/2004Some 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' 12/21/2004Let'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! 12/20/2004Let's reflect a bit on the Smalltalk bowling experiment so far. And then ... I've got an idea!
DBC: Bowling For Smalltalk II 12/19/2004In 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 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 12/07/2004Ah. 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 10/27/2004To 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 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 10/04/2004Brian 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 10/01/2004I 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 09/24/2004It's important to take grammar seriously, even if she has been dead for years.
Hearts as Weapons 09/21/2004To 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?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 09/19/2004We 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 09/17/2004Inspired 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 09/16/2004Chet 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 09/14/2004In 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 09/07/2004I'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 09/06/2004Inch 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 09/05/2004When 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 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 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 04/12/2004The 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 02/23/2004An 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! 01/15/2004And thirdly, the Code is more what you'd call guidelines than actual rules.
-- Captain Barbossa (Pirates of the Caribbean)
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 12/08/2003Steve 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 11/20/2003Object 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 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 11/17/2003When 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 09/11/2003I 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 09/10/2003This 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 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 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 08/19/2003Barry 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 08/01/2003Maybe 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 07/28/2003With 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? 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? 06/03/2003The 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 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!)
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 02/14/2003We 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 01/25/2003As 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 12/16/2002These 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 11/24/2002A 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 11/21/2002The 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 10/14/2002By 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 10/09/2002Jeff, 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 10/08/2002Wyatt provides a detailed, exciting, and valuable diary of a project moving towards Extreme Programming. Highly Recommended.
Virtual Mock Objects using AspectJ with JUNIT 10/01/2002The 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 09/23/2002Visual 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 09/05/2002We'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 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 08/21/2002Chet 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 08/20/2002Sometimes the bear bites you. Today it bit Ron and Chet.
Take a Card, Any Card 08/13/2002Using 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? 08/09/2002Dinner with Watts Humphrey convinces Chet and Ron to do an experiment involving <horrors/> actual data!
The Priorities Changed! 08/02/2002All 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 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 07/08/2002I 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 06/29/2002A 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 06/24/2002Feedback 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 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 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 03/25/2002On 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 03/20/2002It 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 02/08/2002If 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 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 02/02/2002Chet 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 01/28/2002A detective in puce, mentoring, massive parallel processing, and two books on writing. What more could you want?
Book Reviews II 01/28/2002Chet looks at some humor and some ancient architecture. We leave it to you to figure out which is which.
Test First Guidelines 01/25/2002Sean Shubin has begun using Test-First development. He wanted to share these ideas and guidelines with us.
Misconceptions about XP 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 01/20/2002Bryan 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 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 01/20/2002People 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 01/20/2002Fear 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 01/16/2002Ellen 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 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.
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? 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 10/26/2001One 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 10/21/2001There 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 10/08/2001One 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 10/07/2001Kent 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? 09/30/2001XP 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 09/29/2001Pair 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 09/05/2001People 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 08/30/2001The 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 08/21/2001When 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 12/13/2000A pre-introduction to XP from the perspective of the average corporate developer.
When is it not XP? 12/05/2000Let'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 12/04/2000An XP approach may deliver more value throughout the entire project.
Dependency Analyzer Pt 2 12/03/2000Building a C++ Dependency Analyzer Test-First.
An Extreme Space Plan 12/02/2000Here's the C3 programming space!
C++ Unit Testing from the Inside Out 11/30/2000Bill discusses the benefits of test first programming in an instrumented C++ telecommunications application.
Are we really doing XP? 11/27/2000(updated)"Are we doing XP?" may be the wrong question.
Eye of the Hurricane 10/01/2000Experiments with XP in a difficult environment.
Business Analysis in XP 09/01/2000Business analysts should work as aides to the customer, not as an interface between customer and programmer
Reexamining the Cost of Change Curve 09/01/2000Alistair says that XP does not flatten the exponential cost of change curve.
Test First Design 09/01/2000
Growing an application one test at a time
The Series
Introduction
Part 1
Part 2
Building a C++ Dependency Analyzer Test-First.
House Analogy 08/01/2000Houses aren't software. You can build software incrementally.
A Simple Alarm Clock 07/01/2000We build a simple alarm clock object, applying the XP rules of simplicity, just to see how it will turn out.
XP and the CMM 01/01/2000How do XP and CMM relate?
An Open ApproachAn introduction to some of the key XP practices
Antici ...Modeling the cost and return of anticipation shows that it may not be as valuable as we think.
Incremental Requirements CaptureHow can we approach a project with a very limited analysis phase.
The King's DinnerA somewhat hokey tale about the XP variables, Resources,Scope, Quality, Time.
Proposed XP ExperimentsLet's get some data about XP!
Story andTask CardsThe overly complex cards once tried on C3. Don't try these at home.
Task EstimationRepeated estimation and tracking results in improved ability to estimate.
Unofficial XP FAQQuestions about how and when to do some XP practices.
We'll Try"Of all the words of tongue or pen, the saddest are these .. it might have been."