blogbookshire me

Enough With The Trolls

05 November 2013

Every week I see people arguing over languages, frameworks, hosting solutions, architectural patterns… and every week it’s pointless. I cringe when, interviewing candidates for a Rails developer position, I hear something along the lines of “Hey, PHP is so bad, AMIRIGHT? *nudge* *nudge*”. So much energy wasted into this.

Because of that I felt like I should just write a post I can link people to when they start talking about this, so here we go!

A Mean To An End

The thing to understand is that languages and frameworks are just means to an end. They are here to help us create software. If they accomplish this, it’s a success. Everything else is a question of context and preferences.

It’d be nice if there was a solution clearly superior to every other, with absolutely no drawbacks whatsoever, but let’s be pragmatic here. Some languages are slower, have complex syntax, do not scale well, have a small community, use a lot of memory… so in the end it’s a mater of picking what would work.

Creating A New Product

Let’s say I only knew PHP and MySQL and I wanted to create a very simple website to test out an idea. No need for scalability, maintanability, performances or even security. Just a simple prototype.

I would probably use PHP and MySQL and that would be fine, because here the decision factor is speed and simplicity.At that point I want to build something . This doesn’t mean that using ElasticSearch wouldn’t be cool or that MySQL is superior. It’s just a set of tools fitting my needs.

Fast forward and I got very good feedbacks on the prototype. Maybe then I’d want to improve on what I already have by refactoring it using a PHP framework like Symfony. I could also rewrite it using NodeJS if I expect a lot of concurency. Maybe if I met a really good Go developer willing to help me on this project I could use Go.

What I’m trying to say here is that there is no “NODEJS IS BETTER THAN PHP SO USE THIS, YOU ARE THE WORST PERSON IF YOU USE THIS AND SHOULD BE ASHAMED”.

If my project fails because I spent 2 months learning NodeJS, then NodeJS was a bad choice. If my whole team is depressed because I enforced using Rails instead of Django, then Rails was a bad choice.

The Side Project

There is never a definitive answer to what technology one should use, just different situations.

If I start a side project to learn cool new stuff, then it wouldn’t make sense to use what I already know. In this case my whole technical knowledge is a bad choice for this project.

This is simply because the goal here is different, so my choices need to adapt.

To Sum It Up

"Don't define yourself by hating other things. Define yourself by building cool stuff."

Steve Klabnik at DotRB