Bear with me for a few lines of introduction: Creating websites was my entrypoint to software development. It is therefore dear to my heart. While I'm doing more ✨advanced✨ things like "just websites" these days, it is still something I frequently engage in and quite enjoy.
Websites, as anyone who surfs the web knows, come in all shapes and sizes. Blogs, shops, news sites, social media, forums, wedding sites, personal sites, propaganda sites... there's a site for everyone and everything.
When you feel the need to have your own website, one crutial question to address is what kind of website you want to have from a techical point of view. And notoriously, people might know what they want, but not what they need.
Therefore, when I'm asked to create a new a website, the first thing I'm trying to find out is what exactly the client is trying to achieve/accomplish. In everybody's interest, you don't want to create an overengineered site. This will only create problems down the line, both for the client and for you as a service provider. If your site has features/capabilities that you don't use, not only will you have you paid for their implementation, but you are also going to pay for their maintainance if you don't want to risk that the site will stop working at some point. Software erodes, and the more moving parts you have, the more wear and tear will inevitably occur.
In general, I'd argue, there are three different main types of websites.
A collection of html documents, css and javascript files. Changes are made by changing these files. This is how the web started, and recently this approach has gone through a bit of a revival with the so called jamstack. Static websites can be hosted for free on e.g. vercel, netlify or surge. A technical person is required to set up and maintain such a site.
Some kind of content management system (e.g. Wordpress, django cms) running on some server (cloud!), using a database. Changes are made through an editor UI and saved to the database. Such a setup combines the possibilities of custumization and dynamic content editing. The catch: Hosting can be expensive and maintainance costs can be high. Usually a technical person is required to set up and maintain such a site, but the content editing can be done by non technical editors.
A service that you can build and publish your website with, e.g. squarespace, jimdo, wix etc. Changes are made through an editor UI, but you don't have to worry about the database. In fact, the main selling point of this approach is that there shouldn't be anything to worry about at all, and no technical skills should be required to set up a website. On the downside, you're limited to the features and capabilities of the website builder.
... and then of course there are hybrid solutions, most notably webflow, which essentially claims to be a combination of the best parts of the categories above. Be that as it may, I do share the view that if future, we'll see a lot of low-to-no coding tools that will check a lot of boxes.
The following table is an attempt to summarize the differences of the three categories, setting aside the hybrid solutions.
website type | dynamic | hosting costs | maintainance costs | flexibility |
---|---|---|---|---|
static | ||||
CMS | ||||
website builder |