Archive for the 'agile' Category

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”).

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 www.nakedagilists.com, 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. wevouchfor.org — 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.

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.

Questions about submitting to Agile 2008

Some questions on the submission process for Agile 2008, passed along by an Example stage committee member.

What the heck is a “stage” anyway?

I am thinking of a stage as a “conference within a conference.” It’s like a stage at a large music festival, where there’s a particular physical location where you might go to hear blues. (Plug here for Karen Carroll.) Buy a pass to the music festival and you can wander among the stages, seeing what you like. Or you might decide to hang out at a particular stage with people who share your particular obsession.

The “stage producers” have a lot of leeway in how they organize their own particular stage. That’s why the answers below should be considered specific to our stage.

How will the submissions be reviewed? What constitutes a good submission?

The first stage reviews will be public, on the submission website. The purpose of the website is to help the submitter hone the submission into its best possible form.

After submissions are closed, I’m planning to have something similar to what’s done at many software conferences:

  1. Everyone votes on the submissions she’s read, using a four point scale:
    A: I will champion this submission (argue vigorously for its inclusion).
    B: I support this submission, but it wouldn’t break my heart were it not included.
    C. I think this submission should be rejected, but I could live with it being accepted.
    D. You have got to be kidding! Accept this?

    Most submissions will have a near consensus. The interesting cases are those where you get one A and four C’s (or A’s and D’s).

  2. It’s possible that the number of clear accepts fits exactly within the space boundaries we have. More likely, we’ll need to make some choices. These get made in a phone conference. The structure of the conference depends on the submissions and how they match up with our available space. Here’s one possible scenario:

    We have five open slots. There are also five interesting disagreements. We discuss them. In two cases, the negative votes agree to accept. In one, we decide that we’ll provisionally accept if the proposer adds some particular improvement.

    Now we need three other cases (two definite accepts, one if the provisional accept falls through). People propose sessions from among the pool of ones that no one’s either strongly for or strongly against. Which sessions do they propose? Probably it depends on how they stack up against the already-accepted sessions: does a not-yet-accepted session complement or nicely contrast with one we’ve already got?

What keeps this from being a popularity contest, where only the most well-known names get accepted?

All of you reviewers do. The visibility of the submission process should help. If some Big Name writes a sketchy submission that displays no effort (which happens more than I’d like) and we accept it, the shame of it will follow us the rest of our lives.

There is an argument for accepting Big Names: it draws attendees to the conference, some attendees (especially first-timers) are more likely to listen to them, and it gets people who most likely are Big Names for a reason to the conference, where they can wander the hallways dispensing wisdom. Since this stage is for an oddball topic where there are no big names, that argument does not apply to us.

How will the sessions be compensated? Do they all get the same
compensation?

This is supposed to be on the website (there’s text saying so), but I couldn’t find it. Bug has been reported. Here’s what was once the correct information:

2. Here's the compensation for speakers, it's still based on session type.
  * Tutorial/Discovery session: 90 min: USD 250, up to 2 free
registrations, 5 night hotel, 1 room ; 180 min: USD 500, up to 2 free
registrations, 5 night hotel, 1 room
  * Experience Report/Research Paper: 1 free registration
  * Panel: moderator: free registration, 5 night hotel; panelists: free
    registration
  * Main Stage presenters (formerly known as talking heads): USD 700, free
    registration, 5 night hotel, 1 room
  * Free registrations and free hotel nights are non-transferable and
non-accumulatable.

 

This does not cover “other.” Compensation for other will be handled case-by-case. Here’s the way I think about it:

  1. Things that are normal for conferences (presentations) get one free registration.

  2. Things that require substantial extra work or require special expertise in crowd management or are popular enough that they will help sell the conference get free registrations and some amount of hotel rooms and money.

  3. Panels get compensation way in excess of the effort required. But they’re popular among attendees, so they’re worth paying for.

How complete should a proposal be when I first submit it? What’s
considered to be “complete”?

It should be complete enough to entice a modestly public-spirited committee member or interested reader to take the time to write helpful suggestions.

“Complete for final consideration” means that every idea you (the submitter) have for improving the session or improving your argument for the session seems like more trouble than it’s worth.

That sounds like I’m being flippant, but I’m not. I don’t think completeness is something you can know a priori. You construct what completeness means by moving toward completion.

A more helpful answer might be this: does the submission describe enough that a reader can imagine what it would be like to attend that session? what they can (best case) leave with?

What’s the definition of the various “session types” - Demonstration, Experience report, Panel, Talk, Tutorial, Workshop? Does my submission have to be one of these?

Here are my understandings:

  • A demonstration is where you show an audience something. The thing is traditionally a tool in use. (”Here’s how Watir works.”) It can also be a demonstration of a technique. (”Watch as I use session-based testing on this here app.”)

  • An experience report is the result of some personal experience over an extended period of time (most typically a complete project). The goal is that the audience understands what happened and what the presenter learned, and that they can map that experience onto their own.

  • Panel is a moderator plus N people, all sitting on the stage at once. What happens then is up to the moderator. Typically the moderator explains the topic, then each of the N people says something about it. Then the moderator may ask provoking questions, and the panelists talk about them. Typically questions are taken from the audience, and the panelists try to say something interesting and profound.

  • A talk is a presentation like a demonstration or experience report, but it doesn’t fall into one of those categories. Like them, audience participation is usually limited to questions after the talk.

  • A tutorial is a longer session where the presenter is someone specially qualified to teach a particular topic (preferably both an expert in the topic and with considerable experience teaching). Tutorials usually have some “experiential” component where people practice what has just been explained. Participants come to a tutorial to learn, in some detail, what someone else already knows.

  • A workshop (aka Discovery Session) is organized by someone who thinks not enough is known about a particular topic and wants to do something about it. So, in contrast to a tutorial, there’s not the metaphor of knowledge flowing out of a teacher’s mind into the minds of a pile of students. There is a group of more-or-less peers creating new knowledge. Sometimes this is through some form of structured discussion. But there’s often an experiential component: a lot of learning by doing.

