Choose a Language Already

May 12, 2013

There are a lot of web programming languages. Here's a quick reference of the most popular ones. A question I keep asking myself, is what should I be learning right now? What language is most valuable for me to know? Are the current languages I know dying out, or are the others that have recently gained popularity just a fad?

More importantly, what value do other languages add to my current skill set? I'm sure a lot of other developers are wondering the same thing, or maybe they're in their PHP bubble without a care to switch. I recently set out to learn Ruby, and of course, the Ruby on Rails framework. As I'm digging deeper and deeper into the language, I'm noticing the once new and exciting code starts to seem like, well, old code. I see developers make negative remarks about Ruby on Rails' scalability, among other issues. I thought this was the “next big thing”, the end-all best solution for web development, etc etc. Well, clearly Rails isn't new. It's been around for a while. But to me it was brand new, and the sudden growth in community backs that theory up. So if Rails isn't the best way to go, should I bother learning it?

The Rabbit Hole

Ok so I've spoke with some other developers. I find that Twitter, while its front end is RoR, is actually powered by Scala. I learn about the existence of functional languages, Scala's relation to Java, and some more opinions about Rails. I had an itch to dig into Scala, but after little research I just felt it wasn't a good fit. It's really easy to fall down the rabbit hole of languages and tools, only to be completely overwhelmed and not able to learn a single skill and apply it to the work you're currently doing.

For a moment I felt a bit lost. There I was, spending lots of time learning Ruby on Rails, come to find out there are other solutions out there that could be more valuable. At that point I considered giving up Ruby and instead learning more PHP, as I currently use PHP for most everything, including this site. Therein lies the issue: there is no perfect solution. PHP is incredibly popular, well supported, has many great frameworks, is cross platform, and much more. Ruby can't really be better than rails beyond personal opinion. The same could be said about ASP.NET. I wouldn't dare write anything with ASP.NET, as I can't say I'm a fan of Windows at all, let alone a language native to that OS. But the language and framework is still capable of what PHP frameworks, RoR, and others can do. It's all really subjective, and because of how the web development culture works, this subjectivity isn't the most transparent. There will always be people so loyal to their language of choice, that all other options are moot.

Pick One & Stick With It

At the end of the day, it's up to you, the developer, to decide what you'd like to use. Are you already a great PHP dev? Do you love working in the LAMP environment, prefer PHP's syntax, and have a framework of choice? Keep using PHP; it's not going anywhere. Conversely, do you dislike PHP's syntax, the available frameworks, and LAMP in general? Ruby is a great language and Rails has some amazing features. I also feel that a Rails app can be up-and-running much more quickly and easily than with a PHP framework. Ruby's gems take care of entire app functions for you, such as user authentication, pagination, admin dashboards and more. Rails' generators let you quickly create a site's structure with little effort that would otherwise be rather verbose to write out yourself. Rails also interacts with databases in a way I find far superior to PHP; with straightforward Ruby code that translates to SQL ran on your database of choice.

It really all comes down to preference of workflow & syntax, and the type of developer you want to be. Because PHP is so popular, there are a million PHP development jobs out there. Ruby is also very popular and is a great language to know if you're into the startup culture. Programming with Scala is a little more niche. Finding a company that uses Scala may be difficult, with positions centered around certain areas of the world. Do some job research, and consider how you're going to apply your skills before becoming dead set on any one language.

Being Flexible

Slightly contradictory to my last point, I still believe other languages should be given some attention, regardless of how happy you are with your current skill set. I, after all, didn't have any particular problems with PHP until I realized what Rails was capable of. I hadn't used many PHP frameworks, and figured I should just begin learning a Ruby framework instead. Rails has since taught me to follow MVC, and use Object Oriented Programming, which I still had very limited knowledge of. Because of this, both my PHP and JavaScript skills have been affected for the better. I've also learned a lot about using the Command Line, and Git for version control. Since most Rails devs are adamant about using version control, it's very common for them to casually teach Git during a Rails tutorial. Another thing that sparked my interest was SASS: a CSS preprocessor written in Ruby.

So maybe I'm turning into a Ruby fanboy, but I'm still well aware of PHP's capabilities, and I'm not giving up on the language. Ruby isn't “better”, but I'm choosing it because I enjoy the community, I love Ruby's syntax, and I find Rails to be very powerful. In the end, we're just moving pixels around a screen and choosing a language to learn based on superiority is all but arbitrary.