Do I need a CMS, or should I hand-code my website?
The question sounds technical, but the honest answer depends on one thing: who will update the site, and how often?
What a CMS actually is
A content management system is software that separates content from code. Instead of editing HTML files, you (or a non-technical colleague) log into an editing interface, write in a form, and the CMS stores the content in a database and renders it into pages using templates. Drupal is one of the long-standing open-source examples: its official documentation covers everything from installation to building structured content types, and reading even the introductory sections gives you a realistic picture of what running a CMS involves.
When a CMS earns its keep
- Multiple authors. If people who don't know HTML need to publish, a CMS is close to mandatory.
- Frequent updates. News, events, listings — anything published weekly or daily.
- Structured content. A site with hundreds of similar items (recipes, products, staff profiles) benefits from a CMS's content types and templates.
- Workflow needs. Draft/review/publish cycles, scheduled posts, revision history.
When hand-coding wins
- Small and stable. A portfolio, a restaurant site, documentation for a small project — five to twenty pages that change a few times a year.
- Speed and simplicity. Static HTML and CSS have no database, no login page, and dramatically less to attack or maintain.
- Learning. If your goal is to learn web development, hand-coding teaches you what HTML, CSS, and JavaScript actually do. The references at MDN Web Docs cover everything a hand-coded site needs.
The maintenance question nobody asks up front
A CMS is running software, and running software needs updates. Skipping updates on an internet-facing CMS is one of the classic ways sites get compromised — vulnerable and outdated components are a recognized category in the OWASP Top Ten, the standard awareness document for web-application security risks. Before choosing a CMS, honestly ask whether someone will apply updates for the life of the site. A static hand-coded site mostly sidesteps this: there's no server-side application to patch.
A sensible middle path
Static site generators (tools that build plain HTML files from templates and content files) offer some CMS-like convenience — templates, reusable layouts — while producing a static site with static-site maintenance. For a solo technical author, this is often the sweet spot.
The short version
Non-technical authors or frequent structured publishing: use a CMS, and commit to maintaining it — Drupal's documentation is a good gauge of the commitment. A small, stable site maintained by one technical person: hand-code it or use a static generator, and put the saved effort into content. Either way, run the result through the launch checklist before it goes public.