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.

PHP has its problems but JavaScript, Ruby, Python, etc. all have problems too. Nothing is perfect.

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.

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.

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.

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.

This mans absolutely nothing. The web does not require PHP in any way, it is perfectly possible using and developing for the Web without any knowledge of PHP. It’s not like it’s some sort of fundamental technology like HTTP. It’s not even close to JS because client-side coding requires JavaScript in some way even if just as a compiler target but there is just nothing that would require you to know about PHP.

Also, WordPress ist just an application and there are plenty of alternatives for getting the issue at hand done without requiring WordPress.

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.

The difference between javascript and PHP, is if you’re writing for the web you literally cannot avoid javascript, you however can avoid PHP. I have learned and used PHP, It’s only good to learn because it shows you what terrible decisions can be made in language design. PHP was designed for personal homepages and for that problem it’s passable, but for any professional project you’d be burning money to choose PHP. There’s just no reason to work that hard, and that slowly. Secondly because the number of PHP programmers are dwindling you’ll be paying an arm and a leg to hire any new talent.

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.

Also, you can totally avoid JavaScript if you really want to. It’s probably stupid to do so, but you don’t have to, for example, write a single page application using JS. But I would think any developer worth her salt would do try her hand at writing a single page web application at some point using JS (either vanilla or with a framework.)

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.

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.”

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.

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.

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.

Seriously, you could literally roll your own language that would be better than PHP in less than 6 months.

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).

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.

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. :/

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.

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’

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.

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.

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.

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.

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).

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. =)

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.

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.

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.

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.