Update: the days of needing a CMS for every website are over. You’re likely better off with a site building service.
Content management systems are the foundation of the modern web. Instead of manually organizing your pages, menus, and images, install a CMS to handle that part of the job. The following options are great for personal or business sites, blogs, and portfolios – all free and open-source:
WordPress – The overwhelming choice for basic personal or business sites. Includes built-in blog functionality, a super easy administrative interface, and a thriving community of developers.
Drupal – More flexible but also a steeper learning curve. As they put it, “Drupal is like a Lego kit.” If you want to do something non-standard (outside the realm of normal pages & blogs) look here.
Joomla – Particularly well-suited for membership sites, with user management, profiles, and members-only areas. More flexible with modular content & menus than WordPress, but arguably easier to manage than Drupal.
All of these systems can be ‘skinned’ to look how you want. Choose the one that has the functions, plugins, and flexibility you need. Bear in mind that if you need to write an app from scratch, you might be better off with a framework like Django. Knowing the scope of your project will allow you to make the nuts & bolts decisions down the road, so do this groundwork before setting up hosting!