Exploration Through Example

Example-driven development, Agile testing, context-driven testing, Agile programming, Ruby, and other things of interest to Brian Marick
191.8 167.2 186.2 183.6 184.0 183.2 184.6

Sun, 18 Feb 2007

Two interviews

Two interviews with me recently went online. The first, at On Ruby, is about Ruby, amazingly enough. Also about Everyday Scripting with Ruby. The second is from Dr. Dobb's and is mainly about testing in Agile projects. A lot of overlap with this blog.

## Posted at 14:05 in category /misc [permalink] [top]

Tue, 13 Feb 2007

A snippet

... I told her there was hope for the Big Apple yet.

"It all depends on our ability to devise a set of robust arguments favoring either scientific materialism or theistic revelation and then commmunicating the salient points to the Martians in their nonlinguistic language, which was apparently deciphered several years ago by a paranoid schizophrenic named Annie Porlock," I told Valerie.

"That's not a sentence you hear every day," she replied.

—James Morrow, in The Cat's Pajamas and Other Stories, "The War of the Worldviews"

## Posted at 20:47 in category /misc [permalink] [top]

Fri, 09 Feb 2007

A really nice example of an interaction bug

From Joe Loughry in Risks Digest (via Paul Czyzewski):

1. Microsoft Windows Vista comes with voice recognition installed and active by default.

2. Voice services has tons of security privileges, since it is a "local" service and therefore safe, right?

3. Playing a sound through the speakers on Vista requires almost no security privileges, since that's a harmless operation, right?

4. By playing a prerecorded file of spoken commands, an unprivileged process can execute arbitrary processes that get executed with elevated security privileges.


I'm also fond of being able to guess passwords using virtual memory.

## Posted at 14:21 in category /misc [permalink] [top]

Wed, 07 Feb 2007

Welcome home, troops

In response to continuing financial strains, U.S. Army Europe has canceled all welcome home celebrations for units returning from deployment through this fiscal year, halting the tradition of free food, rides and other community festivities for returning soldiers and their families. [...]

One of the largest units to be affected by the decision will be the 1st Armored Division's 1st Brigade, based in Friedberg, Germany. Deployed since January of 2006, brigade soldiers found out in September that their deployment would be extended by about six weeks, bringing them home in March instead of January this year. [...]

In Baumholder, Germany, where the 2nd Brigade is based, local leadership is considering some sort of potluck supper for the returning company in place of a command-sponsored event, said Ignacio Rubalcava, a spokesman for the Baumholder garrison. [...]

But any kind of potluck for the company and its family members would have to be funded and supported by people in the community, he said.

"Potluck is potluck, and people would bring it on a voluntary basis," Rubalcava said. "I think they're going to pull it off somehow."

Yeah, I know, this might be another of those bureaucratic mixups that gets fixed when publicized, or something blown out of proportion, but at some point, you start to wonder if those who profess such support for the troops actually view them as game pieces rather than people.

## Posted at 09:28 in category /misc [permalink] [top]

Thu, 25 Jan 2007

Everyday Scripting with Ruby

Everyday Scripting with Ruby is out.

We're pleased to announce that Brian Marick's new book, "Everyday Scripting in Ruby" is now available.

For details, please visit http://pragmaticprogrammer.com/titles/bmsft.

Are you a tester who spends more time manually creating complex test data than using it? A business analyst who seemingly went to college all those years so you can spend your days copying data from reports into spreadsheets? A programmer who can't finish each day's task without having to scan through version control system output, looking for the file you want?

If so, you're wasting that computer on your desk. Offload the drudgery to where it belongs, and free yourself to do what you should be doing: thinking. All you need is a scripting language (free!), this book (cheap!), and the dedication to work through the examples and exercises.

Available now from http://pragmaticprogrammer.com/titles/bmsft/.

## Posted at 19:29 in category /misc [permalink] [top]

Thu, 04 Jan 2007

The people have spoken

In November, the people of the United States elected the 110th Congress, which has just been sworn in. More, they sent a message, loud and clear: it's time for people to take responsibility for their screwups and be specific about why anyone should believe they'll do better going forward. With this note, I obey the people's command.

