Building better PHP programmers, part 2


I have no "findings", no "conclusions", but I have some thoughts on my continuing goal to help bad/nominal PHP programmers become better PHP programmers.

The first question I asked is "Is there really a shortage of good PHP developers?"  While I didn't get a specific answer the general jist of it is that yes, there is a problem with finding good PHP developers.  Now, some of that may that the people responding ARE the above-average PHP developers and so there can often frustrations in figuring out how to work with developers who don't yet have the chops that they do.

A lot of people also didn't like my "what are 6 of the 10 PHP variable types" question.  I make no apologies for it.  Any developer who has spent any amount of time programming in PHP will have had exposure to them.  ANY PHP developer should be able to get at least 4.  If you've never realized that there's a reason to use === then, no, I wouldn't hire you.  For someone who is thinking through what their code looks like I would think you could figure out at least two more.  And if someone calls me on the error and gives me the correct number of variable types, then I can be reasonably certain that they know their stuff.  But, like most things, it's A qualifier, not THE qualifier.  If they send me a case of Chimay Bleue I might overlook it.

I also had other discussions from people who don't think that programmer's should have to have a certain level of memorization because you can always look it up.  Sorry, but I have to disagree with those people.  If you cannot tell me, offhand, what a callback function looks like then you probably don't have enough experience.  If you can't tell me what PDO is used for then you probably don't have enough experience.  For various levels of developer maturity there MUST be some things that you are required to know offhand.

One of the things I've also found a little interesting is that there is some resistence to standards.  The argument goes; developers get better by different means and so having something set in stone to evaluate them is difficult, nigh impossible, to do.  Perhaps, but I go back to other industries.  They have been doing it for years.  Yes, it WILL be imperfect.  No doubt.  Also, nobody will meet them perfectly.  But if managers, recruiters and new programmers don't know what is required how can they ever become better other than by trial and error?  The goal here is to decrease the "error".  Or maybe people are just argumentative.  I dunno.

That said, there were a few suggestions that were good which I will take into consideration.  I have a little too much to do this short week for me to really get into it.  So, this, I guess, is a blog post without a purpose.

Getting good PHP programmers


One of the interesting conversations I had during Zendcon was while talking to a recruiter.  She asked what questions she could ask to help guage how strong a PHP developer is.  The best one I could come up with was "name 6 of the 10 variable types in PHP".  I've had the pleasure of being able to interview several people for working at Zend and that is usually one of the first questions I ask and I can usually get a good feel for how long the conversation will be after that.  It's an esoteric question but by asking it I can guage a) how well that person knows PHP, and b) how easy it will be for me to work with them.  If they know the answer (and correct it) they know their PHP.  If they don't know the answer but get flustered or angered by it, then they will probably be harder to work with.

But the truth is that most of the people I've interviewed, and who have eventually worked with me, I've recommended after simply talking with them without a script.  I've interviewed a bunch of people for Zend Services and I think that the best interviews were the ones where we just talked tech.  The times when I was going off of a script was usually when I got the feeling that they wouldn't be a good fit.  Especially if they had attitude issues.  They would be going out in front of customers and if I thought they would have attitude problems I would start pounding them with questions that they probably didn't know and see what their responses would be.  They could answer correct or incorrect but what I was looking for was their reaction.  More often than not it was quite easy to pick out the people that I would not put in front of customers.  In fact, I would take someone who got more questions wrong, but could keep from getting frustrated over someone who would get them right but act incredulous.  I was interviewing one person one time who would be working as my counterpart in Services who got kind of upset with me and said "I don't need to know those things to do this job."  That conversation didn't last much longer than that.  Not because he didn't know, but because he lost his cool.

But, I'm getting a little off-topic, mostly because I like reminicing over some of the more colorful interviews.  That is what brings me to the point of this blog posting.  I can interview for certain (but by no means all) PHP positions because I know a fair about PHP and I believe that being smart but being an asshole does not make you a good PHPer.  But not everyone who interviews knows that.  And not only that, it is getting difficult to find good PHP developers.  A lot of the good ones are being taken up by top companies, but even they are having trouble finding all the good developers they need.

The point

Because of that, I would like to see if we couldn't (pseudo) standardize on deciding what makes a good PHP developer.  In other words, if someone asks "what does a good PHP developer look like" we could give a concise answer.  Jim Plush actually blogged about this a few years ago and I think that what he said there was quite accurate.

But it doesn't end there.  Knowing what makes a good PHP developer is not enough.  In order for PHP to succeed we need to raise the competance of all professional PHP developers.  And when I say "make PHP succeed" I'm not talking about the simple number of domain names where PHP is run on.  What I mean is increasing the quality of PHP developers to the point where companies who run PHP-based applications are able to fulfill their need for good PHP developers.  What I also want to do is get a feeling not only for what good PHP developers look like but also what they can do, specifically, to increase their value.  Being a ZCE is one example, but the ZCE exam can only do/tell so much.

For example, if someone should know XHTML, WHAT should they know, WHERE can they learn it properly and HOW will they know when they know enough.  We're real good at saying what, in general, developers should know (e.g. Unit Testing), but we're not so good at being specific.

For the record, I have my idea of what should be done, but I'm one person with one point of view.  What is your point of view?

Specifically (since we're being specific)

  1. Is there really a shortage of good PHP developers?
  2. Is there an interest in some level of semi-official developer standards beyond being a ZCE/ZFCE?
  3. What are the significant topic areas that PHP developers should be reasonably expected to know well?
  4. Should these questions be broken down by discipline?  (e.g. backend developers, web page designers, performance gurus)

If you have answers/thoughts concerning these questions you can either post them in the comments or email me at kevin at zend . com.