The long and short answer? Both.
Recently an article crawled up Proggit talking about whether we should be using Content Management Systems, or rather, more generic frameworks. The main contention of the author seems to be that generic frameworks are more useful, because programmers end up spending a lot of time undoing “features” offered by CMS packages.
Being from a Perl philosophy, I think TIMTOWDI (pronounced Tim-Toady) – There Is More Than One Way To Do It – applies here. Don’t use a nail when a thumbtack will suffice. Don’t use a Framework when a ready-made open-source/cheap CMS will suffice.
The reason that solutions like SharePoint and WordPress and numerous others exist, and why they are popular, is because they solve a particular set of problems. WordPress lets you get a blog up pretty quickly, but it was never designed for creating full-fledged web sites like Recovery.gov or what-have-you.
Ostensibly, I think that these solutions come from smaller shops or individuals that need a solution that is “close enough” to what they really want. Certainly, it’s cheaper to get up and running with a few minutes spent downloading and installing WordPress (or better yet, using the service of WordPress.com).
Many people and groups cannot afford or do not wish to incur the expense of hiring a web programmer to do the job for them. Content Management Systems still serve an important role, especially since they are general enough to enjoy the same sorts of updates. So when WordPress releases a new version of its flagship product, you get new features that are (pick one):
- Most requested by its users
- Required internally by WordPress for its own uses
- Added by its contributors, or backported from forks of the software
- Useful for increasing the security of the product
You lose a lot of these benefits with Web Frameworks, but you gain control and flexibility over your software.
My point? Reuse things if they are available; do what is necessary to get the job done, but don’t lose sight of the problem in favour of some perceived “elegant” solution. Sometimes even $40,000 to buy software up front is cheaper than paying a programmer $60,000 a year for several years to maintain the product. Along the same lines as open source, consider contacting the authors of their software to see if they will be willing to write additional features for your company on a contractual basis. Many authors offer this, and many more would probably be perceptive to the idea. And, since most changes are likely to be pretty minor, it doesn’t have to cost much, either.