1
vote

Let me begin by stating that I'm not a professional web designer. I need to create a website for a small company, owned by a friend. I want to make sure that whatever I do can be extended in the future & built upon when required. I'm confused whether I should start from scratch or use a framework, such as Drupal or Joomla.

Any pointers?

By the way, the website has the usual suspects: products, contacts, about us, etc.

Edit: In response to Joshak's & Dave's answers, there are no plans to sell directly from the website. Content changes will take place every 3 months or so.

3 Answers 3

4
votes

I don't know how much programming experience you have, but if it's not significant (e.g. if you're not completely confident in how well your code will hold up to the scrutiny of other developers in a team development setting), then you should seriously consider using a CMS, framework, or CMS-framework.

Yes, you can learn a lot of the nitty-gritty stuff better by developing a site from scratch, but this isn't just a practice project for you; this is your friend's business site, so you have a responsibility to give priority to his needs, not yours. And using a CMS/framework will allow you to, not only get the site up faster, but:

  • ensure that the codebase is up to professional standards
  • ensure that the codebase is stable and secure
  • ensure that the code is modularized and easily extensible
  • ensure that other best-practices are adhered to, making the code more maintainable

Now, if you're using a framework, then you probably do need to write a little controller code yourself even for a basic site. However, the framework documentation will lay out how to write this code for a standard CRUD site, which ought to be pretty straightforward. In addition to providing standard solutions to common problems, with frameworks like CakePHP, official conventions force you to adhere to best practices. It's still possible to write spaghetti code no matter what framework you use, but the chances of it happening are greatly reduced.

The fact of the matter is, it takes time to learn how to create a professional website, and you'd be hard-pressed to learn everything in a single project (and complete it within a reasonable amount of time). A CMS/framework provides a shortcut, and by looking at the code and conventions of professional CMSes and frameworks, you can also pick up a lot of knowledge that would probably take you years to figure out on your own.

Edit:
Also, even though most developers don't like to admit it, most websites are more similar than they're different (in purpose & requirements), so you can usually find existing (open source) solutions for most types of projects that are far superior to anything a single developer could write on his own in a reasonable amount of time.

So from that perspective, you'd just be re-inventing the wheel by creating another CMS for a brochure site/blog/e-commerce store/etc. Therefore, it'd be far better to choose a mature open source CMS you can customize/extend and benefit from the millions of man-hours others already put into its design/coding/testing/refactoring/patching/etc. This way, you only need to focus on creating solutions to the problems unique to your project rather than solving problems that have already been solved a million times before.

I mean, it's unlikely that a single developer will be able to write a rich AJAX interface (that degrades gracefully and is cross-browser compatible) matching that of Magento or Wordpress in less than a couple of months, not to mention all the other features standard in popular CMSes (automatic pingback, spellcheck, slug generation, routing engine, tagging, plugin capabilities, feed generation, localization support, data sanitization, file uploading, WYSIWYG editor, user management, microformat support, comment system, etc.). So trying to create a CMS on your own would both cost more time and result in a less robust product for your friend.

2
votes

If you're looking to go the ecommerce route (I see you listed products in the requirements) I'd suggest looking for an ecommerce CMS rather then Joomla or Drupal you might want to take a look at ZenCart or Magento. If neither you or your friend have any technical experience and don't really plan to learn you might want a hosted solution such as shopify.

If you are interested in learning at least the basics of programming, it is fairly easy to build a web store using symfony (framework for php) and PayPal. There are lots of good places to learn programming, I recommend symfony because it does a lot of the work for you so you can still get the project done while you're learning and it has the best easy to understand step by step tutorials that I've seen.

Good Luck

0
votes

Welcome to web world, dude.

A website has many points to be observed. Programming, SEO, design, usability... It definetively not a simple task. Nice too see you care about future maintenance instead of just getting job done.

But as any project, start it by its requirements definitions. A few questions can help you out deciding what is better.

  • Does this site need to sell online, implement any kind of payment/transaction, or is it just informative?
  • How often will content be changed? Once a year? Once a week? Many times a day?

The answers will lead you to the best approach.

CMS like Joomla and Drupal are used for content management. They make the task of input new entries and sections easier. But they are not so nice for other programming, like selling and so on. And yeah, they have plugins and addons that can power up those platforms.

Frameworks, like Kohana, CodeIgniter, CakePHP, PHP on Trax, are fine for quick development (but even a simple application to insert new entries to a database will require you to do a little coding). And yeah, they are easy to extend, implement new changes, and have a lot of addons and plugins, so making a payment routine can be trivial.

The other option is to code everything yourself. You can learn a lot, and despite all other powerful solution, this can be the faster way to achieve results if the requirements shows too simple. (You don't need an airplane to got to the closest groceries store, you can simply walk).

Other than this will resume to texts, photos, ilustrations, typography, visual identity, visual hierarchy... And all these are not simple too. Ask your friend all the material he can provide.

1
  • 1
    Actually, with CakePHP, you can "bake" a standard CRUD site in seconds literally without writing a single line of code. It uses Cake's command-line tool that allows developers to automate repetitive tasks and focus on customizations and other things that can't be done automatically (e.g. design). And one of his requirements is maintainability, which is one thing new developers are terrible at. So developing a site from scratch would not be the way to go and would actually cost more time/money in the long-run. Nov 5, 2010 at 14:09