As some of you know, I’ve spent recently a few months in Dubai. While there, thanks to the friends I made there and thanks to the Endeavor network I came in contact with a lot of local tech companies and startups. The techie in me was very curious about the ecosystem so I had quite a few discussions around technologies, frameworks and tech stack.
I have to say, I have a lot of admiration for Dubai: a city that grew over night pretty much to become a beacon in the Middle East on so many levels! I expected as such my findings about the tech ecosystem there to reveal similar impressive facts.
Sadly, what I found was that the tech scene there is quite outdated — and that is putting it mildly!
A lot of the Dubai ecosystem as it turns out runs on PHP. Yup, you read it right, not Ruby on Rails, not Java or Groovy or Kotlin or golang, old school PHP. The reason that I hear all the time when I probe as to why is upon a few coordinates:
Do you not know that most sites on the Internet run PHP?
This law of “most common” in particular amused me the most, hence starting with it.
Yes, it is probably true that most websites on the net run PHP. In fact, if you weren’t paying attention, this personal blog is running PHP because it’s WordPress-based! 🙂 And I do have a decent readership — Google reports about 1,000 visitors a month and as far as I am concerned WordPress/PHP does just fine.
Would I do choose the same stack if I had say 50-100,000 visitors a month? Definitely not. You can read about it, but out of the box WordPress does not scale up. There are plugins for caching etc you can employ but even that doesn’t hold up once you hit 100,000 — probably even before that.
And also, my other question when I hear this argument is this: are you just providing a website? with static content? Or are you actually developing a web application? It seems a lot of people still confuse the 2 terms — even though the difference is huge. A website presents content to the user, a web application has a lot of logic behind it and “does stuff”. Each bit of “stuff” adds CPU cycles, adds complexity to the code, to the architecture. And if you choose the wrong language you soon find yourself stuck — look at what happened to Twitter which started as Ruby on Rails then they hit a wall. (Nowadays Twitter is mostly Scala and Java btw.)
Last but not least, it’s not the number of sites I think who should help you make a decision. That coordinate is wrong! Here’s some statistics to help my point: in US at least, Netflix consumes something like 30% of the Internet bandwidth. (I haven’t checked stats lately so this number is based on some stats from a couple of years ago but I am pretty sure it still holds up, since we transfer HD and 4k videos to our consumers all the time.) Does that make it the site with most traffic? I don’t think so — Facebook has been taking that spot for a few years now if you are looking at visits for instance. (Full disclosure: as I am writing this I *am* actually working for Netflix, and ironically I am working on their growth acquisition, so my efforts are in fact in the direction of making netflix.com the most popular 🙂 )
I don’t have a breakdown of websites on the Internet, but I would venture to guess that a lot of them are not applications but rather semi-static content. There are a lot of small websites out there — be it small publishers which just put content out there, or even small mom-and-pop shops which put out a small web presence. And then there are of course personal blogs like this 🙂 In fact if you go in your Google searches past the first page you start seeing the kind of websites I am referring to. There is no reason for these sort of websites to think of scaling past “normal” parameters: do you think a small mom-and-pop shop website has to worry about taking more than 1,000 visitors a month? Or as I said, if my personal blog gains popularity so much that it’s more than 10,000 visitors a month it’s quite likely because one of my personal projects took off and this is no longer a blog it becomes a portal of some sort and at that point I will employ different frameworks and techniques. Look also at this article I posted a while back where I am encouraging separating your platform from the content and I am supporting the idea of running WordPress for your content marketing. Because content is cheap to deliver in the context of “regular” traffic. And as such it makes sense to use something simple like WordPress (which is, again, PHP based). But bear in mind I am explicitly separating content from your app here — so your platform stays in whatever you would like (preferably not PHP :D).
We are using PHP but better than the others
I heard that quite a lot and it is invoked as a cheap excuse it seems for using PHP: yes, I use PHP but my tech stack is so much better than the others because I use xyz framework, or architecture.
The problem with that is that it establishes a very low bar I think: rather than looking at what are the Facebooks, and Amazons and Netflix of your domain and aim for that, you are restricting your comparison to a small geographical area. By doing so you restrict your view of the (tech) world and as such you miss out.
This also creates a vicious circle: everyone uses PHP and I want to be a better than them so I can use PHP but make sure I do this and that but do not repeat the others’ mistakes.
PHP allows for very cheap hosting
This is another one that makes me chuckle. Sure, you can get a LAMP hosting solution in a shared hosting setup for under $100 / year nowadays. And you can get this off the ground cheaply and have your first MVP delivered then look for VC money to grow this. The trouble is when the money arrive, no one expects you to go back to your solution and throw everything away and start from scratch.
So you are stuck now with PHP for a few major releases. And this will hold you down pretty soon as you will have to start thinking about scaling, separating front end and backend, building a more robust SOA or microservices-based architecture and so on.
Sure, you will say, but you can build modular apps in PHP where from the start you separate front end and back end and then when you start scaling you keep your front end PHP and start evolving the backend. And I agree, if you start that way it will be an easy job to evolve your platform. However, most of people starting with this idea in mind end up creating a PHP monolith with backend and frontend and database layer and who-knows-what thrown in together. Try to scale that up while also evolving your product — possible, again, but by God a huge problem!
And also, if you start a well structured solution and you decide for PHP, why not go to something like AWS from the get go? Sure, a bit more expensive, but not by much!
Not to mention that there are also angel investors out there to help you exactly with this first step and take the load of these initial expenses from you.
Facebook uses PHP!
This one is a classic. Yes Facebook uses PHP (well, Hack, their own spin-off from PHP). They use it however for their front end — and in fact if my understanding is correctly they write code in Hack but then this gets transpiled into C++ and what they deploy is actually compiled code.
A lot of their backend is Java-esque it seems — be it Java itself or Scala, Kotlin, Groovy and the likes. If you read about it, Facebook is quite polyglot so looking strictly at what their front end is using is a wrong coordinate. (Not to mention, as per above, that actually they do not run PHP in front end servers, as I said, they write it only.)
It’s cheap to hire PHP developers
This I actually the one that I believed as a valid reason and turned out to be the biggest misconception out of all of them. At first glance, it makes sense: if you look not just in Silicon Valley (a market I am familiar with) but even across Europe and other areas I worked in, cost of a PHP developer is low by comparison say to Golang, C++, Java, Python and others. So at first I took this at face value.
However, as I started learning more about this I realised that while the salary for a PHP developer is lower than others, the cost of actually hiring one of them is much higher!
Here’s the thing: it turns out that there aren’t that many PHP developers out there 🙂 In fact one of the companies I was talking to while there said to me that they established their pool of good PHP developers to be down to about 3 companies in Europe.
So very quickly you find yourself in this situation where you are competing against other local startups for the same (small!) pool. What this means is not so much that the PHP developers salaries will grow but that it takes much much longer to hire a developer. And while your developer positions stay unfulfilled you are not making money — because you cannot evolve your product as fast as you need to, deadlines are slipping, customer onboarding is being delayed and so on.
And because it’s harder to recruit these guys you now have the added problem of hiring more in-house recruiters as the recruiting cycle is longer and you want all the “potentials” nurtured and looked after. Or you end up paying an agency through your nose to get you quality PHP developers. Or, if you can’t afford that, you settle for a cheap agency which takes forever to give you exceptionally under-average quality developers.
It’s a false economy: you are better off expanding your tech stack and paying upfront a higher salary and getting your product delivered in time.
There are of course success stories on the tech scene in Dubai — souq.com for instance (acquired by Amazon) and more recently Careem acquired by Uber. The interesting thing about these folks is that they are very polyglot — if you look at their LinkedIn job postings you find Java, golang and lots of others. Sure, souq.com for instance is running PHP in front end but from what I learned that is just a very very very thin front end — and with being part of the Amazon family this is changing rapidly.
There are however a lot of folks that are stuck in an ancient era of the web, when LAMP was a thing. The problem for them is that Dubai, while still behind on some of the tech stuff, is a fast-moving environment (again, look at what they have achieved in 30 years!). At the moment it might look like everyone is crawling along with their PHP frameworks and tech stack, but soon enough more and more of these companies will get up and start running — souq.com and Careem are just the tip of the iceberg!