I most regret these two failures from last year:

  • I did a lousy job as the product director for the new Agile Alliance web site. I quickly found myself without enough time to do it right. I then made the classic mistake of not calling for help. Instead, each iteration I reviewed completed stories less carefully and tested them less thoroughly. As time went on, I produced only sketchy stories: essentially, I dumped my responsibility for the shape of the product in the programmer's lap. I "managed" the project into being late and over budget.

    Thankfully, someone else is now the product director, so I don't need to explain how I'll do better at that. However, I need to deal with my track record of saying "Yes" to worthy causes. Therefore, for the rest of this year, the answer to any software-related opportunity to volunteer is "No" unless:

    1. It has to do with either (a) supporting the product director role or (b) working against the notion that Agile is a ready-to-package commodity rather than a half-understood craft, and

    2. I'm working as part of a team. And not the least dispensible part, either.

  • As the head of the page shows, I'm nearly back at the weight that gave me my "big visible belly" idea. The root cause was that last year was a really lousy year in a lot of ways. Stress ⇒ flab. At some point, the embarrassment of weekly backsliding or at best stasis caused me to stop updating my visible chart of non-progress: and that was all she wrote.

    I will regain my svelteness because:

    1. I'm getting rid of the stress of over-volunteering and then letting people down.

    2. I dropped thirty pounds in my late twenties. It took until my early/mid forties to gain the weight back. In this second drop, it took less than a year to bounce back up. After a lifetime outside popular culture, my self-image cannot let me join in on the trite peak-and-valley weight loss cycle.

    3. I rely more on exercise than not eating to lose weight. I have three chronic joint and tendon injuries that make certain exercises impossible and others difficult. I find that incredibly discouraging. At least one, perhaps all, of the injuries are chronic because I was too much of a milquetoast to insist on thorough treatment while they were still acute. I'm going to get some decent treatment now. I know that chronic injuries don't get fully reversed, and I know that even an injury-free me could never regain my peak. (Ah, the days of 10% body fat and a resting pulse rate below 60...) But I can make things less difficult.

Your turn, Mr. President.

## Posted at 21:53 in category /misc [permalink] [top]

Wed, 13 Dec 2006

Best signature ever

Plucked from the bottom of mail from Pete McBreen:

"For a list of all the ways technology has failed to improve the quality of life, please press three." - Alice Kahn

## Posted at 12:26 in category /misc [permalink] [top]

Tue, 12 Dec 2006

Primary Loyalties

This is an editorial that expanded on an offhand earlier post. It was rejected. While it does have two potentially offensive analogies, I figure I have more leeway in what I publish here. It's had a postscript added and is now filled with hyperlink goodness.

A recent UN report states that "New explosive devices are now used in Afghanistan within a month of their first appearing in Iraq." (Reuters, September 27, 2005). Compare that to the rate of diffusion of technology in our field. I'll use continuous integration as an example. It's a well-established technology that's easy to deploy, is practically without risk, has considerable benefit, was first widely described in 2000, and has had a solid open source tool supporting it for at least three years. But there's a reasonable chance you've never heard of it. (Note: true of original audience; likely not true of this blog's audience.) If you tried to deploy it, it might well take months and months to get permission, to round up a build machine, and to get the first people using it.

Something is desperately wrong with this picture. Why is it that people living in isolated harsh conditions where people are trying to kill them can move faster than we can in our offices?

John Robb, a software executive and former Air Force counterterrorism operative, describes what the guerrillas do as open-source warfare, and he's developed a rather elaborate theory of how that works. One underpinning of the theory is what he calls primary loyalties. "A primary loyalty is a connection to a non-state group that is greater than loyalty to a state. These loyalties include those to clan, religion, tribe, neighborhood gang, etc. These loyalties are reciprocated through the delivery of political goods [...] by the group that the state cannot or will not deliver."

Professional-class employees like you and me once had something like a primary loyalty to our employer, especially if it was a large company. In the US and elsewhere, that employer delivered "goods" to us like steady employment, guaranteed pension, medical care, a career path, and the training we needed to advance along it. Under Anglo-American capitalism, at least, corporations no longer deliver many of those things. Instead, as is described in Jacob Hacker's The Great Risk Shift, companies have given us the opportunity and responsibility to provide those things for ourselves. For example, instead of being given a guaranteed pension, we're given money to invest. If we invest well, we'll end up with more retirement money than the pension a company would have given us; if not, well, tough luck.

Whether that's a good or bad shift, employees have acted like people in Iraq and other failed states: they've shifted their primary loyalty elsewhere. In the US, we've seen rising nationalism, increased devotion to religious groupings, and more loyalty to political "tribes" (though not increased formal party membership). None of those loyalties have anything to do with work. Therefore, according to Robb, we're missing a key part of the infrastructure that supports fast diffusion and implementation of technologies at the office.

I think that's bad. We need groups that deliver the goods and are deserving of loyalty. Existing structures (unions, professional societies) aren't working, and I'm loathe to wait for them to start. The best I can offer is the autonomous team. I'm not talking about collections of individuals who've sleepwalked through "team-building exercises," but actual teams that work together very closely (often in pairs), learn together quickly, and provide cover for each other. When a team is working, the business comes to view it as a single specialist, a unit, with authority over what happens within itself. If the team decides to try continuous integration, it will deploy it without ever thinking to ask permission.

I acknowledge that it's offensive, at some gut level, to suggest emulating killers. But if this decade has a notable example of the "learning organization", it is—sadly—groups of insurgent cells with high internal loyalty and loose connections to both each other and also to the overarching sources of goals and funding.

