I have broken down this article to approximately 15 posts which I’ll publish once every week. You could also access them using the keyword rmdstudio cb anatomy on Technorati. Readers from both business or technology backgrounds could find this article useful.
View this image on Flickr
This article portrays a 10,000 feet view of a Community Builder (CB) web application similar to the ones you see around on the web (Flickr, Facebook, Digg.com, … ), although my take on this topic would be a bit more vanilla and abstract. Building a more sophisticated CB application is closely tied to the business requirements and also the cultural and sociological aspects of the online community we’re trying to grow. Knowing that, each specialized case should be treated differently and that really goes beyond the scope of this article.
In the mean time, as I am dissecting and going through , I will be emphasizing details that I think are important.
The 12 building blocks
I have managed to break down a generic CB application to 12 main components that are worthy of being discussed. Of course this number could vary in different projects, as a matter of fact, not every project requires all of them.
- There is a simple diagram here that you can download. It is released under the creative commons license meaning that you can use it and redistribute it.
I figured using today’s available frameworks such as Joomla 1.5, Drupal or Ruby on Rails, each component could be developed and refined in approximately 100 hours good enough to be used for a real life project. That includes all the time required for squishing bugs, fine tuning user interfaces and the overall software architecture.
The reason I have named those three frameworks is because they:
- have proved to be reliable frameworks in different projects
- are all open source
- have well designed APIs
- are well supported by great communities of users and developers
- use a 3 tiered architecture called Model View Controller (MVC).
If terms such as API or MVC sound too technical for you, just keep in mind that having a good API and MVC architecture makes your application more flexible and maintainable. It might cut down the development time but that is not always the case. What’s certain that, for sure it will keep the design cleaner, more flexible, and maintainable, and that will save you time and resources in the future.
But isn’t 100 hours per component an overestimate ?
You may think 100 hours development time per component is an overestimate. Yes, I do believe that there are fine developers out there who can put together each component in less time.
I guess I am being pragmatic by considering a standard developer, probably hired through a job recruitment agency, working in a corporate environment or a small development house. Top notch Architects are rare species and often self employed. If you’ve found one, then good for you!
That said, please consider that tailoring a generic CB application to a specialized business model does require extra time and resources. Instead of cutting corners, use a combination of following methods:
- Consider alternative options to find resources ( knowledge, time, brain power )
- Reduce your project requirements
- Develop in multiple stages over time, instead of building the whole thing at once.
Keeping the Architecture loosely coupled and flexible
Charles Darwin himself observed that it is not the strongest of the species that survive, nor the most intelligent, rather, it is those most responsive to change.
Same idea also applies to computer software.
A CB web application is an organic entity therefore subject to change and evolution. Staying with a more generic and loosely coupled architecture maintains the flexibility of the system. A web application built based on a stiff marketing and business plan might appear successful today, but it is often doomed to extinction in long term.
NOTE: if you believe in Intelligent Design, then consider this: A divine creator would have done it the same way I am telling you!
A model for cost and time estimation
I think the modular model described here could be used as a cheat sheet for making time and cost estimations.
One advice to the developers: to be on the safe side, you may want to build some of the generic components first before you go hunting for projects. That way you could spend more time on customization rather than building each infrastructure from ground up.
I would also be interested to know your input on this subject, so please don’t hesitate to post your comments. Next week I’ll be discussing the User Manger Component which I think is the back-bone of every CB application.
[tags]rmdstudio cb anatomy, rmdstudio, rastin mehr, community builder, web application architecture, joomla, drupal, ror, ruby on rails, mvc, model view controller, charles darwin, evolution, intelligent design, software architecture, api, modular design[/tags]