This article is from 2010. I think in 2010 the backlash against PHP was in full force as everybody was riding the Rails wave. I think the “Ewww PHP” attitude was stupid then, but it’s even more stupid in 2016 where we have some perspective on what Rails (or Ruby in general) is best at vs. what PHP is best at vs. what Node is best at, and the fact that ultimately it’s down to developer preference to select the right tool for them for a given job.
We use PHP on my team because the applications we work with were written in PHP. If someone says “eww PHP” I wouldn’t even consider hiring them. It shows a serious lack of maturity.
“Hey, sewer rat may taste like pumpkin pie, but I’d never know ‘cause I wouldn’t eat the filthy motherfucker”
And PHP might be the greatest thing since sliced bread for solving your business problem, but I’ll never know because I refuse to subject myself to using such a bad API and toolset day in and day out.
Yeah this is exactly the crappy attitude that I was talking about.
Being so closed minded about PHP or anything else just makes you into a worse developer than you could be otherwise for no good reason.
This isn’t a binary though, it’s a matter of degree. Maybe PHP is better now, but historically PHP was a complete mess. So saying “nothing is perfect” is a useless statement. Nothing being perfect doesn’t mean everything is equal.
Why? Is there a particular conceptual framework PHP has that other languages don’t? Is there something about PHP I cannot learn in a week if I already know other imperative languages? What exactly is one missing out on by having no interest in learning PHP?
Well you’re missing out on learning Hebrew, and a window into the psychology of Rasmus Lerdorf. All kidding aside there was a day and age when PHP made sense for web development, and that time has come and gone. Anyone using it today is wasting money and time.
Is there something about PHP I cannot learn in a week if I already know other imperative languages?
Thinking you can master any language in a week shows a lot of hubris and/or ignorance.
Every language has things to offer. I don’t know what your current skillset is so I can’t tell you what you’d learn by working with PHP, or working with various applications or frameworks in PHP.
The reality is a lot of the web is in PHP, so by choosing to remain completely ignorant of it you’re choosing to be ignorant about a large portion of the web.
I’m not personally a fan of WordPress but it is the dominant web application at the moment, and it’s written in PHP. It’s only the most obvious example of how you’re keeping yourself (and nobody else) in the dark by choosing to stay ignorant.
I’m not here to convince you to pick up PHP specifically. If having this affectation of “I’m above PHP” is really important to you, then great. I am glad I will never have tow work with you.
Whoa, who said anything about “mastering” PHP? One isn’t going to master it off some casual inspection of it either. My point is that the basic tenets of PHP are pretty much the same across any imperative language, so there isn’t some fundamentally interesting aspect of PHP other than it’s own idiosyncrasies that make it worth learning. Similarly, the differences between Python and Ruby is not so severe that learning one “just cause” will impact one’s life considerably.
Also, WordPress ist just an application and there are plenty of alternatives for getting the issue at hand done without requiring WordPress.
Every language has things to offer.
Again, it’s not a binary. Some languages have a lot to offer; some have very little, and given limited time it makes sense to prioritize the better ones.
I’m not personally a fan of WordPress but it is the dominant web application at the moment, and it’s written in PHP.
It is; it’s also awful. It has a terrible security track record and an awful comment system (you have two tickboxes to configure what kind of reply notifications you want. No possible combination of those tickboxes will give you the obvious correct configuration that you actually want, that sensible comment systems (e.g. disqus) give you by default). There are much better alternatives available in other languages, so if WordPress is the best argument for PHP then I’m happy to stay away from it.
It depends what you’re doing on the web. If you’re a freelance developer making websites for SMB good luck avoiding PHP. WordPress is the dominant force out there.
You claim to know PHP but then you say that “It’s only good for personal home pages.” Why is that? How does that claim make any sense? I would actually argue the exact opposite. The only way to write good PHP code is to actually use the OOP aspects of it. PHP has tools to write solid, unit tested classes especially in 7.
Anyway this conversation is getting dull. I’m clearly not going to convince any of the willfully ignorant people in this thread so I’m gonna stop replying now. Good luck, I hope you grow out of your current mindset.
I’ll try and leave behind some of the salt. I am fairly certain that you are capable of writing a good large project in PHP, but I am equally certain that you could do much better with nearly any other language. While PHP does not scale well, is prone to errors in ways that no other language with type safety struggles with, and is slow with no benefit to usability. I concede that if you’re going to any project which is already written in PHP, you have no choice. I also concede for personal projects, it really doesn’t matter and if you enjoy PHP by all means keep using it. I am not trying to make you upset, but I am trying to prevent people from falling into the trap of thinking PHP is as good as it gets. Or the maintenance trap that they should start any larger project in PHP.
Would I work at any place that used any PHP? maybe.
Would I work at a place that mainly uses PHP? absolutely not.
If someone says “eww PHP” I wouldn’t even consider hiring them. It shows a serious lack of maturity.
If someone said “eww X” during an interview, that would be a serious red flag for me, which doesn’t have anything to do with PHP, it’s just not a very grown up reaction. I think if a candidate said that they really were having trouble getting past the PHP thing, I would take that seriously and try to convince them (if they were otherwise good). Or maybe look at making a non PHP initiative within the organization of growth was important.
This obsession with seeming grown up seems bizarre and foolish to me. Older workers and older companies seem to place a huge amount of value on it (even at the expense of actual productivity) and I just don’t get why. Does it make you happier?
Let me provide some context incase it’s unclear what I meant. And by “obsession” I’m not sure if you are characterizing my response as such or a general observation. But in the situation of a job interview, one of the dimensions I look for is a candidate acting in a respectful way relative to the situation. An interview is fairly formal and as such I expect thoughtful answers. I think saying “Ewww X” (unless somehow the context allows it) would be a red flag. The candidate, if hired, might be sensitive situations with a customer or talking to the CEO, etc, where it’s needed to act in a particular way. So that doesn’t mean if I work with someone I don’t expect some childish behaviour.
Come on, nobody just goes “EWW GROSS” at an interview. I’ve had the “Eww” reaction in an interview, but it sounded more like “Well, it ain’t my favorite tool, for a variety of reasons that I’d be happy to explain in another context; if that’s the tool you’re using, then I’ll use it too.”
Come on, nobody just goes “EWW GROSS” at an interview
You’d be surprised.
I don’t think you’d have to worry about hiring them, because they wouldn’t want to be hired if they didn’t like php.
Yeah, I’ve developed in PHP before, but prefer several other languages over it. If I had some job offers and one of the companies used PHP while another used Python, all other things being equal, I’d take the job working in Python.
I wouldn’t hire anyone who would not say ewww to PHP. Seriously, you could literally roll your own language that would be better than PHP in less than 6 months. Learning how to use Haskell so that you have a decent tooling to do so included.
Seriously, you could literally roll your own language that would be better than PHP in less than 6 months.
That is the attitude that creates the next PHP.
I disagree. That is that attitude where computer programmers learn to write compilers. Most people who try it usually end up being better programmers that no longer want to roll their own compiler. Unlike the PHP guys who refuse to either stop or learn how to do it better.
I wouldn’t hire anyone who would not say ewww to PHP.
If you aren’t joking, that’s a really unfortunate attitude to have. I personally don’t have any love for PHP, but I’d never discriminate a hire because they didn’t fall into line with my personal feelings on technology choice. I’ve built products in PHP before, and while the language and stdlib leaves a lot to be desired I didn’t hate it either. These days I work on large-scale graph processing systems for $dayjob and sling Rust/Haskell in my free time. But, by your criteria, I’d never have been hired.
PHP is the product of many man-years of efforts. It’s not even a diamond in the rough, but it’s crazy to think you could create a language with as much utility, stability, and performance as PHP in 6 months.
If there’s actually one thing I miss about PHP it’s keeping an editor open in one window, making a change, and refreshing the page to see the change. That feedback loop was unbeatable. Even now, my Java/Scala services usually take a restart to show a change (hot-reload has huge limits).
Try Clojurescript with Figwheel - you don’t reload the page at all, just write your changes and they’re automatically loaded in the browser.
It’s not a bad idea. I know Clojure has this tooling working considerably better than the rest of the JVM ecosystem at present.
you could literally roll your own language that would be better than PHP in less than 6 months.
This shows you are totally clueless. PHP has problems and a lot of bad design decisions but there’s just no way you could make something better from scratch in 6 months. That’s just delusional.
If you tried to rush and make a full language in that amount of time you’d probably make as many or worse mistakes than the PHP developers did.
Just how long do you think it takes to write an llvm backed lisp or ml?
PHP is not just a simple parser, it’s also a collection of a ton of libraries.
Just llvm alone buys you all the C interop you might desire; e.g., http://www.stephendiehl.com/llvm/#external-functions
I wager that a great majority of devs reading lobsters could create their own lisp or ML within 5-6 weeks of dedicated effort, and then spend 3 months finding and linking up libcurl, libmysql, etc., if libc wasn’t deemed good enough.
The big problem with the 6 month language would be that nobody else would be using it, so you wouldn’t have stack overflow. That’s the big benefit of php and node.js: the hundreds of millions of developer solutions you can copy-paste into your code and have at least a 45% chance it’ll work.
Just llvm alone buys you all the C interop you might desire; e.g.,
ABI is not interoperability, and parsing headers, hooking into GC, understanding and making sense of headers, macros, and so on is not trivial.
Yeah, honestly I’ve always thought that’s the selling point of the language. It binds against a couple hundred important C libraries and links them in by default, which means there’s no need for most PHP developers to worry about installing dependencies.
I wish that didn’t outweigh language-design praxis, but it’s a real advantage. :/
But libraries aren’t part of the core language. The argument isn’t about building the ecosystem and having the same tooling, it’s about the core language.
When one is arguing that people should stop using it, all these factors are relevant, however unfair it might feel.
Interpreted, dynamically typed language without a JIT compiler, with MPS as the GC and GMP for large numbers would take about 3 months. I would basically copy scheme semantics (first class functions, lexical scoping, left-to-right evaluation) and throw in Racket-like generics instead of OOP. Module system would roughly copy Python semantics.
Rest is stdlib, FastCGI, an alternative parser for jinja2-inspired templates and integration with database client libraries.
I am not saying that making it stack-less via CPS conversion, adding fast tail-call optimization, JIT backend, and a better GC would not make it over-multiple-years effort, but those are not features PHP fancies.
I am also not saying that I would recommend doing that. Why should I? I’d be basically re-writing something between Scheme, Python and Ruby with zero community support. I am just saying that PHP is an extremely primitive tool also done wrong and anyone not seeing that / not trying to use something better would be a bad hire for anything else than maintenance of an old PHP application we can’t just kill yet.
Also, after writing in anything at least a bit more advanced language and then returning to PHP where you feel like both your hands are cut off should leave at least some ewww. But as with most things, this is just my weird opinion.
It wasn’t my database, but I saw an application once, for a satellite tv provider, that dynamically created a db table (not row) for every single customer. So there were hundreds of thousands of tables in the app.
It feels like you would be able to read the same article, just replacing TDD with <some other best coding practice>
I would agree, but for the fact that TDD seems to have a much bigger effect on my quality & productivity than any other best practice.
Thanks for this – I shared with my team in the hopes that I will see more unit testing and less of the half-breed functional/unit/integration monstrosities that pass for tests in many Rails apps. That said – the post needs a bit of proofreading, there are a couple of spots where I had to puzzle out the author’s intent:
‘Consider a class writes a downloads an HTML’ => ‘Consider a class downloads an HTML’
‘sends the parse message URI’ => ‘sends the parse message to URI’
Not sure I agree that there are two default stacks. There is one default stack (what you get from “rails new”), and there is the “custom stack” (which is obviously different everywhere you go). The “service layer” he describes, in particular, is not part of a default stack because it’s going to be implemented totally differently by everyone.
I’ve used HAML/PostgreSQL/RSpec/Cucumber on all my projects for the past couple of years – it does feel like a default for me, with or without DCI/service layer/etc. There is definitely a big minority of folks like myself who have done the traditional Rails stack, felt the pain, and worked with/learned from others to come up with a suitable alternative. Steve raises some really good points about forcing these choices on others who haven’t experienced that pain firsthand, though.
I guess I don’t work on a lot of apps, I work on one really big one at work (erb, mysql, rspec, sass) and a personal project (erb, postgres, test::unit, sass). Any new projects that I begin I would definitely want to use erb/postgres/rspec/sass for.
At work we have some service layer, but I don’t really know if it’s “DCI”. I guess I need to learn more about what that’s all about.
This statement is true for extremely small values of ‘hiring’
Really, it is more like Gittip is recruiting volunteers in a somewhat more discriminating fashion than an open source project.
I like Gittip, and use it to tip a few people, but “hiring” has a lot of connotations, especially for people with dependent mouths to feed, which is what I think led to the hostility on HN and twitter.
Indeed, “hire” has a specific definition: to employ for wages. Big difference from volunteering in return for a listing on the about page.
English has homonyms. We also consider certain kinds of unwaged labour to be ‘hired’, at least colloquially. People paid solely in shares, dividends, or residuals, or people not paid at all (such as some apprenticeships and internships) can be considered ‘hired’. So, for an ‘open company’ it makes sense that ‘hiring’ means becoming a part of the core of the company, but does not mean being paid by the company.
Also, as an aside, there are other similar movements, like Venture Communism, which uniformly use the word ‘hire’ to mean something other than ‘to employ for wages’. So it is not as if this usage is uncommon or in some sense incorrect.
Happy New Year’s to you all as well.
I can’t seem to score more than 150 of the 350 possible points.
Ask each guy about all the topics, and then do something with the parcel’s contents.
Ah, I missed the other 3 things that were on his button.
I revisit this every couple of years or so. It never fails to amuse, in a sick way, since I’m usually dealing with someone else’s mess for the better part of my workdays.
Day job at Launchbit
Hobby time, I’m building a vertical search engine for the remote controlled hobby (planes, helicopters, etc). It started originally as a way to play with single-page JS apps and ElasticSearch, and has kinda morphed into a longer-term project.
When I’m not working on that, I’m building RC planes out of foam (flying wing and dihedral glider), wiring up video gear so I can fly them with goggles, and designing lightweight quad-rotor frames.
I’m currently on a mission to design a better quad-rotor frame. Most frames are either heavy and aluminum, or lightweight but carbon fiber. I’m playing around with various lightweight composite frames that aren’t carbon fiber, since that’s expensive and a pain to use. A lot of fun, I’m learning all kinds of composite and material science.
This is a hobby I’d love to get into – my son is 11 and he loves things that fly. I can see myself using your search engine a lot in the future.
Feel free to drop me a message any time if you have questions. It’s a lot of fun, and I’m sure kids would think it’s completely awesome (I would have loved it as a child). There are a lot of cheap, foam beginner planes that can handle a lot of abuse. I’ve lawn-darted mine on many, many occasions and it’s still doing fine (with some glue and tape).
Those two planes I linked too were scratch-built with foamboard from the Dollar Tree. The flying wing was probably $4 in foam and wooden dowel rods. Lots of info/tips here: http://www.rcgroups.com/forums/showthread.php?t=1587275
The “First Person View” video gear is pretty expensive and finicky to setup…but wow is it cool once you get everything working! Definitely not something I would give to kids though…few mistakes and you are out a lot of money once you smash into the ground. =)
I have a day job at New Relic, in my off hours I’m working on improving my Brazilian Jiu Jitsu and making some electronic music. I’ve also been working on www.livingbjj.com – although it has been dormant for a while, I’m going to be committing to it this week.
Just wanted to say that we recently started using New Relic and it’s an amazing product. It confirmed various performance problems I suspected, and also highlighted a few really odd ones that were totally unexpected.
Glad to hear it. I just started here a couple of months ago, and am still learning my way around the code, but it is nice to work on a product that people find useful.
Nice site @mattvanhorn!
Have you thought about adding some clubs that aren’t in the US?
I’ll take that as a feature request and get it in there ASAP.
How long have you been doing BJJ?
I started doing Muay Thai a month and a half ago and am probably going to transition to BJJ at a Gracie Barra facility at some point.
a little over 2 years now – got my blue belt last year, but I still suck. Trying to focus on fundamentals and getting my head in the right place to make progress. It’s a sport that can be rough on the ego, but that’s one of the reasons I love it – there’s such a good sense of accomplishment when something ‘clicks’ – a lot like programming.
what sorts of EDM? Do you have soundcloud page by chance?
I’m still at the point where my taste far surpasses my skill, and as such I am too embarrassed to put anything out there yet. I might upload a 10min DJ set or similar to youtube, but probably not much more than that for a while.
My tastes run towards drum & bass, house & dubstep – Calyx, Dillinja, Bassnectar, Datsik, Photek, but also a lot of stuff in other genres.
Is this what the Randroid OS is written in?
This seems like a good approach to the issue. I’m looking forward to giving it a whirl.
I wish more companies would learn about this and push their teams to meet these criteria. It would be so much easier to work on their apps. My personal projects usually meet all or most of these criteria, and it is not very difficult to do so.
I am continually amazed at what is lurking in the nooks and crannies of this language. I found at least a handful of techniques here with immediate usefulness. Thanks!