Who Can Help Me? A .NET Open Source Showcase
Over the last few months Jon, James and I have been blogging about our experiences developing an ecommerce website using ASP.NET MVC, Sharp Architecture and a whole myriad of other Open Source Frameworks and Tools (mainly from the Microsoft ecosystem, but some from the Java world). Fancy Dress Outfitters was released over two months ago – as planned, just in time for the fancy dress industry’s peak trading period of Halloween. We even got to demo the application to Scott Guthrie when he was last in London doing an ASP.NET MVC 2.0 talk and he seemed quite impressed:
“Conchango just did a site, implemented in 20 weeks, a giant ecommerce project, its 100% ASP.NET MVC. The SEO is phenomenal, the YSlow rating is phenomenal, and they’re just blown away. It was fun talking to them last night – the guy was jokingly saying, ‘I can’t believeit works so well’. It’s like the best marketing literature in the world times ten. More and more when I give talks I’d say half the people are new to ASP.NET MVC, and the other half come up and say, ‘by the way we’vedone five sites on it.’ That’s great to hear.”
I guess I’m “the guy” as I really am impressed at how well all the different parts fitted together under the cloak of ASP.NET MVC!
The entire team is very proud of this project, not only because we enjoyed working with a great client, or that we had such an evenly balanced team of creative, development, QA, infrastructure, SEO, project management and business analysis, or that we delivered in 10 x 2 week iterations (proving yet again that when Agile works well, it works really well), but because we know we’ve delivered a great platform for the company to grow its business on.
A few years ago I worked with a great developer who had a long, varied and interesting career within the software industry. During one of the team’s lunchtime musing sessions he raised the topic of technical debt and religion; more specifically the notion of “Catholic Guilt” in programming. His idea (one that has stuck with me ever since) is that good software developers should feel guilty about the code they write and this guilt forms a crucial part of development rituals. In the same way that a moral compass helps guide you in the ethical decisions you make, this notion of guilt helps you write better quality code. He explained that this concept of guilt generally manifests at the moment he’s about to click the “check-in” button and commit code back into the version control system. His point was that as your finger hovers over the button, if there is even a glimmer of guilt somewhere inside you about the check-in you are about to commit, you should not commit that changeset. He reasoned that the only way to rid yourself of this guilt was to go and fix the code that was causing this internal unrest. He saw his “Catholic Guilt” as a very effective mechanism for ensuring there was no technical debt in the code he wrote. Since adopting this notion into my own development practices I can whole heartedly agree with his perspective.
One of the reasons I’m most proud of the solution we delivered is that I have no guilt over it – I deeply believe we came up with the best technical solution we could, with a strong, yet flexible architecture, implemented via quality code, surrounded by solid engineering practices. I strongly believe that we didn’t leave any technical dept for our client to pay off.
One of the central reasons we managed to accomplish all this is the use and utilisation of Open Source Software, not for the obvious reason that it has no licensing costs, which obviously has benefits for a Start Up, but because of the other value and benefits they deliver; the number of man hours they save and the code quality that they add to a solution.
One of the great things about the Open Source world is that it is full of tools and frameworks that solve a particular problem. If you enter this world with a Not Invented Here mindset – you can gain great value.
One of the problems of this world is that there is so much opinionated software available, so many frameworks and tools that solve the same problem in different ways, that if you have a tendency to be a magpie developer (one that is constantly attracted to anything that is new and shiny) you are bound to get yourself into trouble, because rather than focusing on delivering business value (or utilising your precious time wisely) you are starting to play with technology for your own amusement. A prime example of this is how fractured the Build space has become; MSBuild, NAnt, PSake,Rake, Albacore the list goes on and on…
Jon, James and I have written many blog posts about our experiences developing Fancy Dress Outfitters, but one problem we faced was that there were so many complicated topics we wanted to talk about, it was very hard to effectively describe them without a complete example and as we couldn’t release the code for Fancy Dress Outfitters we found it quite difficult to convey the overall architecture and why it worked so well.
So the three of us decided that we should create a small demo application that reimplements the architecture of Fancy Dress Outfitters, on a much smaller scale, so we can demonstrate some of the architectural concepts and the uses of some of the great Open Source Frameworks and Tools in a real world situation, rather than a contrived example. Next we needed a domain to base this application on.
A few years ago I noticed a problem within my company; we were growing rapidly and new people were joining the organisation every week. One of the core strengths of a consultancy is the quality and calibre of the people within the organisation – the subject matter experts who really are top of their game. One of the secrets of being a great consultant is to ensure you utilise those resources to help you solve your clients problems; an hour of a subject matter expert’s time trying to solve a problem within their domain can be equivalent to more than a week of your own time stumbing in the dark until you happen across the answer.
Having been at the company for almost a decade – I pretty much knew everyone there as I had either interviewed them, worked with them, mentored them, or “buddied” up with them during their induction period – so I had a pretty good idea where their areas of expertise lay. The net result was that I would get a couple of calls a day from people asking “Who can help me solve this problem?”
I decided to create a simple skills matrix application so that people could discover this information for themselves. It was a happy coincidence that .NET 3.5 and LINQ to SQL had just been released in beta, so I decided to use this idea to test out these new technologies. Three and a half hours later I had a fully working application, which I called Who Can Help Me?
When Jon, James and I started talking about creating a demo application – re-writing Who Can Help Me? was the first idea that sprang to mind. It took far longer than 3.5 hours and it may face the criticism of being overly complicated, but the whole point is to demonstrate the architecture, patterns and practices of how to build an enterprise level web application using ASP.NET MVC and the myriad of Open Source Frameworks and Tools.
A core foundation of Fancy Dress Outfitters was Sharp Architecture – one of our main aims was to give a new sample application back to the community – Sharp Architecture has its own demo application – Northwinds – but this is more a collection of pages that demonstrate key concepts, rather than a holistic application built on Sharp Architecture. We also wanted to demonstrate that Sharp Architecture is the perfect foundation for building ASP.NET MVC applications and that other Open Source Frameworks and Tools can easily and effectively be layered on top of this solid foundation.
So last week, as a festive gift to the Open Source communities that helped us so much in 2009 we have released Who Can Help Me?
The source code is available on Codeplex at http://whocanhelpme.codeplex.com
We also deployed a live demo at http://who-can-help.me
We are very open to suggestions and feature requests – as we want this to be a living project that evolves with the various Open Source Project – so if you have any thoughts or ideas please use the Discussions and Issue Trackerfeatures of the Codeplex site.
Twitter has played a large part in spreading the news about Who Can Help Me? if you want to provide feedback, just talk about it, please use the #wchm hashtag, so we can follow the conversations.
I hope you find Who Can Help Me? useful and acts as a good demonstration of how to work smarter, not harder.
About this entry
You’re currently reading “Who Can Help Me? A .NET Open Source Showcase,” an entry on Howard van Rooijen's Blog
- Published:
- December 31, 2009 / 1:01 pm
- Category:
- Musings, Who Can Help Me
No comments yet
Jump to comment form | comment rss [?] | trackback uri [?]