Follow-up to “Where did all the PHP programmers go?”

This is a quick follow-up to yesterday’s post – “Where did all the PHP programmers go?“.

First of all, let me take the moment and say “Wow!”.  Somebody submitted the post to Reddit and it made it to the front page and got an unbelievable amount of comments.  Almost 500, and still coming.  Thank you all.

Secondly, the comments on this blog are fixed finally.  Murphy’s Law in action – they got broken just before the wave came in and they got fixed shortly after.

Thirdly, I should clear up a few things.  My apologies for getting you guys confused.  I never asked any candidate to compare sorting algorithms, much less to implement them.  I asked to sort an array.  I was expecting one of those PHP function calls in return.  But I only got it a few times.  Many candidates didn’t know how to sort an array (apparently they use MySQL to sort an array).  A few suggested “bubble sort”.  Probably thinking that the tasks for testing sorting algorithms.  One even went as far as implementing a bubble sort in PHP.  With pen and paper.  This one was the toughest to decide about, by the way.

Fourthly, the correction.  The language is indeed called Ruby, not Ruby on Rails. I am aware of that.  I was just trying to catch a thought.  Thanks for pointing it out though.

Fifthly, explanation for the pen and paper.  Yes, I know that programmers are used to typing code.  I know that they are used to their tools and online references.  But.  This is an interview.  My time is limited and I have to make a decision.  If I give all the tools and references to my mother, she will be able to solve the problem I am giving in reasonable time.  She is not a PHP developer.  She has no experience with PHP.  But she has enough of common sense to do it.  If I take everything away – she won’t be able to do that.  But any semi-decent programmer will do.  Further on, I am not feeding the resulting paper into the machine.  The only parser that sees that code is the one embedded in my brain.  And I assure you it is very tolerant to minor syntax errors and missing parameters.  I want to see the process.  The approach. Some data structures and algorithms.  A bit of style in variable names, indentation, and empty lines, if I am lucky.  That’s all.

Sixthly, on the exercise itself.  I like to think that I am pretty flexible with answers.  For this particular exercise, a Perl programmer inside me thinks associative array is the best data structre.  (And yes, before you start bashing further, I know that associative arrays in PHP aren’t the same as hashes in Perl.)  I can accept an OOP solution just fine.  What I find hard to accept is a single dimensional array with hopping over a pre-defined number of fields per record.

Seventhly, this post, once it got to reddit and then furthermore to other news streams, generated more candidates and hints to where to find them, then all of my prevoius efforts.  Thanks to all of you who sent me resumes, links, and pointers.  My inbox is a bit overwhelmed right now, but I’ll reply to everyone over the next few days.

Thanks a lot to all of you.

