I used to divide web projects into two different buckets: websites and web applications. Websites were design projects that resulted in a piece of HTML/CSS that was publicly available. Web applications were software projects that solved a business problem. I can almost hear my former self beating his chest in self-assured intellectual superiority. I was trying to divide the world into a neighborhood where engineers ruled writing hard core software and a virtual “other side of the tracks” inhabited by everyone else rubbing two lines of PHP together.
Wrong!
While at some point I may have been able to make a good supporting argument for my chest-beating, this is no longer correct today. Let me be clear:
If you are creating things for the web, you are in the software business.
Over the past several years, what I would have called the “website industry” has changed dramatically. It has become much more complex. Websites that are now being built have much more to worry about than content and design.
Back in the day, websites were just a bunch of static HTML files. That turned into HTML/CSS and eventually PHP and JavaScript. Today, we are at a point where most websites have HTML, CSS, JavaScript, and a server language (PHP, Ruby, Python, Java, or .net) which talks to a database. Sometimes we wrap all of this up into a content management system. However, having a content management system is just not enough anymore. We also can’t neglect all of the other services with which our website needs to communicate—Twitter, Facebook, Flickr, Google Maps, etc. Take this long list into account and add in the fact that we should be concerned with security. Things start to look a lot more complicated.
Websites today are more than just a communication channel. Simply being able to manage content is not enough. Users expect web applications on the sites they visit, so if your website is not offering additional business value, it is falling behind.
So what does it take to create a successful online presence today? You either need some individual who can do all of the above well, or you need a team that will treat your project like software. If they are writing custom code you should be asking about things such as source control, unit testing, security, and scalability. A good team will help you find the best solution for your problems within the constraints of a budget. A great team will treat your business goals like their own.
There are many things that the web industry can and should learn from enterprise software. And this will become more and more critical as the web continues to evolve.