P.S. John Robb's ideas haven't convinced me yet—sometimes his analogies seem more than a bit strained—but you may find his site worth a read. Hacker's notion of a risk shift has also drawn some scorn, though that particular link misses the point that matters to me. If you're an investor in the stock market, you expect stocks with higher volatility to pay higher returns over time. The higher returns are your payment for accepting higher volatility, usually tagged as "risk". What I take from Hacker is that a career today has higher volatility than in the past, but that higher risk has not come with significantly higher returns—instead, the US real median income has increased by 31% from 1967 to 2005 (source, PDF, p. 5). That's an annual real return of 0.6%. For comparison, that's a bit less than the real return on short-term US Treasury bills, historically the world's least risky investment.

## Posted at 07:53 in category /misc [permalink] [top]

Mon, 11 Dec 2006


My wife is writing the chapter on mammary gland health and disorders for Large Animal Internal Medicine, a standard reference. Her current draft is 119 double-spaced pages. It has 532 citations. The scary thing is how much she remembers—off the top of her head—about the contents of the papers. She is truly a fox.

Me, I can barely remember the difference between Facade and Adapter.

## Posted at 14:14 in category /misc [permalink] [top]

Thu, 30 Nov 2006

Did I say "Scripting for Testers"?

Scripting for Testers has been renamed Everyday Scripting in Ruby because a couple of reviewers argued that pretty much all that was required to make it suitable for a larger audience was changing the title and the bit of Introduction that says who the book is for. So we did.

I hope testers still pick it up. The subtitle says "for teams, testers, and you", which helps Google find it when you type in "scripting for testers." (It's the top hit.)

Sadly, the scheduled ship date is a bit after Christmas. Since it would be sad if testers didn't get the book under their tree, we've decided to delay the holiday.

Thanks to those who helped me on it: Mark Axel, Tracy Beeson, Michael Bolton, Paul Carvalho, Tom Corbett, Bob Corrick, Lisa Crispin, Paul Czyzewski, Shailesh Dongre, Gunjan Doshi, Danny Faught, Zeljko Filipin, Pierre Garique, George Hawthorne, Paddy Healey, Andy Hunt, Jonathan Kohl, Bhavna Kumar, Walter Kruse, Jody Lemons, Iouri Makedonov, Chris McMahon, Christopher Meisenzahl, Grigori Melnik, Sunil Menda, Jack Moore, Erik Petersen, Bret Pettichord, Alan Richardson, Paul Rogers, Tony Semana, Kevin Sheehy, Jeff Smathers, Daniel Steinberg, Mike Stok, Paul Szymkowiak, Dave Thomas, Jonathan Towler, and Glenn Vanderburg.

UPDATE: People have pointed out the lack of links. I am a master of Marketing.

## Posted at 06:47 in category /misc [permalink] [top]

About Brian Marick
I consult mainly on Agile software development, with a special focus on how testing fits in.

Contact me here: marick@exampler.com.




Agile Testing Directions
Tests and examples
Technology-facing programmer support
Business-facing team support
Business-facing product critiques
Technology-facing product critiques
Testers on agile projects

Permalink to this list


Working your way out of the automated GUI testing tarpit
  1. Three ways of writing the same test
  2. A test should deduce its setup path
  3. Convert the suite one failure at a time
  4. You should be able to get to any page in one step
  5. Extract fast tests about single pages
  6. Link checking without clicking on links
  7. Workflow tests remain GUI tests
Permalink to this list


Design-Driven Test-Driven Design
Creating a test
Making it (barely) run
Views and presenters appear
Hooking up the real GUI


Popular Articles
A roadmap for testing on an agile project: When consulting on testing in Agile projects, I like to call this plan "what I'm biased toward."

Tacit knowledge: Experts often have no theory of their work. They simply perform skillfully.

Process and personality: Every article on methodology implicitly begins "Let's talk about me."


Related Weblogs

Wayne Allen
James Bach
Laurent Bossavit
William Caputo
Mike Clark
Rachel Davies
Esther Derby
Michael Feathers
Developer Testing
Chad Fowler
Martin Fowler
Alan Francis
Elisabeth Hendrickson
Grig Gheorghiu
Andy Hunt
Ben Hyde
Ron Jeffries
Jonathan Kohl
Dave Liebreich
Jeff Patton
Bret Pettichord
Hiring Johanna Rothman
Managing Johanna Rothman
Kevin Rutherford
Christian Sepulveda
James Shore
Jeff Sutherland
Pragmatic Dave Thomas
Glenn Vanderburg
Greg Vaughn
Eugene Wallingford
Jim Weirich


Where to Find Me

Software Practice Advancement


All of 2006
All of 2005
All of 2004
All of 2003



Agile Alliance Logo