Tuesday, April 14, 2009

Agile and Reuse

There was an interesting discussion over on the Yahoo XP Discussion List over the last few days on the topic of "reuse across projects." One thing that strikes me is that nearly all of what was said during that discussion has been said many times before. This in itself is not necessarily a problem, but it does leave me with the impression that many remain unaware of the reuse community and, in a kind of ironic twist, "reinvent the wheel" of discussion around reuse.

The agile community has a particularly uncomfortable relationship with reuse. I can testify to this on the basis of discussions all the way to the top -- yes, the top -- of the community where skepticism was expressed. In the discussions over the past few days, the idea of "emergent reuse" was cited with approval. But what is that, if not the notion that reuse only makes sense after several exemplars have been made? Once again, the wheel of thinking about reuse reinvented.

Borrowing an anecdote from another time: I once saw Jean Samet speaking at the History of Programming Languages conference. Defending COBOL from its detractors, she noted that only COBOL had a truly complete facility for I/O. The others punt (and it's true, just look at C and Ada, which farm it out to libraries). She said, "And you know why? Because it's hard, that's why." Simple as that.

I defend the agilists all the time with that anecdote. I tell people that agile may, in its essence, "only" be iterative software development, but that detracts nothing from the fact that they were the ones to finally make iterative software development happen. Why? Because it's hard, and that's why people didn't do it before. It's hard to plan iterations, to time-box them, to re-plan, etc. But the agilists simply rolled up their sleeves and did the hard work of figuring it out and putting it into practice.

The agilists should put this attitude to work and realize that reuse isn't practiced often enough for the simple reason that it's hard. It's hard to distill that perfect interface that makes software easily reusable. It's hard to provide the robustness and elegance needed to make reuse work.

Agilists are always inviting other communities to become familiar with what they're doing before judging them. I think the agilists should become familiar with the reuse community ... even better, participate in it. Come to the Eleventh International Conference on Software Reuse in Washington this September. We can talk about it.

4 comments:

  1. Hi John,

    nice discussion! This topic is being discussed also in other conferences. In the last SPLC, in Ireland, John Mcgregor organized a panel about SPL and Agile and the consensus was that it can be a viable deal.

    We are discussing this aspect also in our reuse blog:

    http://worldofreuse.blogspot.com/

    Just in case, some workshops in discussions about it:

    http://www.lero.ie/SPLC2008/Panels.html

    http://www.sei.cmu.edu/splc2006/aple_slides.pdf

    OOPSLA e GPCE conferences also discussed it.

    See you in DC,
    Eduardo Almeida

    ReplyDelete
  2. Hi John, I was wondering and I think that it could be a nice workshop in ICSR: Agile and Software Reuse - Where are the connections...

    It can offer a very nice discussion about this topic.

    regards,
    eduardo

    ReplyDelete
  3. Hi Eduardo,

    Thanks for the great links. The idea of the workshop at ICSR is very interesting. Why don't you consider elaborating on the concept to see how such a workshop could be structured?

    Thanks,

    John

    ReplyDelete
  4. Hi John, hi Eduardo,

    I just stumpled across this article and I think this is still a very interesting topic, especially as we have already discussed this in a paper as well (http://www.springerlink.com/content/f431k5lp08265j54 ;-).

    Are there any plans to pursue the idea of an Agile and SW Reuse Workshop at ICSR? Now in 2011 in Korea?

    Cheers

    Oliver

    ReplyDelete