As I sit on yet another plane (flying over to Denmark to teach DigiGirlz there next week), I contemplate the conference I attended earlier this week and wanted to share here.  Agile Open Northwest 2010 was held in Seattle this year.  It’s held annually in Portland or Seattle.  So what happened there?

Agile Open Northwest 

First, understand the ‘how’ – this is an OpenSpace event.  What that means is that the attendees set the agenda.  It is also a bargain (cost is minimal).  Now you might say, ‘hey wait – that’s just like BarCamp’.  I would answer ‘not really.’  The key difference around OpenSpace to me (I’ve attended this event and She’sGeeky which have been run via OpenSpace principals), is that OpenSpace events are organized around a single topic area in technology, whereas BarCamp is a kind of a catch-all event.  At BarCampSD I’ve seen sessions on topics like ‘effective knitting’ and ‘how your karma affects your life’, really I am not kidding – not that this is a bad thing, but really, if you’ve only been to BarCamp and not an OpenSpace event, trust me, they are different.

Specifically at Agile Open Northwest, the attendees consisted of a relatively tight-knit group of leaders in the Agile development practices community.  Most were local to the Pacific Northwest, but there were exceptions.  Along those same lines, the majority of sessions dealt with Agile development practices and were delivered by experienced practitioners of such.

The picture below shows a sample of topics from the daily session wall.  If you read each session title, you may note a very practical bent to this session list, i.e. ‘how do I do thing x better now, so that I can build better software now.’

Daily Agile Open Northwest Session Wall 1

Although I am somewhat familiar with Agile processes, for example, having recently discovered the joy (and effectiveness) of pair programming, much presented here was new to me. 
Words like ‘Kanban’ , ‘Dojo’, and ‘Lean’ are just starting to enter my vocabulary.  Even though I am an Agile newbie, I felt very welcome and included by the core group which leads this conference annually.

From Glenn Block’s (Microsoft) trip report – here’s his take on ‘Lean’ and ‘Kanban’

Lean / Kanban

There were several sessions on Lean Software Development. If you are not familiar with Lean, then it is a software methodology based on principles derived from Toyota’s car manufacturing philosophy, but codified by Mary and Tom Poppendieck for use in software development. At its core it is about one thing, removal of waste. In order to address this, Lean takes a Just-in-time development approach. Instead of pre-staging when work will be done, work is pulled as needed. As work is completed, new work is pulled in to get done. In order to track the work, Lean utilizes a Kanban. A Kanban is a board which is a tool to track the work that the team is doing. It’s not a piece of electronic equipment necessarily. it’s a board in a very visible location that has different lanes representing different stages within the development of a product.   Cards of user stories are placed up on the board. As the story progresses through the development cycle it moves across the board. The simplest board could have 3 columns “To Do”, “WIP” and “Done”. Practically however it will have columns like “Dev”, “Test”, “UX”, etc.  In terms of the pulling of work, the idea is to limit the # of cards that can be on the board at any one time based on the capacity of the team. The board is not only for the team, it also gives clear visibility to the product owner, as well as management as to the state of the project. 

We’ve been hearing about the emergence of lean or a while. What I found surprising was that the number of attendees that had already adopted lean within their organizations appeared to have grown. At previous events I heard a lot of theoretical talk with very little practice. At this even there was much more real world discussion based on experience.

The Opening Circle

Each day started and ended with a gathering of the attendees in a circle (show above).  The conference facilitator led the group with the goal of having interested attendees propose their sessions, share knowledge, etc…Even though there were certain obvious leaders in the group, all attendees were encouraged to share. 

Well-known Agile practitioners such as Chris Sims (twitter @chrisSims and blog here) and Arlo Belshee (Arlo is zen-like in his minimalism, he doesn’t have a twitter handle, he actually doesn’t use very many words when he speaks, in fact, he doesn’t even wear shoes indoors – here’s a talk he gave 5 years ago about pair programming) gave well-attended and highly praised sessions. 

Innovation was the order of the day in delivering a session.  For example, Chris’ session ‘Understanding How Internal Politics Disrupts Software Teams’ was held using 14 chairs and 3 teams of participants (each team having a goal, but constrained by the rule ‘no talking’).  It was hilarious (partly due to a certain Microsoft participant’s myopic and territorial behavior – well, I am a scrappy Irish woman at heart you know), immersive and quite informative.

‘First Action, then Explanation’ is kind of a loose rule of Agile in general. 

In this same vein, Llewellyn led a Coding Dojo session , which goes as follows.  The group lists some scenarios, then they vote on one.  Then a couple of user stories are derived, then they start coding the first one.  The idea is to improve your ability to code, by, well, coding.  Coding is done in two types of rotations of pairs.  It goes like this, person #1 is the navigator (talker), person #2 is typist (pilot).  They code for 5 minutes, then person #3 becomes typist and person #2 becomes navigator for the next 5 minutes. 

