Update (Jan 1, 2017): Since the time I wrote this back in April 2007, WordPress has continued its march toward CMS dominance and I now run all my sites with it. There may still be some good reasons to consider alternatives, but for most DIYers I think WordPress is the way to go.
In order to develop a web site there are some core decisions that you must make. First, will you pay someone to do it for you or will you do it yourself? Second, what will be your content management strategy? Finally, will you use off-the-shelf software – generally called content management systems (CMS) – or write your own code, or a combination of the two?
Since the purpose of this material is to help those choosing to do it themselves, we will concentrate on the second and third decisions. To begin, what is a content management strategy? I don’t have a ready answer, but basically it is the consideration of all relevant content, audience, access, management and marketing issues that will influence the design of your site. Some of the key questions to consider include:
- Goals: What do you want to accomplish with the site? Do you wish to educate, entertain, sell, advocate, etc.?
- Content: What kind of content will be produced? How much will be produced? Who will produce it? Who will add it to the site? Will it need to “play nice” with third parties (sites, applications, etc.)? Which content will need to be updated? How often? By whom? What, if any, logical content categorizations will be useful?
- Audience: Who will the site’s users be? What levels of access/restriction will you impose? Will your audience be able to access content via RSS feeds, email, mobile phone, offline channels?
- Management: Who will have editing responsibilities? What levels of abilities do these people have? What reporting tools and abilities will you require? Will you need to perform A/B or multivariate tests? Will you offer advertising on the site? If you are selling products or services, how will you manage payments and user accounts? What customer service options will you be making available and how will they integrate with the site?
- Marketing: Do you have a SEO strategy and, if so, how will the associated SEO tactics interplay with the site design (e.g., easy-to-read page URLs, unique heading, meta and title tags, etc.)? If you restrict portions of your content, have you considered the search engine ranking implications? Will you site’s content be “link friendly?”
Once you have thought through the strategic issues identified above, you must next consider whether to develop the site on your own or to use third-party software. To be thorough, I suppose I should say that you must also decide whether to use a static or dynamic site. A static site is one in which content and coding/design are integrated on each page, and thus inseparable. There are many downsides to static pages, most notably that if you ever wish to change either the content or the design, you must manually change every relevant page. For very small sites that don’t need to change content often, this can be an acceptable approach but those cases are rare these days.
The alternative to a static site is a dynamic site. Basically, the content and the design elements are separated so that each can be manipulated separately. A dynamic site typically stores content in a database, though this is not an absolute requirement. The biggest benefit of sites that separate content and design is that technical people can work on the site without having to bother with content issues and, likewise, non-technical people can work with the site’s content without having to worry about any of technology issues.
Over the years, various development tools have been created to help design and develop dynamic sites. These tools are collectively referred to as content management systems (CMS). When I first started developing my sites there were only a few open source CMS programs available. In particular there was PHP-Nuke and related variations (e.g., PostNuke, etc.). Since then, some other programs have become quite popular, including Drupal, Joomla, XOOPS, OpenCms, and phpWebSite.
Since I don’t have much personal experience using CMS packages, I can only say that I have read that many are not user friendly. This may not be a big concern for you personally, but it should definitely be a concern if you plan to have others, especially non-technical folks, use the CMS to add/manage content.
So, should you use a CMS program? Maybe. These programs are powerful and have some great features that will allow you to develop very advanced and sophisticated sites. For some of you, that may be the reason NOT to choose this option. There will be a lot of code you won’t understand and features you won’t need. Thus, modifying the code could prove difficult. You will also want to consider what upgrade requirements will be necessary since well-supported open source programs usually generate new versions regularly. This is especially important if you plan to customize/modify your installation code. These modifications (mods) will need to be considered each time you upgrade. As someone who has had to deal with personal modifications across frequent updates, I can tell you it is quite a pain.
If you ultimately decide to use a CMS program, choosing one may be challenging. One very interesting site that might help is called cms matrix, which lets you compare various CMS programs after selecting various features (categories include: system requirements, security, ease of use, performance, flexibility, built-in applications, support, management, interoperability, and commerce).
An alternative which I think is a nice compromise between a full-featured CMS and the do-it-yourself approach is blog software. There are many to choose from but I am a fan of WordPress. This program is VERY easy to install and has some nice admin and publishing features. It also has a large community of programmers offering free plugins (functions) and themes (look and feel templates). The downside to this option is that you will have to work with/around the typical date-centric post architecture common to all blogs. You can definitely add unique pages and add or customize features but depending on what you want to accomplish this may or may not be worth the effort.
Using WordPress may not be the best option for a total newbie, but it is probably easier to figure out and use than the other CMS programs listed above.
The final option is the do-it-yourself approach. Even if you choose to eventually use an existing software package as described above, you may want to go the do-it-yourself route with a test site (personal page, etc.) just to gain design and coding experience and knowledge. This experience and knowledge will help you make more informed choices of what software to choose, what methods to employ if you hire contract programmers, etc.
 I once read an interesting quote on a forum that said, “PHPnuke turns you into a PHPnuke developer, whatever your previous vocation was.”