Please… PLEASE… if you are starting up a startup up, PLEASE can you stop using PHP.
Oh and if there is a techie telling you that PHP is the best solution for your startup, then they are an inexperienced…
Please read the above article first… this will make sense then.
One thing to say before I go any further, that one of the responses I had to this called me a “dickhead”:
I don’t know this person and have never corresponded with them before. I have no understanding of why they think it appropriate to send me personal abuse via twitter.
I do understand that they may think that I am referring to them when I say “inexperienced twonk”. Maybe I shouldn’t have used twonk (I’m using it to mean not someone who’s opinion is particularly valid — maybe I should have just said inexperienced and left it at that — sorry if I offended anyone). So let me clarify my opinion.
I have come to this opinion about PHP after many years (around 10 years I’d say) of working with startups in a senior tech role (either as CTO or as technical consultant) and discussing this within CTO circles in London as well. This means that I have experience and context from many startups in various phases and the specific pressures and difficulties they go through. I am by no means the greatest authority (happy to admit that), but I have probably been involved with more startups than most in this kind of role (well over 10 in recent years alone). I’ll quite happily go toe-to-toe with anyone that disagrees with my opinions and explain why as well.
CONTEXT IS EVERYTHING!
To clarify, I am specifically talking about if someone is starting a new tech based startup in the current tech climate, and definitely not saying that PHP is not valid for certain other scenarios.
The reason it’s a poor choice (in my opinion) is that even though it’s significantly improved from it’s days as a web template language, and is capable of doing a lot of things that other languages can do, it is not a significant improvement on any of them.
Note that I am not saying you can’t do anything with it, but I am saying that given the choice of technologies available there are better options. So to choose PHP would require you to have a valid reason to choose PHP over and above those other choices. There are very few that I have seen (well… none).
Python/django, ruby on rails, node.js and a host of other more recent frameworks and languages have been created since PHP and as such have been developed and adjusted to fit the new hosting paradigms much more.
Hosting paradigms like cloud are of key importance to this point. PHP is a great language for a single website hosted on a server. Oh and you can of course build it in a “cloud” way (otherwise some startups would have failed long ago) but it’s still only a web language (at least in perception). It is part of a stack that goes along with a web server, databases, and therefore acts as a pure web application server quite well.
And in todays startup environment “just a web application server” is not a good choice, or at the very least is a short-sighted choice. Because you have multiple things to do in a startup. Back end, front end, client, server, APIs, background processing, queues, data processing, analytics etc. We have gone a VERY long way away from just building websites in startups now to building infrastructure that can often last a long time.
I even had one member of the community tell me that they build the website in PHP and then build the back end services in node.js! Think about that…
Seriously… when you do a startup, one of the worst things you can do is ensuring that you are requiring multiple technologies for that startup to run. Think about scaling them team later on… if you have to hire both a PHP and a node.js programmer to run the application function, then you are effectively reducing your hiring options (someone that knows both) or increasing your hiring need (two hires). You are also increasing your need to keep on top of multiple security issues in the stack, and increasing your training and maintenance needs as well.
Keeping a startup to as few a sets of required technologies as possible is a no-brainer and a sensible thing to do, which puts PHP, as a pure website application language, at a significant disadvantage.
And the PHP community who have come at me personally because of this article and my opinions (you know who you are and there is more than 1 of you) need to understand that if you think that yelling at me from your IP address, being personally abusive towards me and telling me I’m wrong is any way of refuting the article (however short it was) is just pointless.
Write an article that espouses why PHP is valid for a startup that is about to startup. Go on, do it.
But if you do, expect people like me (you know, experienced startup techies) to come along and refute it and point out the problems and issues. It’s fine. Happy to do it.
On that note… things that people have said about PHP:
- It’s better in recent versions — fair enough, but it has significant baggage in the minds of most experienced techies (still web application tier only). You have to make a quantum leap in improvement to get past the baggage problem.
- You can build anything that you can in other languages with it — not entirely true, but for most web based things, of course you can. I refer you to the point about it not being the “best” choice, not whether you can achieve your technical goal by using it. This also misses the ongoing maintenance point I’m trying to make. It’s not about finishing the “project” but ensuring stability and security over time.
- You can put a PHP file onto a web server, and it just runs — seriously… someone said this. I don’t like this at all. I don’t want to have a file running like that. I don’t want a developer thinking that deployment is as easy as copying files. I’d like it to be properly tested and have a modicum of control over when something is put up and installed. This isn’t a positive in my view! Good devops is key to a startup. This isn’t good devops.
- Well supported — yup! It is. Lots of people us it. But is it good or bad support? Debatable. Also, just because lots of people use it, doesn’t mean it is the “best” choice. It could just be that lots of people use it because it’s easy to learn. My experience is often that PHP developers are not as good at “programming” as developers in other languages. That is a negative.
- Flexible language — um… nope. It’s not (although I could have misunderstood … what do you mean by this???). And this isn’t necessarily a good thing.
- Shallow learning curve — ROFL! The corollary of a shallow learning curve is that it’s easy to make bad code that apparently “works”. So, if you don’t mind code that could turn out to be terrible in the short/medium/long term being put into production at speed, then that’s fine. There is a security in having developers that have actually had to learn something about programming to develop a system. It’s longer to learn how to code, but not necessarily longer in terms of development time once you’ve learned it. Note: it’s possible to produce bad code in any language. I know, I’ve done it and seen it.
Sorry — my opinion is my opinion. Take it or leave it.