A few lucky organizations were selected for the first Pittsburgh GiveCamp. I was assigned to the Mentoring Partnership of Southwest Pennsylvania. Most of the other projects were CMS based, requiring mostly a rehash of an existing site with a new, fresh perspective. This was definitely not one of those projects. I received the requirements during the week before. At first glance, I could only describe them as ambitious.
What started out as a team of only a few people gradually expanded to a team of at least seven over the weekend (usually no more than 5 at once). Our project would not have survived had it not been for the other people who joined us. Huge thanks to them!
Shortly after arriving at DDI for the event, I was introduced to several members of the Mentoring Partnership. We were all well acquainted by the kickoff meeting. Then we dove in and started writing on the walls. Literally.

Ever get the feeling that a project was doomed from the start? I was overwhelmed with that feeling for probably the first 6 hours. It was simply too much to do in such a small amount of time. The team members and I distilled the complicated business model into a simpler, more manageable one for the narrow time frame. Essentially, it consisted of three major business entities, and a few associations, and what amounts to a pile of metadata.

We made progress in leaps and bounds. On Sunday, we were proud to demonstrate the brand new application (despite my original doubts about the project).
To say that the organizations selected for GiveCamp were the only ones to get something out of the deal is preposterous. Our team experienced something unique that I had never heard about in any other GiveCamp.
It was at least a few hours into the event before anyone even brought up which stack to use for the project. We pontificated long and hard about what it was we needed to do, not how we were going to do it. How often does that happen? The eventual recommendation came not from me, but from Ryan Graham. He mentioned ASP.NET MVC3, and SQL Server 2008 R2 Express. Add to that Entity Framework Code First and MvcScaffolding, and we quickly had a new project started and ready to go. Since this is pretty much my daily gig, I agreed. The discussion about source control lasted about 2 minutes before we settled on Mercurial. Twist my arm why don't you.
The technology stack we chose to use was convenient for me, but for a lot of my teammates it would be a first time. Some had experience with WebForms, and others had a basic knowledge of MVC. A majority of the people had been NHibernate fans, but were optimistic about giving EntityFramework a chance. I don't think anyone had ever used Mercurial in an everyday project other than myself.
It was a rough start to the project. While the team members came up to speed on the technology stack, we were faced with interesting scenarios like this one:

This was the result of a few concurrent commits and an awkward merge. This was pretty much the worst of the stuck points for the weekend. Merges became easier as we each diverged into individual areas.
It was not until some time Saturday afternoon that we really struck a great balance as a team. Everyone grabbed tasks to do and collaborated around the table. My laptop was connected to the projector, serving as the focal point for our work. The interesting part about our team was how we worked together. There was no nerd-posturing, no fight for dominance or superiority over technology A or B. Instead, everyone was focused on the project, and genuinely interested in learning to apply the chosen technology stack. A lot of my time was spent jumping from person to person, helping them merge source locally, and showing how to use Entity Framework Code First effectively. For this, I was awarded the "Most Geeky" award of the weekend.
Working this way came natural to me; a sort of group twist on the standard fare of XP practices we've all heard about. In college, I learned to program by sitting down with people like Steven Hook. We handed off a single mouse and keyboard, taking turns writing code. Through group effort and collaboration, we got work done while learning a bunch. Much to my surprise, this happened very naturally for our team during GiveCamp.
Based on some discussions with the event's coordinators, Irwin Hurst and John Hidey, achieving this with each project could be a future goal of the Pittsburgh based GiveCamp events. I can't wait to see what they come up with.
The code freeze came on Sunday, wrapping up the weekend of labor. After that, the weekend came to an end with a presentation from each group about who the project was for, and what the end result was. We were proud to show what we were able to finish.
I remember a moment during our presentation where I realized that we actually got some work done, in spite of using a technology stack unfamiliar to a majority of the team. Most of my consciousness had been devoted to helping everyone understand the problems they ran into, and how to fix them, that I hadn't taken a moment to look at exactly how far we had come. My team members were awesome, and did a lot of good work on the project.

The projects that organizations brought to the event were interesting, but probably didn't do as well as they might have. Programmers are going to make more of an impact on an organization when can utilize their true skills. In my case, I worked on a project where my skills made a big difference. For others, projects were mostly geared for designers and CMS specialists, requiring little to no actual programming. I agree that a good public website is a necessity for most organizations, but I feel that it deters from the true value-add that can result from pooling programmers together at GiveCamp events. It would be great to see more projects as ambitious as the one I worked on for the Mentoring Partnership. Until those projects start coming around to GiveCamp, we need to find a way to get more designers!
Rumor has it there will be another GiveCamp event around October this year. Watch the #pghgivecamp twitter hashtag for more details, or visit the site.