Archive for January, 2008

Kanban-esque scheduling

Kanban-inspired scheduling is the most interesting idea to come along in a while. Read the links above for a fuller description, but the short version is that there’s a fixed pipe of work items, where each is larger than a traditional story. (As I’ve noted before, small stories compensate for our inability to estimate by shifting work to the product director.) The larger work items, often called “minimum marketable features (MMFs)”, contribute a more satisfying chunk of business value than a small story can.

Rather than scheduling an iteration at the beginning, you just keep the pipe full. When one MMF is done, the product director puts the next one in.

It has an appealing simplicity, and I think it fits in well with Jeff Patton’s recent focus on not letting incremental development squeeze out iterative development. (Jeff thinks so too.)

What worries me is discipline. An iteration is a fairly firm commitment to produce X amount of value in Y amount of time. A MMF is, too, but there isn’t (as far as I understand) any moment when some defined set of MMFs is either done or not done. Their “lifetimes” always overlap. Since the people working on this are savvy, I’m sure they have ways for people to take stock of how they’re doing, whether they’re getting faster or slower, etc. I just don’t know what those ways are, and it’s the only thing keeping me from dipping my toe into the water.

What kind of virus is Scrum?

Jason Gorman compares Scrum to a virus. He uses the example of a DNA virus that destroys the cells it infects. But it could be an endogenous retrovirus that infects the DNA of germ (reproductive) cells and thereby takes over an entire species. From an interesting New Yorker article:

It takes less than two per cent of our genome to create all the proteins necessary for us to live. Eight per cent, however, is composed of broken and disabled retroviruses, which, millions of years ago, managed to embed themselves in the DNA of our ancestors. They are called endogenous retroviruses, because once they infect the DNA of a species they become part of that species.

There is even some evidence that:

without endogenous retroviruses mammals might never have developed a placenta, which protects the fetus and gives it time to mature. That led to live birth, one of the hallmarks of our evolutionary success over birds, reptiles, and fish. Eggs cannot eliminate waste or draw the maternal nutrients required to develop the large brains that have made mammals so versatile. “These viruses made those changes possible,’’ Heidmann told me. “It is quite possible that, without them, human beings would still be laying eggs.”

So that kind of Scrum-as-a-virus could be a positive and enduring good (though there’s a lot of suffering amongst the “early adopters”).

The experience of scripting: a movie

I’ve made a video showing something of what it feels like to script a Mac application using Ruby. It also explains the basics of rb-appscript, one of the two main Ruby frameworks.

I made it after a burst of frustration with how often my scripting runs into wholly unnecessary snags. What I wish I knew is how many people who would love to script iTunes or Mail or whatever won’t because app developers make it too hard.

Perhaps I’ve stumbled into more snags than a normal human would (being a tester curses you that way). Or perhaps I overreact. Both seem to happen a lot. If you have experience with AppleScript or Ruby scripting, and you think so, let me know in comments or mail.

The video is 13 minutes long.

This is hard to believe

I am nerdier than 96% of all people. Are you a nerd? Click here to find out!
I’m pleased but surprised. I was lower than ideal on many questions. I’ve never even built a computer.

It’s even odder when you consider that the badge is wrong: I’m actually nerdier than 96% of people who took the test.

H/t Ron Jeffries, who is definitely more of a nerd than I am.

Naked Agilist podcast is up

Kevin Rutherford:

Clarke Ching has now published the podcast of last Saturday’s Naked Agilists conference. You can download it by following the links from, or get it directly from Clarke’s blog. It’s a great 90 minutes of presentations and discussions, and the Naked Agilists website has links to the slides so you can follow the presentations along with the speakers.

We had five 10-minute presentations:

  1. Servant Leaders — Nancy van Schooenderwoert
  2. — Laurent Bossavit
  3. Fit4Data — Adrian Mowat
  4. Shared data for unit tests — Paul Wilson
  5. Let them Eat Cake — Brian Marick

And after each little session we had 5-minutes of discussion and Q&A. Also taking part in these discussions were Clarke, who chaired the whole thing expertly, me, and Willem van den Ende, who helped put the show together (as did Brian Marick).

Join the Naked Agilists mailing list to find out when the next event will be — and help us find an inexpensive technology that will make it live and interactive!

Note: Nancy’s talk (the first) is hard to hear. Too bad.

Uncrossing the chasm

In the Naked Agilist podcast (not posted yet), I reiterated a claim I made at the Functional Testing Tools workshop: that it’s a bad thing Agile has “crossed the chasm” and maybe a big chunk of us ought to cross back. Adrian Mowat writes sensibly about my outlandish claims on his new blog. I recommend his post, as he makes a strong case that (my interpretation) we’re failing both Moore’s visionaries and the conservatives.

Offer: I’ll write a script for you

As part of working up Ruby Scripting for Leopard, I need to write piles of scripts. If you have a script you’d like to see written, drop me a line. It needs to be a script that controls applications in either /Applications or /System/Library/CoreServices. The application should be one that’s pre-installed or one that most everyone should install anyway (e.g., Quicksilver). You have to be running OS X 1.5 (Leopard).

Good design: driven, but not constrained, by specifics

From a set of notes by Chris Heathcote on Donald Norman’s new The Design of Future Things:

We’ve been taught to design systems for a purpose – preferably one purpose – collected through use cases and designed against them. Use case collection never really includes crazy ideas or tries to foretell unexpected and unplanned uses. Good design, in my mind, is designing enablers or tools that include the use cases given, but have breathing room, rather than designing strictly to the use cases. It could be said that this reduces usability, and it often does, but with the flipside of user value.

Too-narrow design is a substantial risk for Agile projects. Part of the reason for making a ubiquitous vocabulary part of the everyday project conversation is that it keeps people’s heads a bit in the problem domain, not just in the solution domain. That gives them leave to think in terms of more-general tools rather than whatever makes this story’s tests pass.

Refactoring is another technique that helps, since it tends to push the code toward generality. But it can’t be taken far enough, I think, unless there’s explicit slack in the project pace. You need breathing room to refactor, get an idea from that refactoring, use that idea to think again about the problem, and put the results of your thinking to some sort of test.

Controlling iTunes with Ruby (alternate take)

Here’s a different version of the same playlist-generating script. This one uses rb-appscript rather than the built-in Scripting Bridge. (Raw source here.)

Controlling iTunes with Ruby

In working on Ruby Scripting Leopard, I’ve been helped by searching for AppleScript examples, such as those at Doug’s AppleScripts for iTunes. To pay it forward, I offer an example to some future searcher after the jump. Since WordPress (or something) is turning quotes into “smart” quotes, follow this link if you want plain text.

This should work on stock Leopard.

I run it via launchd, the replacement for cron(1). Lingon is a convenient way to create a launchd configuration file.