Last weekend after participating as a volunteer in the Coders 4 Charities event, I tweeted the following: “+1 to Sitefinity from Telerik - made it extremely easy to build our site this weekend at #C4C. Combines the best from Rails and SharePoint.” Several people have contacted me to elaborate on this statement so I thought I’d write up a quick post-mortem of the project I worked on and provide some reasons behind my statement.
We Care Ministries is a charity dedicated to providing spiritual, emotional and other needs to the elderly, the handicapped, and the needy. Their founders, Reverend Gary Barnes and his wife Carol Barnes, RN, petitioned the Coders 4 Charities committee to have their web site redone. Their original site was already online but had never completed. The donation button was broken and there was no systematic way for volunteers to offer their time and services. Our goal was to give the site a face lift so it would look more modern and appealing and address the broken or missing features. Shown below are before and after pictures of the site.
What Went Right
Great teams do great work. I definitely want to call out my teammates: Chandra Yarlagadda, Cody Inman, and James Peckham, Ross Fuhlman. Everyone on the team showed up ready and eager to work and got along great. Each person brought great ideas to the table, took ownership of their tasks, and drove them to completion without any setbacks. Special mention for Cody - he was definitely the Chuck Norris of design and CSS styling.
Good customer and expectation management. Cody had met with our charity founders prior to the C4C weekend kickoff and had come up with a list of requirements. After initial review and discussion internally, we found that we needed clarification on quite a few points. When we met with Gary and Carol for the first time, we discovered that what makes them a great team were their different perspectives on their charity mission. This was confusing at first because we were having a tough time getting a coherent set of marching orders that we could execute on. It took us several rounds of discussion to determine how they’ve partitioned their responsibilities and put together a site design that met both their needs. After a couple of design iterations we arrived at a wireframe design of the new site that they were happy with. However, knew there was a high probability of change after the event was over so we wanted to make sure that we provided them with a solution that was flexible enough to change and grow with their charity. This leads me to the next item…
Picked the right tool for the right job. Having attended last year’s C4C event, I knew that teams would struggle to complete their projects under a 48 hour deadline. Successful teams had leveraged an existing platform rather than writing their application from scratch. Coming into the event, I knew this would be an early decision point in our project and I had two solutions in mind: SharePoint and BlogEngine.NET. Both were readily available and very customizable. SharePoint offered a great option for a content heavy site and BlogEngine.NET offered a good starting point for a site that might require some custom coded workflow and data storage. It turned out that we needed a solution that offered both: end-user content management and custom coding to accept volunteers electronically. Cody Inman suggested Telerik’s Sitefinity, a product he had used in the past with success so we all decided to check it out. We immediately encountered a small hiccup - not a single one if us could get the developer trial installed successfully using the packaged installer. We ended up downloading a zip file containing a blank Sitefinity starter web site, loaded it directly into Visual Studio 2008, and were off and running. After that we all gave Sitefinity the thumbs up and began digging into our tasks.
Sitefinity turned out to be a great accelerator for us. It’s drag & drop content management features allowed us to build out the structure of the site very quickly and provided the flexibility for our customer to change any and all of the content after delivery. With regard to custom development, all we needed to do was create asp.net usercontrols and drop them into the site. Sitefinity detected them automatically and added them to its screen layout toolbox palette. For our project we created just one user control that hosted a form to allow volunteers to submit their contact information. We dropped it onto the Volunteer page using Sitefinity’s content management tools. It couldn’t have been any easier. Sitefinity also includes a simple database driven list engine which we leveraged to store volunteer information. The list engine is primitive in that it stores just one big string for each item but that was enough for our needs. If we had needed more complex data storage, we could’ve just added our own tables in the Sitefinity database (SQL Server Express, btw) and written our own database handling code. Sitefinity was a pleasant surprise and met our needs perfectly. So there you have it: we got SharePoint like content management and database driven list management and a very simple, easy to learn programming model much like a framework such as Rails. (Note: I don’t want to mislead anyone. Sitefinity does NOT provide the same programming capabilities as Rails, just a straight forward development paradigm that you can learn in less than one day). If you build custom sites I suggest you check out Sitefinity. It just might help you accelerate development on your projects as well.
PayPal integration was a breeze. The two most important requirements were accepting volunteers and donations. Luckily, We Care Ministries already had a PayPal account and we were able use PayPal’s tools to set up a donation link with no coding whatsoever. We simply needed to embed a URL link containing the their appropriate account information into the site. Couldn’t have been any easier.
What Went Wrong
No source control or build management. We knew we would need to produce a single deployable site by the end of the weekend and discussed source control and configuration management early on Friday evening. Due to the lack of resources we were reluctant to set up a source repository and perform a full software engineering build cycle. As a result, we struggled throughout the weekend trying to integrate and redistribute all our changes. We had at least one occasion were some work was overwritten while copying between machines and had to be redone. Our final solution was to just integrate everything onto a USB memory stick and run the final “build” directly from it. Less than ideal but we were pressed for time. The proper approach would have been to set up a dedicated stand alone “build” machine and have each team member integrate their work onto it and then copy back the entire project back to their local machine before beginning the next task.
Not enough time. Let’s face it – 48 hours to build a fully functioning web site is just not enough time. We iterated through several site designs through Saturday afternoon before settling on a winner. We were able to complete all the interactive elements and programming but getting the site’s look and feel flushed out and the CSS built was too time consuming. Hats off to Cody Inman for putting in a herculean effort. He carried the bulk of our design load and was working right up until the bell to try to get the site completed. The final result demo’d well but there were still some kinks to work out.
We didn’t go live. The weekend would have been a home run for us if we had been able to go live with the site by Sunday evening. Alas, the old site was hosted on Lunix servers and with all the development work we had to do, we simply did not have enough time to find an alternate hosting provider running windows servers and get DNS name resolution rerouted. Major bummer for us and hopefully better pre-event planning will help us get there next year.
All in all, both the Coders 4 Charities weekend our project were a success. The new and improved should be going live within the next week or so at www.wecareministries.org. I hope this short post-mortem provides a glimpse into what it was like to participate at C4C and will serve as a record of lessons learned that we can apply next year to make the event even better.