I am personally most interested in workshops and experience reports.

[The] consensus [of people she was speaking to] was that this year’s process heavily favors previous presenters, more so than in other years. They felt the lack of definition of sessions, lack of criteria by which sessions will be reviewed, and wide reviewership makes this year’s game nothing but a popularity contest; new folks need not apply.

Now that I think about it, what I see is a bias toward regular conference goers more than regular presenters. I think the (implicit) persona is someone who’s been to conferences and has had one of these reactions:

  1. Why did no one talk about X? I guess I’ll have to do it.

  2. I know as much about Y as anyone who presented. I guess there’s an audience for what I know.

  3. I’ve got this fuzzy idea about Z. As far as I can tell, everyone’s fuzzy about Z. But at least there will be thoughtfully fuzzy people in Toronto next year - I need some mechanism to get them together so that we can figure this thing out better.

Whether a particular stage turns into a popularity contest depends on two things:

  1. Do people just vote on proposals or do they make helpful comments?

  2. Does the selection committee pay more than passing attention to the votes, or do they spend time reading and thinking about the comment threads to reach an informed opinion?

I don’t think our stage will.

When to write test helper code

On the agile-testing list, I answered this question:

So for the first time in many, many years I’m not in a test management position, and I’m writing tests, automating them, etc. We’re using a tool called soapUI to automate our web services testing–it’s a handy tool, supports Groovy scripting which allows me to go directly to the DB to validate the results of a given method, etc. One feature of soapUI is centralized test scripts; I can create helper scripts to do a bunch of stuff–basically, I write the Groovy code I need to validate something and then I often find I’m moving it into a helper function, refactoring, etc.. My question is, how do you know the right balance between just mashing up the automation (ie, writing a script as an embeded test script) vs. creating the helper function and calling it?

Bret Pettichord suggested I blog my answer, so here it is:

I use these ideas and recommend them as a not-bad place to start:

  1. At the end of every half-day or full-day of on-task work (depending on my mood), I’ll spend a half an hour cleaning up something ugly I’ve encountered.

  2. I’ll periodically ask myself “Is it getting easier to write tests?” If it’s not, I know I should slow down and spend more effort writing helper code. I know from experience what it feels like when I’ve got good test support infrastructure—how easy writing tests can be—so I know what to shoot for.

  3. I have this ideal that there should be no words in a test that are not directly about the purpose of the test. So: unless what the test tests is the process of logging in, there should be no code like:

    create_user "sam", "password"
    login "sam", "password"
    ...

    Instead, the test should say something shorter:

    using_logged_in_user "sam"
    ...

    That tends to push you toward more and smarter helper functions.

    Unsurprisingly, I often fall short of that ideal. But if I revisit a test and have any trouble at all figuring out what it’s actually testing, I use that as a prod to make the extra effort.

What was something of a breakthrough for me was realizing that I don’t have to get it right at this precise moment. Especially at the beginning, when you don’t have much test infrastructure, stopping every twelve seconds to write that helper function you ought to have completely throws you out of the flow of what you’re trying to accomplish. I’ve gotten used to writing the wrong code, then fixing it up later: maybe at the end of the task, maybe not until I stumble across the ugliness again.

Latour 5: Disliking the divide

A transcript of an OOPSLA talk: Table of contents

A post by Clarke Ching finally nudged me to finish this Latour series. Here’s the key excerpt:

The bad news is that I think we are about to fuck it all up because (according to my jaded view of the world) we - the agile community - are focusing on the wrong things. We are focusing on optimising our technical skills (the bits we are naturally good at), but we are ignoring the skills we really need to foster within our community. What are these skills? I’d like to call them marketing and sales skills, but I think they’ll be better received if I call them “influencing” skills.

I’d like to disagree in the sense that I think things are even worse. Latour shows how.
(more…)

Pharmaceutical database online. Medications. Drugs Ingredients. ATC classification.

Maintenance & Optimization download

Folic Acid containing products.

Mouse Drivers download

Video Forum

Photoshop Plugins & Filters download

Zydos pharmaceutical products

Firefox Add-ons & Plugins download

Video Forum

Video Forum

Video Forum

Technology leads me astray

In my work with wevouchfor.org, I’ve been learning Rails. Rails is increasingly leaning toward REST. In REST, you’re encouraged to think of your site as containing piles of different kinds of resources. (Your database backend encourages the same thinking.) Rails makes implementing standard operations on those resources the path of least resistance. For example, tell Rails that one of your resources is an article, and—boom!—you immediately get these methods (from p. 410 of Agile Web Development with Rails):

Look in articles_controller.rb, and you’ll find a skeleton for the index method (produce a list of all the articles), the create method (to add a new article to the database), and so on.

Ah… working with ease. But is it the right work? In my case, this ease of work was one of the things that led me away from what I should have been concentrating on: who’s the most important user of the website, and what’s the most important thing she wants to do? As it turns out, it’s none of the REST operations. As I merrily filled in the blanks Rails gave me, I was not doing the most important thing first, and I think it likely that I was leaning toward a worse user experience.