
The eternal war continues
If there’s one thing the Internet can always be counted on then it has to be the polarizing effect it brings out in people. Go onto any site, any forum, any social network or even any blog and you’ll find people either vigorous defending something like it was the reincarnation of the messiah or viciously attacking it as if it were a suggestion of Hitler’s. Things are no different in the web industry world either. People endless debate the merits of certain approaches, certain styles of developments, whether or not designers should be able to code and, of course that time old classic, which development language or framework is best. I guess it would be rude to buck the trend.
I’m going to try and refrain from going too deeply into the technical merits of developing either with PHP or Ruby on Rails because, frankly, I think they’re much of a muchness plus quick searches around the net will reveal far more in-depth explanations of their mechanics than I can ever relate in a single blog post. Some people call RoR a slow, some people say PHP is archaic, I think these things are petty considerations as the reality is they are both similar enough in terms of their technical offerings. Ruby 1.9 is almost just as fast as PHP now whilst PHP is constantly being updated and has an abundance of good frameworks to chose from. Unless you’re either incredibly intelligent or a complete pedant, I don’t think their operating foundations are really going to have much of an impact on you. So instead, lets look at the considerations that really matters like, y’know, the higher level business stuff.
Why pick PHP?
PHP is the development environment of choice for most web agencies and for good reason. Aside from it’s open source nature (which RoR also boasts), it’s incredibly well established and by far the most popular web language on the net. This simple fact gives a tremendous number of advantages to companies such as a huge variety of off-the-shelf CMS’ to pick from, cheap and abundant hosting and a large, well supported community. Developers are also easier to find and cheaper than their Rails equivalents which means it’s easy to quickly find freelancers to work on projects when required.
PHP is the development environment of choice for most web agencies and for good reason.
Perhaps the biggest reason to go for PHP though is that certain clients love it. Well, the ones who’ve hired a consultant to help advise them on their new incredibly expensive web site anyway. These are the people who think an open source CMS is the only way to go and to present any other option would leave you dead in the water. The advantages and disadvantages of open source CMS’ is a discussion for another day but at least by developing with PHP you’re more likely be familiar with that favourite one the client has their eye on.
I guess at the end of the day if you’re looking to compete in a traditional web agency environment then it’s going to be very difficult to develop with anything other than PHP. It’s well established, versatile, easy to find developers for and something a lot of clients are familiar with, especially when it comes to open source CMS’, all factors which will ultimately help you win more work.
Why pick Ruby on Rails?
Compared to PHP, RoR is relativity new, especially in the sense that it’s only started to really pick up a following and gain traction in the last two or three years. But oh what traction it’s gained. With some of the biggest and most profitable sites in the world built using it (i.e. Groupon, Twitter, Hulu etc) and entire seminar and conference events dedicated to why it’s so potent at generating tangible business benefits, Rails really is the perfect environment for building web apps and agile systems that need to be quick and cost effective to scale.
I think it’s fair to say that the popularity RoR is exploding right now
Likewise there’s a lot to love about the workflow that RoR supports natively. I promised I wouldn’t go into the techy stuff but simple things like database migrations, excellent testing utilities, straightforward integration with automated deployment mechanics like Capistrano, and a standard development conformity across all projects (compared to the dozens of frameworks available in PHP) mean you’re development cycle is going to be slicker, faster and less error prone. To put it bluntly, you can build things more rapidly in RoR than you can using even the most comparable framework in PHP which, in turn, lowers your development costs and increases your quality. Now that certainly is something to take notice of.
I think it’s fair to say that the popularity RoR is exploding right now and demand for it’s use (not to mention for experienced developers) is rather massive as more and more companies start to realise the benefits it can bring in terms of speed of development, agility and the ability to quickly get products to market. Also, whilst it doesn’t have the array of open source CMS’ available to make it as appealing as PHP to a lot of web development agencies I have no doubt that’s an area of Rails we’ll see grow over the next few years.
Why not pick both?
At the end of the day, most companies are too deeply entwined with a particular development environment to consider switching to another and most developers too single minded in their support of a particular programming language or framework that it’s often impossible to get anyone to look twice at an alternatively solution. Which is a shame really as both PHP and Ruby on Rails have a lot of fantastic aspects going for them in very different ways. So why not master both technologies and use either when appropriate? Why must we chose one or the other and stick with our decision until death? Surely being technically agnostic is the most beneficial place to be?
Surely being technically agnostic is the most beneficial place to be?
I suppose if I were forced to to respond to my own rhetorical question then, which is right for your company, Rails or PHP, the answer would have to be both.

What about python + django? I’ve noticed a few startups going that route and with a lot of CSE programs in universities using python instead of c/c++ these days it seems likely python on the web will boom soon.
I’ve never done any Python programming and only heard bits and pieces about Django. I always considered Python to be quite an old language that wasn’t very popular any more? Would certainly check it out if it boomed.
I think Ruby had it’s moment (just a personal opinion, don’t know the community that well), the new kid on the block – with far bigger traction – is node.js;
PHP will always be popular, most of us learn it as the first programming language, because it’s so easy to have php echo statements inside html. Wrong, but easy
Oh with no doubt JavaScript in general is going to be huge over the next few years. As more of the actions we perform take place immediately and asynchronously through JS interfaces, I think we’re going to see less and less reliance on back end programming languages. BTW, check out Backbone.js!
The think that strikes me most is that a lot of people started using PHP for web-development, haven’t really worked with rails (on multiple types of projects) and shout PHP is better. I’ve used PHP for 6 years full-time, and Rails now for 1.5 year full-time. I’m educated in computer science, and learned Object Oriented programming there. I know a lot of programmers who are self-thought, and don’t understand Object Oriented programming. These people will never understand rails, its structure and cant see past the ‘magic’ and understand how and why it works in the way it does.
I love Rails for the fast prototyping, and there is a big world behind it’s magic that, thanks to the language Ruby, makes it great to customize it totally for your own needs using meta-programming and other tricks that PHP could never have.
For everybody that is educated enough to try Rails, do that first for a certain amount of time and then draw your conclusions.
Everybody that has used only one of the two finds their own technology superior, because that’s the only side they know.