Sunday, July 26, 2009

now that's agile

My favorite anecdote from PyOhio 2009:

William McVey
prepared slides for his Sunday PyOhio presentation using reStructuredText and rst2s5, but he wasn't satisfied with S5's presentation quality. He tried rst2odp to generate an OpenOffice Impress document instead, but it failed him.

So he convened a Saturday night sprint on rst2odp at PyOhio. Working past midnight, a small team fixed the rst2odp flaws. William regenerated his slides and presented successfully on Sunday.

Finally, in a mighty feat of recursion, he described the feat in a lightning talk Sunday evening, using slides generated by rst2odp, including a slide that contained the source code of the lightning talk he was giving, including the slide with the source code...

4 comments:

Dean Goodmanson said...

Hijacking your agile term..

What's your general perspective of how concerned Pythonistas are regarding the adoption of Agile methodologies, from TDD, XP, Scrum..and then there's Lean, with Kanban and another whole slew of respectful pragmatic principles.

I ask as I don't see much chatter about this on Twitter wrt the Pythonistas I follow and of the Agilists I follow it seems to be mostly Java, Ruby or .Net.

Catherine said...

I meant agile not Agile. :) That is, William and his sprinters provided a great example of fast-moving development made possible by open source licensing and spirit. Judging by what I saw when I looked in on them, I don't think they used formally defined Agile Processes to manage their sprint. They often projected code on the wall - you might call it a quad-pair-programming session.

Generally, in Python communities, I see a strong ambient assumption that TDD and pair-programming are excellent practices, but no real discussion of the detailed plans of project management. For whatever reason, it doesn't seem to be the topic that fires their interest and stimulates their chat. (Mine either, since I work virtually alone.)

Dean Goodmanson said...

> I meant agile not Agile
:-) Intended to note that with my hijacking warning. William's case is an awesome example of what I think Kevin Altis was reaching for in 2003: http://altis.pycs.net/2003/04/14.html

Your perspective is what I've seen also. I don't know how big of deal it is. It's disappointing but more curious, and similar but more concerning than not having a *shiny* cross-platform desktop app IDE. I mention this as Kevin was aiming at both the RAD market with PythonCard and also aligning Python with the Agile movement. Glad Dabo is coming, but no idea if it's there, or shiny enough.

wam said...

Hey, I'm happy to see that experience rated a blog mention. I personally was very impressed with how it turned out.

To address some of Dean's questions... I can't say how the community behaves in general, but at least in this particular case, there were lots of Agile practices that were used. The entire sprint incorporated elements of XP as well as some scrum. As Catherine said, we used a projector to get 4 pairs of eyes working together and discussing/understanding the code. Until that sprint, none of the participants had even looked at the code for rst2odp. Second, we effectively did TDD, since we had a valid ReST input file that failed to get processed by rst2odp. We knew we were finished with our sprint iteration when my presentation rendered (mostly) correct into the ODP format.

Significant restructuring of the existing code was kept to a minimum (we didn't want to fork the codebase), but we did refactor some elements to reduce duplication and be more clear on what was happening in the code.

Overall, I can't say we set out to use agile development method, but in the context of the time we had, and the format of the conference sprints, several of the practices just made a lot of sense.