So, there I was at the multipack meetup in Birmingham yesterday chatting away to a bunch of people in the sun, including @simonbanyard who’s decided to get into web development in a proper way. We were kicking around which web dev stack he should learn, which was entertaining — PHP, Python + Django, Python + something other than Django, node, Rails, .NET, whatever. In an effort to explain to him about web stacks, I came up with the following analogy.
The three web dev stacks that you probably should choose between are PHP, node.js, and Python. They map quite neatly, in a handwavy philosophical overall feel sort of way, onto the three operating systems that you’re likely to choose between, Windows, Mac OS X, and Ubuntu, as follows:
PHP = Windows
PHP is ubiquitous. Everyone’s got at least a little bit of knowledge of it; everyone’s used it; most people got started with it. It works everywhere; it’s got the biggest community. It’s a bit clunky, in part because it’s grown organically and is full of stuff that was put in to fix a need five or ten years ago and still hangs around because people use it. It doesn’t really stop you from doing regrettable things; you look back two years after your first piece of work and you’ll think, ugh, why did I do that, I know so much better now. But, importantly, if you know what you’re doing it’s entirely capable of greatness, and way too many people wrongly assume that anything done with it must by definition be rubbish.
node = OS X
This is very cool, and very, very good at its job; the best thing available right now. It’s where the trendsetters are. It is so much the future that everyone else will be copying it a couple of years from now and if you’re into it, you’ll be in on the ground floor and able to be smug about it when your friends finally follow you over. They have no hesitation in breaking backwards compatibility in order to make a better product in the future, which means that if you stick with old versions you’ll find that you’ve been rather pushed out to sea on a dwindling ice floe and all the new hotness just isn’t available to you. And there are a fair few people using it not because they’ve really sat down and decided to do so, but because their hip idols are doing it and they’re following along behind.
Python = Ubuntu
After years of being scattershot and having no plan, this finally got itself together and delivered a pretty good stack. Importantly, you’ll find yourself having to understand the underpinnings of this slightly more than you’d perhaps like to in order to properly get into it. It’s not quite as easy or as futuristic as the others, but it really does make sense for everything you want to do once you get over that first hump. Once you’re into it you’ll do everything with it and wonder how you ever did without; until that point, you won’t really see it as being all that good, and it’s undeniably not quite as well-polished as it could be.
Now you get to overextend the metaphor by complaining about it.