I spent this past weekend in Fairfax, VA with a number of MarkLogic employees, partners, and friends participating in the Warrior Gateway Code Bash. The Warrior Gateway is a non-profit site devoted to connecting returning military personnel and their families with services they need.
This was the first time any of us had participated in an event like this so we weren't sure exactly what we'd be able to accomplish.
As the event unfolded, though, things came together in a really great way. It was both fun and productive and I'm proud of the results.
What is a Code Bash?
For those of you unfamiliar with events like this, I thought I'd describe what we set out to do, how we did it, and what we eventually accomplished.
In a nutshell, the idea is to get folks together over a couple, focused days and bang out some features in a "hack-a-thon" style effort. You work collaboratively and quickly. The participants are all generally familiar with the style of application development and a subset of the technologies in use. People come with varying levels of familiarity with the code. Sometimes, as was the case here, there is limited previous experience with the code. And, the code base for our bash was actually used to drive a live, production site. As you can imagine, it can be a bit challenging to organize.
Here's how we did it.
Preparations and Planning
With such a brief time to do development work at the event itself, the more prep we could do upfront, the higher the likelihood of success.
The most important preparations for the event involved choosing and drafting use cases that could be tackled in a fashion like this. The Product Manager for the Warrior Gateway, Howard Chen, wrangled up 10 use cases and published them up to a shared, collaborative workspace (we used Unfuddle). We chose 10 because we were expecting somewhere between 10-20 participants. We were concerned that any more than that would generate a level of chaos we couldn't handle.
We made sure the development environment setup instructions were up to date and we published those too. About two weeks before the event, we finalized the guest list, sent out an event schedule, and requested folks familiarize themselves with the website and its users.
About a week later, we sent out invites to the Unfuddle workspace, which included the docs and a copy of the current source code repository. And, we also asked folks to set up their development environments (about a week before the event).
The first day of the event, we introduced ourselves over breakfast. Howard then prioritized the use cases and folks self-identified based on what they felt were their relative areas of expertise. We then dialed in on six use cases to tackle. Below you can see the whiteboard we used to help organize ourselves and keep track of who was doing what and where they were in the process.
We broke up into teams and started in on the most important use cases first. As you would expect, at this point in the event, there were lots of people wanting to ask Howard questions. Luckily somehow, he didn't end up being a bottleneck.
Soon many of us were in the part of the day's schedule that was just labeled "do it". We spent the rest of that first day writing code, getting stuck, reading source code, getting stuck, snacking on chocolate, asking questions, writing code, cursing, occasionally yelling 'yippeee!', and so on. To give you a flavor of the action, I've included below Lam and Erickson's sketch for the layout for adding "Virtual service providers" to the search results. I can hear you saying, "Oooh layout fun", now.
Eventually we broke for dinner at a Brazillian steak house - meat, meat, and more meat. Yes, it was very good, especially the bits wrapped in bacon. (There was a nice salad bar for our vegetarian bashers, too).
After dinner, some folks worked a bit into the night. Eventualliy we all slept.
Day 2 - Coding, Unfuddle Fuddled, and Demos!
We got back together at 8:30AM the next morning. Breakfast ensued and coding quickly commenced.
There was breakfast and coding all through the morning. Until, of course, lunch (obligatory pizza), which also included more coding time.
One item that actually made the second day challening was an unplanned Unfuddle outage. Yes, for 3-4 hours we were without access to our code repository and shared documentation. As frustrating as this was, it was way better that it happened on the second day; it was a nuissance rather than a blocker. After lunch, the repository came back up, just in time for our demos. Below you can see the "Logo upload" feature, worked on by Cox and Richey. In general, the demos were really well received by Howard and the Warrior Gateway crew, who were looking forward to actually being able to deploy the new features.
So what did we actually accomplish? We made great progress on all of the use cases. Some of them are close to being able to go thru final testing and push to production. Others are "almost there". All of the efforts provide value to the Warrior Gateway. As to what's next, I know that we've learned a lot more about how to run an event like this and we also now have a bunch of folks who are familiar with the code base, too. Given all that and the positive responses I've gotten from the Code Basher's themselves, I'm pretty sure we'll see some more Code Bashing in 2011 :) Below is the list of use cases we tackled:
- Adding the notion of "Virtual" Service Providers - These are providers who have an unusual coverage area and may not necessariliy have a brick-and-mortar location.
- Adding a search widget that could be copied from the Warrior Gateway site and easily deployed via cut-n-paste at other sites that would like to provide Warrior Gateway searching
- Adding an ability for service providers to upload and manage logos.
- Adding sign-in via Facebook
- Adding the ability for site users' to invite their contacts from Gmail, Hotmail, Facebook, and so on.
- Revamping the rich text editor.
Thanks to all the participants!
None of this would have been possible with out the following wonderful peeps:
- Our Host, Rob Stoltz of Customer Value Partners
- Devin Holmes, Warrior Gateway's Executive Director, who came up with the idea for the event.
- Planning and logistics help from
- Product Management and Technical Architecture/Lead from
- Howard Chen on loan to Warrior Gateway from Deloitte
- Christian Leonhard of Deloitte
- The Code Bashers
Wait there's more!
If this lengthy post wasn't quite enough detail, you can catch a bunch of really swell photos of us in action below. Enjoy.