London Python Code Dojo last night

Went to the advertised London Python Code Dojo last night. Not quite sure what to expect (altho’ Nicholas Tollervey, the front man, had done a readable write-up beforehand). It was great. About 30 people, some faces familiar to me from previous London Python meetups, others not. Beer & Pizza kindly supplied by the hosts, Fry-IT.

Altho’ a few people had attended other code dojos before, most of us were first-timers so there was an amount of feeling-the-way going on. Nicholas hooked his Mac up to a projector (with *both* kinds of editor available :) ) and people came up in pairs to code — pilot and co-pilot — for 10 minutes before handing over to a new co-pilot with the old co-pilot taking over the controls. The target app was a GraphViz graph of Twitter contacts, so the first 5 minutes was spent simply trying to set up a Twitter account with a name and email address which had not already been used!

Altho’ there were small issues — people using an unfamiliar environment, keyboard, editor etc — the 10 minute turnaround on each pair created a dynamism which kept the thing active. There is, apparently, an alternative approach where one guy stands at the front and talks through what he’s doing, but that doesn’t seem to me to have the same appeal.

There were several suggestions at the end as to what might be improved. The scaffolding code which Nicholas had already put in place to generate graphs given an edge-list was ideal since it made it feasible to actually create a solution within the 2 hours we were working. But some people thought more time was spent learning the Twitter API than was really useful. For my part I didn’t have a problem with that: it’s all part of the learning experience. The size of the group meant that people at the back of the room were less engaged. There were suggestions of two parallel groups competing, but I think it was decided to hold off till later on that.

What was interesting from my perspective was the way that different people approached the — admittedly loosely-specified — problem. There was an unspoken assumption that test-driven development was de rigueur, a discipline I don’t entirely share but am happy to go along with. What surprised me the most was that no-one fired up the interpreter to see what the Twitter API was doing. There were tests being written without (I think) knowing what the API was going to return. I’d just have started the interpreter, logged on, and retrieved a list of friends — or whatever — to see what I was getting back. But everyone’s different.

I don’t know if this is the idea, but one thing you do get is a kind of audience participation effect. Altho’ you have the pilot & co-pilot up front, verbalising their thought processes, you have a room full of back-seat drivers all giving advice at different times. Vastly entertaining.

Just a couple of suggestions from the point of view of a big group: maybe have the pilot / co-pilot hooked up to head-mics pushed through speakers; and have a slave laptop at the far end, projecting a VNC Viewer of the master onto a nearer screen/wall so people can see/hear what’s going on.

[I was the final co-pilot, for those who don’t know me :) ]

6 Comments so far »

  1. OpenIDTartley said,

    Wrote on September 18, 2009 @ 1:06 pm

    Hey Tim,

    I mean to grab you last night and say ‘thanks’ because only the other day I was using your code win32 snippets to read and create Windows shortcut files. Thanks for those!

    Incidentally, the ‘other’ sort of dojo that you don’t like the sound of can work well, in my (very limited) experience. Because it is a ‘prepared’ exercise, the demonstrator is leading the dojo through a tightly scripted exercise, and as such can demonstrate good technique, in TDD, in refactoring, ultimately leading to a well-designed solution.

    It reminds me in some ways of a talk I have seen you give, in which you used the Python command line to walk the audience through a series of data structure manipulations that showed off some of Python’s nice features. Because you had prepared that carefully and were very familiar with it, it became a very enjoyable showcase of ‘how to do things right’ for the audience.

    Best regards,

  2. tim said,

    Wrote on September 18, 2009 @ 1:26 pm

    @Tartley: thanks for the explanation of the other kind of dojo. Thinking back, I can only assume you’re referring to the talk I gave at the IET? (in the 7 minutes my co-presenters had left me :) ). Glad the Win32 snippets were of use. I need to add some more, but there never seems to be the time.

  3. OpenIDntoll said,

    Wrote on September 18, 2009 @ 3:24 pm

    Hi Tim,

    Thanks for the write-up… the next Dojo will be on the 15th October 2009, same place and time. This time we’ll be starting from scratch with the Tic-tack-toe problem we discussed last night.

    With an eye to the future and given @tartley’s comments… would you like to present an “other sort” of Dojo..? Perhaps we could discuss it at the next event..?


  4. tim said,

    Wrote on September 18, 2009 @ 3:33 pm

    @Nicholas: (btw, doesn’t anyone say “Noughts and Crosses”? Or is that a Wimbledon thing?)

    Certainly open to another kind of Dojo, albeit with some trepidation. Let’s put our heads together next time to see what might work.

  5. OpenIDciaran-mooney said,

    Wrote on October 12, 2009 @ 8:09 pm


    Only just signed up to the second Dojo. However I had an idea for a dojo.

    Sodoku Solver (same vein as a tic tac toe AI opponent)

  6. Tom Lynn said,

    Wrote on December 1, 2009 @ 7:50 pm

    I recommend against trying sudoku solvers in public except perhaps as the prepared walkthrough sort of dojo. Unless you know how to write a sudoku solver in advance, you will flounder for hours if not days. (Having floundered for days before getting quite good at them, I know whereof I speak.)

    See too see a reasonably famous Agile programmer failing horribly at trying to apply TDD to sudoku in something of a leap-before-you-look style.

Comment RSS · TrackBack URI

Leave a Comment


Sign in with your OpenID ?


Name: (Required)

E-mail: (Required)