Ask Slashdot: Should I Ditch PHP?
Long-time Slashdot reader Qbertino does PHP for a living, but says he's growing "increasingly frustrated with the ignorant and clueless in the vincinity of PHP."
Crappy code and baaaaad application setups is one thing, but people refusing to fix them or simply not even understanding the broader implications of bad applications or attempting SEO with gadgets while refusing to fix 3.5 MB-per-pagecall are just minor tidbits in a history of increasingly unnerving run-ins with knuckledragers in the "web agency" camp...
Will I leave the larger part of this backwards stuff behind if I move to another server-side programming language such as Java or Kotlin for professional work in the broader web area? Do I have a chance to do quality work on quality projects using PHP, or are those slim compare to other programming languages? In short, should I ditch PHP?
"I think .NET is a much cleaner language to work in with Microsoft's excellent Visual Studio IDE and debugger," argues Slashdot reader Agret , adding "there are many large projects in my city hiring .NET developers and being a strongly typed language the code quality is generally better than PHP."
But what's been your experience? And would a frustrated developer find more quality projects by ditching PHP?
Will I leave the larger part of this backwards stuff behind if I move to another server-side programming language such as Java or Kotlin for professional work in the broader web area? Do I have a chance to do quality work on quality projects using PHP, or are those slim compare to other programming languages? In short, should I ditch PHP?
"I think .NET is a much cleaner language to work in with Microsoft's excellent Visual Studio IDE and debugger," argues Slashdot reader Agret , adding "there are many large projects in my city hiring .NET developers and being a strongly typed language the code quality is generally better than PHP."
But what's been your experience? And would a frustrated developer find more quality projects by ditching PHP?
However, it must depend to some extent on what your constraints are. If you support 32 PHP websites that are online and working (and not running on Intel architecture), migration might be a rather expensive waste of time.
Have you considered becoming a PHB?
Sent from my ASR33 using ASCII
Don't blame tools for the things that people do with them. You'll find the same problems wherever you go.
My little site.
Doesn't matter what language you use, bad developers are universal.
The thing is PHP 7.2 is actually pretty good, and 7.3 is looming.
My advice is start your own projects "the right way" (that's subjective), and start your own firm or agency and win with quality.
I'll be 100% honest, this is what I did. Working self employed over 4 years now. Business is doing well. Even have a couple of staff now.
There are a ton of languages that makes it easy to "start" something, they lack ... it is trapped into it, sunk cost
- strong typing
- strong debugging support
- reliable libraries
- reliable refactoring
- capability of scaling to large and distributed projects
A beginner starts using the language and
New languages are just reinventing the wheel, really, they are the result of people forgetting history.
The main difference is that a few keystrokes are saved with a resulting code that is impossible to understnd a week after you heve written it.
A pity that Microsoft bashing of Java (to then make Java clone c#) result in knee jerk reactions on the name.
If you are so frustrated with PHP you should switch, perhaps another language will fit you better, or at least it will be a good experience. Keep in mind that PHP doesn't have a monopoly on bad code, bad configuration or bad performance.After you switch to a different environment such as a corporate .net environment you may find you get different types of problems that you you may not even have realized existed when you used PHP. Either way, still good experience.
..it's easy to get stuff done in PHP. There are certainly languages which are 'better' in various respects than PHP, but it is not going to replace the fact that if you want a website done quickly then PHP is your tool of choice.
Also, it's cheaper to find PHP employees. That doesn't necessarily mean that you find great coders, but looking on the job boards, the level of salaries offered to PHP developers can be half to a third of salaries offered to developers experienced in (say) Node.js/ React. Not only that there a PHP developers on every street corner.
At the moment I'm amazingly doing PHP at what I call 'financial developer' rates. But these jobs are hard to come by
Donte Alistair Anderson Roberts - hi son!
Karma: Chameleon
If you can't find decent people to work with in PHP, then you're probably not good enough yourself. No matter what language you'll switch to, you'll find yourself down in the dregs.
The thing is, with PHP it's the blind leading the blind. Nobody has a clue, and starts with Rasmus (by his own admission). No skilled programmer would put up with PHP for any significant amount of time, life is too short for that aggravation. The corollary is, PHP crap never gets fixed because nobody with the skill is willing to go sewer diving to the extent that would be necessary.
When all you have is a hammer, every problem starts to look like a thumb.
If you came from PHP without any other language experience (except javascript). You cannot understand how PHP exclusively fit for Web development until you start do something with other language.
Other languages need for spesific frameworks, configurations, concepts for web projects. PHP was ready to run. When you try to learning other languages web stack you will be frustrated and return to PHP again. Other languages need extra steps to do simple things in web because of their nature.
Sure php much worse syntax and function names most other languages. However that was language quirks any professional can handle.
Problem is, php entry level is low and with abundant documents and training videos people easily put something on web and so they think they can handle big projects.
And without strict guidelines for project management, php can be lethal as a dodge viper on rainy day.
What you need is, find a battle hardened Project manager which uses Jira and other tools to agile development plus getting know automated testing.
After 6 months You will be fine with php any given sunday.
If you insist to change, you should look Google GO. not .NET it was for windows shops for who develop desktop applications. It wasn't just a language, you have to change your development style, development environment working environment etc.
Google GO was logical next step, It was easy (to comparing other static languages) and it was forced writing disciplined code practices by nature. It fast and you do not need change entire environment. Plus you get military grade arsenal (comparing to php) for complicated projects.
My 2 cents after 20 years of PHP Web development.
[My english is better than most other people's Turkish, so please point out mistakes politely. Thank you.]
I guess itâ(TM)s a âoetestâ by Microsoft to see reaction of masses. Surely PHP is PoS, but itâ(TM)s an Open Source PoS. Going to a vendor-locked ecosystem is shooting yourself in a foot. So: 1) Ditch? Well, just keep learning. There are proper languages around you know. 2) Submit to MS? Why? Learn C# if you must, but donâ(TM)t limit yourself. I still think itâ(TM)s MS-trolling.
PHP is the worst language ever.
Apart from all the alternatives.
No sig today...
And you should have done the same.
It's just full of bad programmers and the only applications people build in PHP are crappy websites.
Moved to a real programming language with a niche that values skill, and I easily multiplied my salary by 10.
I've been coding PHP, Java and more recently JS for a while. I feel like PHP has dropped the ball when it comes to async programming compared to the others. I think that's one of the reasons why facebook forked PHP (hacklang.org) to make it async friendly. ReactPHP is slow compared to node, and the fastest PHP async framework, Swoole by Tencent, is still limited in what it supports. I've been trying vert.x on Java which isn't bad and not minding koa. I feel like they need to do more to support projects like ReactPHP with native extensions like Swoole.
PHP has a lot of problems, but what they poster reported isn't near the top of them.
the 3.5 Meg with Gadgets isn't PHP it is Google. Also for a lot of other page size issues, the biggest problem is less with the language but with added Javascript Add ins such as Jquery or Angular.js this moves your few kilobyte page to megs very quickly.
In .NET I had aspx pages that seem to place a meg of session data onto the page, which I normally disable because I don't program websites with point and click, and I would rather have more more control when the screen refreshes or just does an AJAX cal and DOM the results back in.
I have been doing Web Application Development (I don't do web sites) from the beginning I know what is happening in general on all sides of computers the clients and the servers.
A particular web language sometime can help sometimes make particular tasks which are annoying much easier. But they cant stop you from making a crap Web Application, and they all have a feature where people may misuse or abuse to create utter garbage.
The posters experience probably has PHP Developers fresh out of college bight eyed and ambitious, looking to change the world with Open Source Technology however lacking the experience to know how to debug (I still have to show recent college grads on how to use the programming debugger, and they are always worried because for some reason that it isn't pure enough for them, or cheating.. For those college professors out there why arn't you showing these kids normal debugging software that has been around for generations!) and also they are often happy when it works, they don't know when to go back to make it better, or they also don't know when to call it good enough and continue on.
The posters experience with .NET developers are probably with professions who have been doing it for a few years, they have families and their goals to change the world isn't going to be their unique take on how to format that textbox. They have more years experience and learned from their younger years. They know when to dig and optimize, and when good enough is good enough. They uses the tools in .NET (Or in PHP or whatever freaking language they are either told to use or what is best suited for the project) more carefully and more often. They know each tool is a double edge sward while making one job quicker and easier it may have a side effect that you need to mitigate, work around, or decide that it isn't worth it. Now I normally don't code sites with point and click programming, because it really bloats up the Application, that doesn't mean I never do it. Sometimes that method would save weeks off my development cycle. And bloat isn't a big issue for the project.
Experience is more important then the language.
If something is so important that you feel the need to post it on the internet... It probably isn't that important.
I don't think the problem isn't PHP or not,
but "Web Sites"...
If you make websites you deal with people who wants websites,
And everybody knows how websites are done, right?
This attitude drives away any "good" developers.
So you're stuck with the one you can't or won't or just don't care...
Not all developers in this area , but the majority.
If you want to write good software you need project and customers who understand what "good" means.
The language is secondary,
Your challenge is finding these "good" projects.
PS:
(and perhaps saying "i dont do php" shows the right attitude... just saying...)
It's also pretty rude to fire an entire team and replace them with offshore monkeys, but it happens all the time. This is just the reflection of that - his obligation ends at the last paycheck.
I can't comment on the specifics from a technical POV because I don't know the details - and neither do you. As for the personal attack, he might have got cancer and decided to use his remaining time travelling for all we know. Even if he was just jumping ship for a better offer, why is that wrong?
Confucius say, "Find worm in apple - bad. Find half a worm - worse."
This is actually one of the things I was thinking / considering.
Not sure yet if I'll go that path, but your feedback resonates.
Thanks for your thoughts!
We suffer more in our imagination than in reality. - Seneca
"I think .NET is a much cleaner language to work in with Microsoft's excellent Visual Studio IDE and debugger," argues Slashdot reader Agret , adding "there are many large projects in my city hiring .NET developers and being a strongly typed language the code quality is generally better than PHP."
I wonder what Agret's thoughts on C# are?
Ok, I will not rag on .Net just now, but I'm definitely not moving to .Net should I leave PHP behind. So you have a point there.
We suffer more in our imagination than in reality. - Seneca
It sounds like the problem you’re highlighting is HOW people are introduced to programming, in early PHP examples, rather that what a language’s expression space permits theoretically.
It’s like learning to draw. If the first exercises are, draw an imaginary forest, people don’t learn to look. If the first exercise is, draw a portrait, it forces you to change your thinking right from the outset, because it will not work unless you focus on learning how to observe shapes.
Mixing PHP into HTML is satanic. ;-) And anyone who is taught to start that way, is a lost soul. So maybe there is a book out there called Architecting Functional PHP Patterns... ?
Or maybe not?
Yes, a great deal of PHP code in the wild seems unruly. However, this is not due to PHP per-se. Choosing a solid framework (such as codeigniter or cakePHP), following its conventions, and practicing good team dynamics makes all the difference. I have been coding since 1984 in a variety of languages and, although PHP's verbosity annoys me (requires too much finger twisting on the keyboard), I have never seen a more generally productive language. You can easily build a lot, fast. The discipline to make maintainable code is worth the effort that you need anyway, even if coding in Python.
Here are the reasons code becomes unruly:
(1) undisciplined and/or weakly experienced coders
(2) not clear design pattern (usually goes with #1)
(3) well experienced coder's tendency to over-engineer
The worst of these is #3 and it's very common amongst head-strong developers who are knowledgeable.
There is a higher-order thread running through this argument that has to do with good programming practices regardless of language. Modular code and UI components are Good Ideas, for example. Containers are a Good Idea. Git is a Very Good Idea. Typing is a Good Idea if you generate code. Templating is a Good Idea. Observer Pattern is a Good Idea. Eventing is a Good Idea.
What I do is listen to our industry, study their good ideas, and incorporate them in my next project, fitting them to the language and framework the customer is using. Language is primarily a *business* decision, it has to do with what kinds of IT resources the company is willing to commit to.
That shouldn't stop good development. As John Lennon famously said, "I'm an artist. Give me a tuba and I can get you something out of it."
Now go code. Make beautiful, good code with whatever tools they give you. Be the artist.
"We receive as friendly that which agrees with, we resist with dislike that which opposes us" - Faraday
Moving to .net won't make you any happier, because strong typing does not make a better code base. Better programmers make better code base. And neither PHP nor .net require you in any way to be a good programmer. Both come with sufficiently plentiful training wheels that both of them attract people who have no idea what they're doing and rely mostly on cargo cult programming.
But this is how programming is these days. Yes, you still have a few good (and very expensive) people who know what they're doing and who actually understand the implications of using this function (or API call) instead of that one, but for every programmer who does know that, you have at least a dozen who copy/paste most of their code from various online sources after googling the problem du jour. This is an universal problem and not one you can solve by switching the programming language.
If you want to solve that problem, you have to switch the user base.
We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
I was strictly a .NET programmer from, jeez, 1.0 up to almost v3. Loved the IDE, code base felt "bigger" than it needed to be for projects. My main issue was that the application on the server just dies a lot. And this wasnt just 1 app, at one company, my experience across multiple companies, multiple setups, it just seemed the the application would crash for no reason and need completely restarted pretty regularly.
.NET/IIS might be better now, but that was my experience.
Been on PHP/LAMP for several years now and that bastard never so much as went down once.
//TODO: Insert catchy phrase
New coders look at crap PHP and think "I can do that!"
Experienced coders look at crap PHP and think "That's crap PHP."
Old coders look at crap PHP and think "Job security."
Red to red, black to black. Switch it on, but stand well back.
As a developer who did 6 years of Java, 4 years of C# and 5 years of PHP for a living, PHP is not a good language for long term maintainability in a team. So, if you are alone on the project, you know perfectly your way around the language quirks, know how to use composer properly and have no need for scalability, then PHP is probably good enough for you. In any other case, do not use PHP.
PHP is a bad language for teams with various levels of knowledge of the language, who do not pair-program or when scalability (connection pooling issues mostly, and not only DB connections) matters, of if you want to use microservices inside of a PHP script (there is a circle in PHP hell for that).
In a nutshell, PHP is a bad language to have legacy code in, and not easily scalable. It is quirky, though not unmanageably quirky with the right tools, but once you ignore warnings, do not use proper code quality tools (sonarqube and such), you are definitely fucked with PHP. And these days, I am maintaining several of those nightmare no-framework, reinvent-the-wheel, warnings everywhere and no composer and custom classloading PHP application.
By the way, beware of C# in a team. C# is a huge and complex language. Just like C++, you must agree on a subset of a language, for consistency sake. Once you got your subset, you are good to go.
Stupidity is the root of all evil.
There's little to no difference between python and php that isn't purely syntactical.
And there are places where syntax makes all the difference, such as list comprehensions (and the generator expressions that power them).
all the criticisms against php are equally valid against python.
I've found a few, which I'll quote here for convenience:
[1] From March 2005 through September 2013, cURL could not follow redirects with open_basedir enabled because of a heavy-handed security fix.
I once got hired to fix a PHP-based website that had been done by a couple of fly by nighters. It was a fucking nightmare. Because they were lazy and/or stupid, they had enabled every bad directive from the bad old days. They didn't even use functions, it looked more like BASIC spaghetti code. In the end I refused to do any more work until the contract was rewritten so that I was billing out time. At the end of the day I essentially threw out what these idiots had written and rewrote the whole thing from the ground up. But I vowed after that that I would never take on a job where I had to fix someone else's spaghetti code. Hire me to rewrite, that's fine, but not to repair.
The world's burning. Moped Jesus spotted on I50. Details at 11.
It breaks down to PHP being much less capable than ASP.NET in its capabilities, though I admit it's been a while since I've used PHP, some of these limitations are built into the basic design of PHP so I'm not sure how they could have improved those aspects since then.
ASP.NET and ASP.NET Core have control of pretty much the entire web server stack (to a point). So you can do things like declare REST APIs and map them to single functions, whereas it is much harder to do that in PHP because first the web server needs to map a request to your PHP script file before you even get control in the first place, so you need to use Apache mod_rewrite or whatever (as opposed to a single line of ASP.NET code embedded with your REST API function.
I think that's really the biggest thing. PHP code starts and ends at the PHP script file and all code is run in the context of a HTTP request. There's no built-in way to do background processing outside of that, and you are writing a collection of scripts, not a full application. In ASP.NET you are writing an APPLICATION, and you get as much control over requests into your application URLs as you need. You can filter requests, add middleware, and your app doesn't even serve static files from disk unless you tell it to.
PHP has also had growing pains, starting out with no OOP support but having such things added eventually and having their APIs eventually converted over to use OOP (I stopped using it before this point so I am not sure how good it is). Also some bad security decisions that had to be corrected have led to things like mysql_escape and mysql_real_escape functions. Meanwhile in .NET you just use SQL parameters and you're good from a security standpoint. It has been awhile so I would hope PHP has SQL parameters now. I can't speak to the current state of PHP from a security standpoint but they've had a rocky journey for sure.
Also as a side note, .NET has EF/EF Core, which is amazing. I fell in love with it. Use any DB you want. Write classes that represent objects. And then EF/EF Core generates DB structures and queries for you; you don't have to deal with any of that. Change the object structure? DBs will be migrated to the new structure. It's pretty much magic. With PHP you're stuck picking a specific database and manually writing queries. If you want objects to represent your records (a database abstraction layer of some sort is a good idea for security reasons) you have to build all that by hand.
The thing is, with PHP it's the blind leading the blind. Nobody has a clue, and starts with Rasmus (by his own admission). No skilled programmer would put up with PHP for any significant amount of time, life is too short for that aggravation.
That is absolute nonsense. Take a look at the Symfony framework. This is a well thought out, well structured, well documented, properly supported, actively developed, stable framework aimed at longevity and used with success in many, many commercial products.
There are also tons of well structured PHP SDKs which are great to use.
With regard to the language, it has made significant progress as compared to for instance Python. Developing in PHP 7.0 or higher in an OOP fashion, creating nice clean, testable and robust code is easy and painless. Doing that in Python is dreadful with the Python2 / Python3 split, combined with an opaque code inclusion scheme and Frankenstein OOP implementation.
PHP used to be dreadful as well and a framework such as Wordpress reflects that. It is an abomination, from a clean, modular OOP coding perspective. Drupal has made changes to be more properly OOP, but still doesn't come close to Symfony.
The question for a developer faced with PHP is thus: what environment am I going to be working in? Archaic spaghetti code or a modern well structured OOP project? Yes, there are tons of very shitty PHP environments out there, but also tons of great ones as well. In addition to that, if time is available to refactor that archaic spaghetti code, it is as easy as in any language to change it into usable maintainable modular OOP code.