The tipping point for NodeJS

The prime reason to use PHP is the prime reason to leave it

People have argued in the past that PHPs badness is it’s advantage. And it’s true. The speed at which non-programmers can put out functional and even notably use- and successfull websites is staggering. An absolute absence of arrogance in the community and the silly utter wackyness of the language keeps everyone focused on solving the problem and not building an architecture that one can get high over but never gets finished. Paul Graham calls this the Blub Paradox, and explains the advantage C has over Lisp due to the weaknesses C has vis-a-vis Lisp, and not its power.

PHPs documentation and the availability of answers on the interweb are still an example for many other technologies and the duct-tape & chickenwire approach to getting things done on the *nix platform make for some awesome environments that everyone can tinker with. An environment where even *nix fanatics are happy and gladly join forces with Mac-Hippsters who like to fiddle with nice UIs on their *nix platform and non-tech beancounters who are longing for something they can understand and click on that is up and running next week.

The installbase of the usual PHP applikations puts every other web-oriented technology stack to shame and even PHPs security track-record is pretty impressive, given the size of its installbase.

Yet I do think PHP is on the way out. At least with me.

Why is that? Well, the point lies in the above. PHP and it’s amatureishly designed applications are a mess. A working mess, but a mess none-the-less. And, this is perhaps the biggest downfall. The teams working with PHP rarely know true indepth rules of software development. Example: Up to this very day I’ve run into more PHP developers whom I’ve had to explain why versioning is an important thing than ones that already knew and were using it. It’s just one example, if one which sounds patently absurd to any real developer, but there is truth to this in many different fields of development with projects with PHP stuff at their core.

PHP originated as a templating language for end-users, very much like SQL started as a query interface for office workers. Simple and easy to use, but very hard to scale technology wise. This shows at every corner to this very day.

Why and where the move to NodeJS makes sense

NodeJS is the new kid on the block, at least to a point where it makes sense of considering it for something mission-critical, and because it drops an entire programming language out of the web-mix and focuses solely on JavaScript it offers an intrigueing advantage over PHP, especially with modern asynchronous and “progressive” “webapps” making the decision about server or client-side more and more arbitrary.

This however, to me, is not the main point making a move from LAMP to Node attractive.

The interesting part about Node is, that while being built on a losely typed language (a fact that has the C-family members and Java folks abruptly wake at night, bathed in cold sweat) and having hippster written all over it, Node does come with a factual demand for the newest and flashiest in technology. Which is not a bad thing, no matter how it may sound. For example, it makes no sense at all to do Node without looking into load-balancing and stream-handling at the same time.

And here lies Nodes big advantage yet, in my opinion: You can not be a non-programmer and get something useful done with node. Especially if you’re a ‘non-programmer’ that has been doing LAMP for the past 15 years. The barrier of entry is notably higher that with PHP, despite having one programming language less to deal with. You need basic knowlege of TCP/IP and HTTP to get up and running with Node. You have to be ready for the world of distributed and virutalised serverpower where the question about the underlying host technology is just about academic and nothing else. You have to feel safe doing low-level things whilst at the same time not crying like a baby when you notice you’re lacking that one single FTP thingie to dump all your shit on to get your unmaintainable ball-of-mud running instantly.

NodeJS is hip, but it is a specialist technology none-the-less, which put’s it in a position that PHP can never reach. And probably wouldn’t want to reach either.

Conclusion

I find myself longing for environment where people building non-trivial webapps take approaches beyond the next WordPress plugin and the next bizar hack to get things running half-way and understand the requirement for avoiding the quick-and-dirty way. While that is possible in PHP, I’ve come to the conclusion that it’s too difficult to find the right people in the PHP community and that it as a whole is to large and has to many fiddlers and part-time proggers and not enough ‘real’ programmers to be sure you’re getting the right mate or joining a crew that actually knows what it is doing.

That is the one last big reason why I’m looking into moving to Node and away from PHP.