Joomla vs. hand-coded PHP

Hey! I would like to hear your opinion: which way should I go if I want to build complex websites, which really work well - PHP or CMS (Joomla for example). I have already done a static website using html and css, and I enjoyed coding it. Now I need to go dynamic. What is better if I would like to make living of it? Thank you for your help!

I would suggest that you go the hand-coded way first. This will expose you to many trials and tribulations and constant torture by the PHP interpreter, and that will harden you as a programmer.

After you have built a couple of sites on your own, you might want to check out Frameworks, not CMSes, CodeIgniter is one excellent framework, for example. This will further your knowledge of OOP, best practices - while significantly cutting down on time wasted on arduous tasks that don’t teach you anything at this point.

Now, explore Joomla and Drupal. You will straight away be able to understand the concepts and the jargon used in the documentation and tutorials, while actually appreciating how much of a help these things are.

If you are serious of making a living out of this, you might want to go through the above cycle - if you do it right, you should be pretty good in six months’ constant coding time depending on IQ.

<snip/>

It’s better to use already available codes rather than starting from scratch. You can use joomla or any other portal software and then start customizing it. It will save time and let you focus on other aspects such as marketing website.

Those definitions are a little ambiguous.

If by complex, you mean that your websites will do heavy calculations / algorithms, you definitely want to go custom…

If, however, you just mean that you want some CRUD (create, retrieve, update, delete) via an admin, and maybe the addition of other common functional website modules, Joomla is fine (though not my top choice of CMS).

If by “really works well”, you mean that it is high-performance, and can handle a significant load of traffic without any problems, or that it’s coded by professionals and employs the best usability or coding-style techniques, you definitely don’t want to use any OS solution. I’ve been working on optimizing a Joomla website this week, for example, and the home page alone performs 120 individual database queries!!! ONE HUNDRED TWENTY!!! And it loads 43 individual JS & CSS files FORTY THREE!!! That’s what you get with a CMS - added complexity = added inefficiency.

If, however, you just mean that it’s mostly bug-free and does what you expect it to do, then an OS solution is fine.

A final comment - with a CMS, your interfaces won’t be as “custom” or “tweakable” as with a custom solution… unless you get into the code and hack away at the default coding. Your DB will never be optimal for performance, and your HTML will never be optimal for SEO (Wordpress+Thesis is actually an amazing exception that’s really awesome for SEO, though). That’s not the purpose of a CMS - they’re designed to be quick ways to get a website live with lots of functionality, or for people who don’t know anything about programming to develop a functional website.

Cheers! :slight_smile:

Joomla wouldn’t be my first choice for a CMS (it’s overly complex, has been riddled with security issues prior to 1.6, has a counter-intuitive UI, and many of the extensions/plugins tend not to be free). I’d recommend shopping around a little bit, as I’ve seen better options. Wordpress and Drupal are two other free CMSes that are worth a look.

Thank you very much for your time and effort, all of you have provided me with some reasonable arguments. I guess I need to start getting into PHP while working with Joomla, in order to put Joomla away once.

I’ve been working on optimizing a Joomla website this week, for example, and the home page alone performs 120 individual database queries!!! ONE HUNDRED TWENTY!!! And it loads 43 individual JS & CSS files FORTY THREE!!!

…and these numbers are just huge! I think I don’t want this or something similar to happen in case of my website.
Thanks again guys!

In regards to the original question.

  • yes you need to understand coding on a bare bones level to a certain degree

  • yes, you won’t get anywhere for more complex solutions if you don’t employ a framework of some kind and it is a good way to provide standardised abstraction, documentation and communication between team members. It also allows you to share knowledge and best practice from the industry

In regards to Joomla as a CMS

  • For many websites for brick and mortar businesses, speed details and number of database queries are irrelevant, specifically, there are many easier hanging fruit to achieve the same speed, such as file based caching
  • If the CMS is not accessible to the business owner and his assistant within 1 hour of training or if the branding is not business friendly (yes, I’m looking at you mean-looking Drupal logo) then all effort is wasted and the CMS (and therefore the success of the website) can be written off.
  • If the CMS is not in mass use and open source, you are betting on the CMS supplier - ie. when they are bought out by their competitor or investment company it won’t have a future.

Just some t houghts, I hope this helps.

Jochen

PHP or CMS (Joomla for example).

I don’t understand the point behind reinventing the wheel unless you have lots of free time and looking to expertise in your field, even if we keep Joomla apart there are ten’s of CMS which you can choose from (and the best part is: most of them are free and there is no licensing fee involved)
so, its your own choice!

What is better if I would like to make living of it?

to make living out of it, you have to put your 100% (sorry, i am being too much bookish here -
but this is what i feel about it when it comes to make a living out of it)

I suggest you to use wordpress, its simple and easy to use.

If you need something like a CMS, then Joomla would be a good choice. But if you are building something else, then PHP would be a better option and perhaps you could benefit from a framework like CodeIgniter.

The entire purpose of php as a programming language is the ability of the backend, the capabilities of, and ability to, manage information and organize user interaction. Basically all php does is automate information.
Joomla is not unique simply because what you see there is a collection of identical scripts and abilities. If you wanted it to do something “not unique” you would simply have to write a script to give joomla that ability - at which point it would still not be unique.