Here's my situation: I'm an ASP.NET Developer first and foremost. That's not going to change anytime soon. I have built my small business on it. With that being said, I'm looking to add other technologies to my arsenal. Not just for learning purposes, but to one day be able to offer clients an alternative solution. For this reason, I have gone back and forth between the PHP/Framework world and Ruby on Rails.
I'm going to list a set of pros and cons that I have found with each, based on my research and personal needs. I'm hoping you can be objective as you read through these, share YOUR personal experiences, and then provide me with advice.
(running Mac OS X)
Ruby on Rails
Pros:
-Ruby is OOP through and through
-Ruby and Rails was a piece of cake to setup for development
-Rails Framework is modern and encourages the best practices for today's web dev
-Cutting edge and has influenced major competing technologies to push the envelope like PHP Frameworks and now ASP.NET MVC
-Convention over Configuration makes development a bit easier, cleaner, and more efficient
-Very Agile
Cons:
-It's a moving target. AWDWR book was just released and already there are changes in v2.3 that make the book dated. And the Rails/Merb team are gearing up for 3.0. Yikes!
-Hosting. Although, this may be improving (haven't done a ton of research here)
-Not a lot of jobs from what I've seen.
-Documentation. This appears to be getting better though. The Rails Guides is very promising but it's still a pain point I believe.
-Rails almost has too much 'magic' for my taste
PHP [insert Framework here]
Pros:
-It's been around forever. So the community is HUGE and the documentation is plentiful.
-Options. You can code without a framework, roll your own, or use any of the several popular ones out there.
-Jobs. Probably THE most popular technology powering websites out there. I don't think there is or will be any shortage of PHP work.
Cons:
-Because it's been around forever, it does seem to suffer from spaghetti code with its procedural programming roots. OOP functionality feels like a band-aid.
-The bar to entry is very low, so naturally there is a lot of bad code out in the wild.
-Syntax is just ugly.
That's what I have right now. I'm really torn. Again, I want to pick up one of these so in the future I have more options. What would you suggest?