Building web applications – a Core / Context analysis
I’m not a fan of web-based site creation tools. You get locked in, you have to learn skills specific to the vendor which are of no further use, and if you bring in outside expertise, you’ll end up paying for the time they spend learning to use the platform. But there is space for them, for rapid prototyping, and temporary sites. In my opinion it is best to get someone to do it for you, unless the knowledge gained from resources spent adds to your own marketable value.
This is pretty much Geoffrey Moore’s Core and Context approach to managing businesses, applied to web development. Core is sustainable competitive advantage, and commands a premium in the marketplace; context is everything else. One’s Context can be another’s Core. For example, Payroll is most likely your context, but it is ADP’s core. You should externalize your context to a service provider whose core it is, as their marginal cost is likely lower than your full cost, they gain from economies of scale, etc.
Context is not necessarily unimportant. It can be mission critical, like website uptime or even payroll. Core is measured in Excellence, Context by Good enough. So if your business does marketing consulting, then a Good enough website is what you want. If you do Web-based CRM, then you want Excellent. In the former example, clients won’t pay you more if your website has the latest Scriptaculous effects, but they will if your counsel is truly awesome. In the latter, clients will love your product and be willing to pay more for it if it is excellent.
However do note that these are not rules, but guidelines. If you are strapped for cash and have a lot of free-time, things are different.
Part two on building web applications.
If your website is Core to you, then bare in mind the following:
Use other people’s code. Don’t reinvent the wheel. By this I don’t mean steal other people’s code, but use open source or licensed software for the components you can. Not only do you not have to write and maintain the code, you also get future improvements for free. This again applies the Core and Context methodology inside the application itself. You have to find out what parts of the application are Core and which are Context. This also means that you have to develop your integration skills, your capacity to bring parts together and make them work.
Use other people’s services. A corollary to the above is to look for web services and APIs, as well as the cloud computing technology (There was an excellent VLab session on this: http://www.vlab.org/article.html?aid=188) to replace components of your application. Hardware, updates, trips to the datacenter is probably not your idea of fun. Get a company like Cloud in Code to help (disclaimer: my company).
Iterate often. At the crux of the web 2.0 generation, and key benefit of being agile, is the ability to iterate through the measure / conduct experiments / adapt process quickly. This means building your application to make experimentation as easy as possible. This includes the user interface, for which I recommend Appcelerator.