So everyone gets to code.  At the end of the group coding there is a recap.  Then the facilitator and one other (pair) programmer will either re-code the scenario or just improve what’s there.

Intentional coding is a ‘hard skill’ for programming and a dojo is a fantastic way to get better at it.  I encourage you to join in if you ever get a chance to do so.

So what else if different at this conference?  Well, the focus on creativity and sharing of experience via discussion between practicing professionals is one thing.  How is this done?  I noticed a number of unusual things in the sessions.  The most obvious was the eXtreme use of post-it notes.  Can you spot the unexpected post-it in the photo of a session below?

Post-its - the ultimate Agile tool

Yup, that’s right, those good old luddite tools – post-its, flip charts, and…shudder…people hand-writing down notes (and sketches!) in paper notebooks.  People actually carrying on extended, intelligent conversations about the craft of software development during sessions (and, of course, in the hallways). Even the swag WAS practical and fun  – note the picture of ‘Agile Putty’ below.

Agile Putty

Oh, and, a technical conference, where the average attendee age appeared to be over 40, hmm….

Now it’s not like people weren’t tweeting (take a look at part of the sample tweet-stream below) and bickering about the latest and greatest shiny, new software toy (can you say iOverpriced?), but there was far more emphasis on SHARING PRACTICAL EXPERIENCE  around just how to build great software than really I have seen.

#AONW partial tweetstream

Just to give you more of a flavor, here’s another view of the session wall (photo below). Two sessions I’ll call out from this section are Glenn Block’s ‘Why can’t the platform support how I develop?’.  In case you don’t know Glenn (twitter @gblock) works for Microsoft and ‘the platform’ is the .NET framework. 

Agile Open Northwest Session Wall 2

You might note the ‘Teaching Kids Programming’ session listed on the wall as well.  Yes, Llewellyn and I were at it again.  Following the Agile (action first) style, we had all of our session attendees pair up and start coding the first recipe in either SmallBasic or Java (depending on what kind of laptop they had).  We had them experience WHAT we teach the kids via coding a recipe and variation (Simple Square in this case) and THEN we talked about what it is that we are trying to achieve with the recipe-based method of Teaching Kids Programming.

First we talked about the programming concepts we are able to teach to kids 10 years old and older in the FIRST recipe (which normally takes about one hour).  See the list labeled Concepts in the photo below.  In case you aren’t reading my blog already, we teach subsequent recipes in our sessions to share additional concepts.  Here’s a link to our recipe wiki.

Concepts taught in the first recipe

We then went on to discuss teaching techniques that we’ve found to be important as we continue to run live sessions with kids (5 events to date).  We captured this information too (see photo below).  Due to requests, I’ve added a static page to my blog (here) which lists all of the artifacts (i.e. recipes, extension files, videos, etc…) that we’ve created around our work.

Techniques for teaching kids programming

Our session was well-attended and I am happy to say that we seem to have inspired a number of attendees (in this case, professional programmers) to try out our recipes and teaching methods in their kid’s schools.  Along these same lines, we’ve got numerous requests to teach in various cities in the US and Canada.  To that end we are working with our (volunteer) PM to create a calendar of events for 2010.  If you are interested in having us come to your city to teach kids and also to teach other technical volunteers to teach subsequent events for kids using our methods, please ping me via this blog. 

Just to give you an idea of what we have so far, it goes something like this (subject to change!):

March – local SoCal events (to be held at the Microsoft store in Mission Viejo, CA)

April – 4 DigiGirlz events in California

May – NYC event, maybe Chicago

June – DigiGirlz Fargo, ND & maybe PacNorthwest tour (Vancouver, Seattle, Portland)

July – TeachCamp San Diego and Tedx SV (San Jose, CA)

August – Africa – South Africa and Zambia (all month)

September – Grace Hopper Conference (invited speakers) Atlanta

If you are interested in supporting a Teaching Kids Programming event in your town in any way, just ping me and I’ll get you started.  We’ve got LOTS to do! 

As I close out this trip report, again, I’ll recommend that you check out an Agile conference or User Group in your area (for PacNorthwest – here, for California – here.) I learned lots of useful info at Agile Open Northwest and feel like I am a better developer because I was there. 

I think the theme for Agile Open Northwest 2010 was quite accurate.  It’s shown in the photo below.

 128

If you want more information from Agile Open Northwest, check out the wiki at http://www.agileopennorthwest.org/wiki and the session notes at http://agileopennorthwest.org/wiki/index.php?title=Agile_Open_Northwest_2010_Session_Notes.

Happy Programming!