Over the years I’ve built many different types of websites. These range from being a few pages, to being very customized with advanced features. I’ve learned there is no clear definition in the best way to create a website. But I do think there are advantages and disadvantages to pursuing different methods. This article takes an analytical look at each option.
Let’s take a closer look at the different approaches in building a website.
Option #1: Static Website
With this option you have full control over every page of the site. But the big disadvantage with this method is that you have to update every page of the site if a common element is updated (like a header or a footer). And if the site grows or more advanced features are added, it will take more time to maintain a static site. Unless you only have a two or three page site, this is usually not the best approach. The client also needs to consider that any basic text changes done to the site will need to be done by the web shop, which will add additional maintenance costs.
Option #2: Custom Programming
Unlike the static website option, this is usually the point where web programmers get involved. They can implement login systems or contact forms. But how well and how easily maintainable the website is, depends by the code produced or used. In other words, you are 100% in the hands of the programmers working on your projects. As you go to option #3 and #4, this becomes less of a factor….because less of the system is created by custom code.
These types of websites usually take more time debugging and tweaking than options #3 an #4, because there is no type of framework system involved specifying how things should be implemented. This problem becomes more obvious when other programmers need to come in and work on the system.
Option #3: Web Framework
This improves on the previous option with a few advantages:
- Access plugins for the framework to more easily add new functionality.
- Makes it easier for other programmers to work with the system, since the framework provides online documentation.
- You can implement a template engine easily to more separate your code from the html (such as Smarty or Twig).
- Allows for full customization of the website system.
The biggest disadvantage with options #2 and #3 is that it requires more dependency on programming than on anyone else (when compared with the 4th option), including designers. Even if you implement a template engine, unless your designers know how to work with it, they will be depending on the programmers to make updates to the template files (but this often depends on the designer).
It is my opinion that it costs most web shops more money to go with this route, since their dependency on programmers becomes the highest priority on most projects. The exception to this is if you need a very large system that requires extensive customizations on every level.
Option #4: CMS System
This option takes most of what works with using a framework system, and adds the following advantages:
- Most CMS systems are designed to implement modules that provide high level features without any programming required. And unlike a lot of the plugins you see with framework systems, these usually also come with an admin interface.
- Instead of depending on programmers to do most of the work for these types of projects, they are only required for very customized functionality. Everything else can be done by none programmers or designers.
- If you use a CMS system that is actively maintained, you can upgrade your websites and automatically inherit the new features and security benefits of the system. With how much and how quickly things are changing on the web, this is a huge advantage, and lowers the cost of the upgrade process (especially when you look at the cost over a period of 6-10 years).
- Out of the box allows non technical people to update their website with some basic training in how to use the system through the admin interface.
The biggest disadvantage of a system like this is that you need to keep up on the updates for the CMS and modules to keep your site secure and you are investing resources with the idea that the CMS is going in the right direction. Hackers like to focus on vulnerabilities in systems that are widely used. But with that said, large gaping security holes in systems like this are less likely than Option #2 where programmers are creating custom code on their own.
You also need to keep in mind that the learning curve with a system like this is often higher than option #3, because you not only have to learn a framework type of system, but also have to learn how use the admin and contributed modules.
Even with small websites, I think going with Drupal or WordPress is the way to go. Both of these systems are evolving and becoming more user friendly, and with Drupal you can create a very advanced website and save 75%-90% of the time it would take to create the same website outside of Drupal.