Read 21 comments


  1. Kind of shocking to hear that people just… suck. Even though I’d still need google every now and then to look up some functions, no way buble sort is ever a way out!

    My opinion on the subject is that it’s about motivation. I’ve always been motivated about programming, that’s why you can see me at 3a.m. digging SugarCRM (because Leonid decided to post a blog entry about it. rrrrrr!). If the person isn’t motivated, he will never improve his skills by coding every now and then.


  2. Funny how a post like that can turn into a religious war pretty quickly. As somebody half-heartedly browsing the job market right now it’s interesting how much the questions that are asked of a candidate at an interview can say about the company doing the hiring. Personally I turned down a second interview at a company that botched the first by not asking the right kinds of questions to keep me interested. As much as they don’t want to hire an idiot I don’t want to work with others.


  3. Eric,

    when interviewing someone, I prefer to go from the ground up. Starting with simple questions gradually go more advanced. I believe it helps the candidate to remain calm and focused.

    Those candidates that are knowledgeable, can always “fast forward” me to the stuff they feel comfortable discussing. I don’t want to waste their time either.


  4. @Eric,

    I know EXACTLY what you are talking about…I really think to myself as to what the hell is the point to the second interview big waste of time and energy, why not get everything out of the way then and there.

    For a good instance I was interviewing for a company that urgently needed a programmer at this one place (key word urgently) , well what the deal was, is that I had to come in for a second interview “B.S.” and lol to meet with the SAME people not much anyone new at all. Basically my point is, is that multiple interviews are most of the time a waste of time, especially if you set down with the company in the interview for 1 1/2 hours(plus)…

    I total feel you on that one Eric… “Personally I turned down a second interview at a company that botched the first by not asking the right kinds of questions to keep me interested” -Eric


  5. As someone who knows little about PHP and having read your first and now second post with all the clarification do you think you could have poorly explained what you wanted in the interview as you did in your first post? They say if EVERYONE is wrong but you then maybe it’s just you…no offense at all…I respect you level of skill but I work with Java programmers every day who have a hard time explaining the something very basic and it takes a lot of time just to make sure we’re on the same page. Once we establish common ground and understand what we both are trying to say everything works much better.


  6. Pencil and paper are still ridiculous. Stop doing that. Most real programmers never write stuff down except for diagrams and notes, maybe. The real thinking is done at the computer.

    And seriously, your mother would take all day to figure out PHP. Why are you insulting programmers?

    I think that is your problem. You don’t respect development as a profession.

    And if your writing is as unclear as your interview communication, there’s a problem right there.

    Please. For the sake of yourself.


  7. Maybe php isn’t as natural as other languages which makes it much harder to focus on the actual problems.

    any Haskell programmer should be able to bang out something like this on paper without even blinking:

    import Data.List
    lul = [
    (“Alpheta, John”,”Male”,33),
    (“Bernard, Jane”,”Female”,44),
    (“Swashbuckle, Robert”,”Male”,55)
    ]

    main = mapM_ (\x -> putStrLn $ name x) $ sort $ filter (\x -> sex x == “Male”) lul
    where name (n,_,_) = n
    sex (_,s,_) = s


  8. The funniest part about this two part story is that I’m very confident I could take your interview and pass it with flying colors. Unfortunately, because I haven’t got a degree, and I’m younger than most developers (or at least I believe I am -- age 18), I’m stuck working at a part time minimum wage job. Amazing how that works, no? :) haha


  9. Alexander,

    I don’t mind the age (or gender, or race, for that matter). I also don’t mind a candidate not having a degree or being a “drop out”. Maybe because I remember how hard it was to get a job back when I was a student, even though I knew my stuff better than many seasoned professionals. And then again I am 3 courses short of a Bachelor Degree… and that has been so for six years. :)


  10. Seth,

    language could indeed be the problem in some cases. English is not my native language. And it’s not native language for most of the candidates that I saw (Cypriots, Bulgarian, Romanian, Russian, Ukrainian, etc).

    I tried to be as clear as I could, rephrasing questions and also having a few other people on the interview, sometimes translating questions. There were, I think, three candidates where we just couldn’t communicate at all. Obviously, there was no way for me to judge them, and there was no way for me to hire them (how would we communicate while working together?). With everyone else, I believe, the questions were pretty clear, and the answers I got back were clear to me.

  11. Pingback: Dove sono finiti tutti i programmatori PHP? : phpblog.it


  12. “This is an interview. My time is limited and I have to make a decision”

    That applies to the interviewees, as well. Writing code in an interview is *hard* -- the people who pass your “test” will be those who are good at doing that, not those who are good at software development. There will certainly be people in the intersection of the two sets, but small enough to make your search much harder. And you wonder why you are having trouble finding appropriate people?


  13. I’d really, really like to see what happens when you give your mother all of the tools and references let her work on your interview questions. No hints, no guidance, just the tools, references, and questions. In fact, it would be best if you were not in the same room as her for the experiment.

    Assuming that she is not already proficient in some other programming language, I suspect that you are completely wrong about what would happen.

    Programming is very difficult. Writing a hundred lines of bug free code is a challenge for even an expert. Maybe you have trouble finding qualified candidates because you exude disrespect for programmers.


  14. I must agree with Seth and sharkfish. Leonid you maybe know few programming languages, but you don’t know squat about human resource management.

    Yahoo’s interview contains questions and answers, and maybe one piece of code to write question, and I somehow don’t think you are interviewing for Yahoo.


  15. just a thought. if were an applicant, i would write some sort of “pseudo-code” mixed with functions in PHP in can remember :P

    i know i could never write down complex code without my usual editors and keyboard. but at least i would be showing the interview how would i do it.


  16. OP :

    All too easy to blame the tools, I’ve been using PHP for 12+ years and not because it, or I are bad useless or rubbish, but because it’s suitable and built for the jobs. Opposed to asking classical data structure or sort methods that are taken care of in other ways, try focusing on things that you’d actually do in the real world. Like building something like vBulletin (as II was part off) along with many other projects in it. Facebook seems to be doing OK.

    The array handling in PHP is simple, the language answers the original question easily.

    Though I’m with Eric DeLabar, the level of interviewing matches what is out there as well. I’ve turned down several places for trying to be all “too clever” or condescending in interviews.


  17. It’s actually quite easy to figure out why finding good PHP programmers became a pain.
    It’s for the same reason why you won’t find good Delphi programmers: market.

    This is always the same process: a “quick and dirty or RAD” language surfaces. It’s really good and modern, with it you may rise some good income!

    Shortly afterwards a wad of dummies jumps on its bandwagon and literally crashes any possible decent income the language / tool promised.
    Shortly after some guy decides the smartest thing on Earth is to stack a mammoth on the new language: let’s add all sort of Java-like features, let’s copy some exotic Python hardly used features while at it. Let’s slam some heavy patterns and whatever highly paid professional programmer material you’d toss in the cauldron.

    Result: the nimble, easy, quick language / RAD tool becomes an asylum of etherogeneous extensions that are iterated and ported on the shoulders of any new emergent language even if it’s completely going to betray its KISS / nimble principles.

    Now, you have a language that enticed employers to pay low wages “because it’s easy to learn” but now it became difficult to use and requires extensive training like an high wage fully fledged language.

    Final outcome: Indie / student programmers underselling their work for $30 a month despite the learning curve is now comparable to “first world” developer grade and wages.
    The quality, professional developers at this time had jumped the ship since months or years, all you have got are those whose time is endless and free.

Leave a Reply