Developing More Efficiently: Web Frameworks
I always write about CakePHP and love it. I give it mad respect because the guys behind that project not only deserve it, but without it I'd be stuck in the dark ages. Perhaps I'd move to Zend or Symfony, but I'm glad there's CakePHP. However, there's a bunch of other web frameworks that aren't well known (not that any of them really are in the big picture), they include CSS, Actionscript, JavaScript/AJAX, and more...but I'm just going to talk about the two most important of the current tools in my shed.
CakePHP
CakePHP is (obviously) a PHP framework that was inspired by Ruby on Rails...but thank god it's not using Ruby. Despite the fact that Ruby is now available on more and more web hosts...I just believe PHP to be a more popular and better choice. Not to get involved in a whole which language is better situation, but for WEB APPLICATION development, I prefer PHP over .NET, ASP, Java, Ruby, Python, Perl, and whatever else I'm missing. I find it a very friendly, popular, fast growing, flexible, and stable language for internet use.
What CakePHP really does at heart is gives you a structured approach to development. It keeps everything well organized (or helps...you can still make things messy), it keeps things secure (unless you go and break it), it keeps things moving along quickly, and it does all this efficiently and helps you work with databases very efficiently. This is why I use CakePHP. I couldn't possibly develop something (large) more efficiently without it. I'd be making too many database queries or I'd have confusing code that wasn't re-usable.
Granted for small scripts I won't use CakePHP, the overhead and number of files doens't make sense. An example here would be a simple form...However, if I wanted to make a larger application that served up a variety of forms that would change all the time...then I'd use CakePHP.
I feel CakePHP is the best choice to build a CMS with. WordPress, Joomla!, Drupal -- I've used them all. I know now that I can do better and make better applications. Those were created a "long" time ago and didn't get to benefit from all the technology we have now. The creators of those projects couldn't abandon their original code because it would be too hard on the communities that they established. People wouldn't know what's going on, they wouldn't be able to upgrade their sites, etc. Mass chaos. So they are stuck. This is also my theory for things like Myspace. In my eyes, that site is the biggest pile of garbage on the internet. I know it could be done better, but it grew too fast and too large. God only knows the server power required to run that. God only knows how much more efficient it could be...but EVERYONE knows how ugly it looks and the design wasn't well thought out. So facebook looks like the victor there...but I'm not going into that stuff.
My point here is CakePHP requires upgrading as well, but it's not mandatory. You could have a very nice application on an older version of CakePHP and not ever need to upgrade. Not that upgrading is too difficult, the core files sit outside your application so it's easier than say upgrading a modified Joomla! or Drupal site. However, it's your code that is the real thing to improve upon when building an application with CakePHP.
With CakePHP, you could build a blog application in a day. So happens the one I'm working on is not just your average blog and I don't have a lot of time to work on it...so it's taking a while. However, I have build a custom CMS for a site with CakePHP within 10 hours. It allows the user to update their site (almost entirely) and it's well done. It makes far less queries to the database than WordPress, Drupal, or Joomla!, and has less overhead. That would the solution if not for CakePHP too. Use some pre-existing CMS to get the job done. That kind of thinking is so wrong. It actually takes LONGER to modify Drupal, Joomla!, etc. to get it to work exactly how you need in most cases. Now, if you want a site that works exactly how these other CMS' work, then use them. Then it's faster. However, that's just not the case for most sites.
Blueprint CSS
I've rambled on enough the backend efficiency and code of the site. CakePHP is perfect for making a lean and mean site. However, what about the looks? Sure, the new 1.2 version of CakePHP starts you off with the ability to cleanly theme your applications so you can easily switch out designs and keep all your visual code yet again seperated out and well organized...but how about CSS?
Well, I found out about CSS frameworks...Huh? Sounds bizarre right? Well, I guess anything that follows rules and such is considered a framework. It does, there's a paradigm here to follow and guess what? It comes out looking REAL nice.
Blueprint CSS, like CakePHP will let you build EXTREMELY fast. It also has compressed css files to help speed things up. Again though...if you're looking for a small site or just a page, you should skip out on Blueprint because it'll be too much overhead for something so simple. Knowing when to use these tools is so extremely important and so is using them properly. Otherwise, you could end up with a lot of mess and even wasted time -- the exact opposite of what you were after in the first place.
So. What does Blueprint do? How's it work? It keeps your CSS clean and working across multiple web browser and it works off a grid system. So things end up looking the same (for real) on Firefox, Internet Explorer, Safri, Netscape, Opera, etc. You don't even have to think about it. That's the best part of all. Before, one could spend hours trying to hunt down compatibility issues and aras where one browser rendered something perfectly, but the next rendered it a different way and it broke things. Now, those issues are far far less and are super easy to identify and fix.
This also gets print design closer to web design. Grid systems are extremely important in design and before we only had a loose system for the web. One would have to make that themself and it would be hard to stick to it. Blueprint works off a great grid system that's already there for you to customize and it's easy to stick with because you pretty much have to.
With Blueprint, I've been able to convert Photoshop design comps to web sites faster than ever before and with less errors across browsers. Like CakePHP, it is a power tool that you should not miss out on.
Conclusion
With thes two powerful tools, one could make a very beautiful web site/application and quick. The most important thing to note with both of these frameworks is their flexibility and their ability for customization. You can override these frameworks and make them work the way you need. You can do so without modifying core files...so you can always upgrade (if neeeded) and you can re-use code with greater ease. So you're never stuck.
It's a very exciting time to be building dynamic web sites. There's a learning curve and I'd always reccommend learning how to make things "the old" way or the long way first. It helps you understand these tools better. It also allows you to appreciate them. It's just like setting type and designing on a computer, versus hand drawn and older photographic methods of design. It's super important to understand the history behind all of these creative mediums.
You should also choose the framework(s) that you're most comfortable with. There are others. Check them out. Frameworks I didn't dicuss, but are worth looking into include; Flex (for Actionscript), Symfony, Zend (PHP), Ruby on Rails (Ruby), jQuery, Mootools, YUI, Scriptculous, Aflax (Javascript - some of these also just considered libraries, but speed your development along - Prototype would be the "framework" for many things), and more. Check them out, they can really help you with some complex tasks and make your life easier.
Other Blogs