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.

21 comments
gamsoftwaresolutions7
gamsoftwaresolutions7

yes, here are collect nice content about php developer. it is very good and informative information sharing here. thank you for publish this.

Gareth
Gareth

I read you post a couple of weeks back and it has stuck with me and has been bouncing around my head, probably because it bothered me slightly.

I think the main point of my unease is the thought of how I would react to being asked by you to name 6 of the 10 variable types in PHP.

Not because I couldn't answer it, I would rattle off 6 easily, but then, I think it would immediately put me on the back foot, through self doubt. Interviews are extremely stressful especially for people who aren't doing them often.

While I understand the issues for employers (such as http://www.codinghorror.com/blog/2007/02/why-cant-programmers-program.html), employers also have to remember that not everyone they are interviewing is going to be a seasoned interviewee. http://www.joelonsoftware.com/items/2005/01/27.html, highlights that most good programmers aren't constantly seeking employment or even ,I would say, rating themselves daily to see how good they actually are, so being asked something like this, would immediately set me off on a spiral of self-doubt and I don't think the first thing to spring to my mind would be that that was a trick question. 10 variable types? surely someone working for zend knows more than me, what am I missing? This could then get in the way of answering as confidently, as I probably should to get the job. I always find that self-confidence goes out the window when the interview starts.

All, I guess, I'm saying is that for the first question it's a bit of a curve ball and I wouldn't like to face it, I think even being asked to name 6 of the 8 would sit a bit easier. Even asking to name all 8 would acheive more, surely. There are only 8 aren't there?

damu
damu

Good post. I have been using PHP for sometime but the post forced me to search some answers in google.

It took me a while to prove that i am human hahaha.

Michelangelo van Dam
Michelangelo van Dam

Interviewing is an art, no matter what job you're doing the interview for. For PHP, it might be a bit more complex since everyone 'can' do PHP, but isn't per default suited for the job.

You need either an engineer that you can teach PHP (works great), or you need a PHP junior that's overflowing with passion for the technology or as I call a true fanboi.

Talk to your local PHP user group, because they have a lot of these fanbois hanging around each meeting, but lack the personality (are just shy) to step up saying they want a job.

Cheers, and success with the hunt for PHP samurais ;-)

Gene Kelley
Gene Kelley

My opinion here is that like, in any other industry, what have you accomplished with whatever skills you may have? PHP is mearly a tool among many tools. More an more, the tools we use in crafting software needs to work an play nicely with many other software tools and components to actually accomplish some value to some other party. (Most likely those within the party that will be signing the checks.) Let the interviewee boast of their accomplishments and values they produced and then the next important part of finding the right developer: the interviewer/hiring person(s) needs to not be lazy and actually validate a few references. Skills are fine, but in the end, we are hiring someone to produce something of a value to us or our clients.

David
David

Wow, I feel kind of sheepish... My experience has only ever led me to deal with four basic types (integer, float, boolean and string) and two "compound" types (arrays and objects). I've seen some articles that call resources and NULL types, too. At any rate, that's only 8.

And when you factor in the fact that PHP's typing is so loose, you can make a variable contain whatever you want without any sort of explicit type casting. It's one thing that I simultaneously love and hate about the language.

Kevin
Kevin

Lars, yeah, I suck as a graphic designer :-)

Lars Gunther
Lars Gunther

OK, my "parser" was not really up to speed. In my defence it was 2:28 am where I live...

May I send a small CSS tip. In Firefox 4 the comment text does not fit in the box if my browser window is narrower than about 1650px.

Kevin
Kevin

Lars, parse my sentence carefully "If they know the answer (and correct it) they know their PHP." I think you might see what I'm getting at.

Lars Gunther
Lars Gunther

You got me thinking now. 10 value types... I could only think of 8, so I checked the manual, which mentions 8 (and 3 pseudo types for the manual). Perhaps lambda functions in PHP 5.3 is the 9th, but what is the 10th?

On a more serious note. This is my main contribution to the education of tomorrow's PHP programmers. You may want to check it out. All suggestions for improvements are appreciated. http://interact.webstandards.org/curriculum/serve-side-dev/server-side-scripting-1

Kevin
Kevin

Excellent. I just started writing up a second article when you posted the comment. I will go over it and learn from it. (Ain't blogging grand?)

Rob
Rob

Question (1) Vi or Emacs

If answer is vi, continue.
If answer is Emacs, say "Oh realllly" and continue.
If answer is what? stop the interview.
If answer is Notepad++, continue

...

foobar
foobar

@thinice:
a good programmer can only give you one point in the "Magic Triangle" (Quality-Costs-Time)
for more: search a good project lead (better two: technical and non-technical)!

GJ Bogaerts
GJ Bogaerts

The best developer I ever hired didn't know the first thing about PHP, but was an expert in Java, Struts, Swing and possessed all of the most important certifications in this field. He picked up the intricacies of PHP in less than a month and has consistently been the most valuable player in my team!

YoYo
YoYo

I think being a good developer is more important than being a good PHP developer. The IEEE CSDP certification goes a long way to showing someone has a grasp of fundamentals.

Andrew J. Baker
Andrew J. Baker

This is a good post posing a very important question for the PHP development community.

I'm a formally-trained software engineer currently employed developing n-tier ASP.NET solutions in C#. I use TDD, OOP, design patterns, UML and object-relational mappers.

Outside of work I design and develop Web apps using PHP, ZF, Doctrine, MySQL, Dojo, jQuery, etc. because that's what I'd really rather be using for Web development.

I believe that borrowing tools and techniques from programming languages and frameworks that are more widely favoured by the enterprise is crucial if PHP is to gain ground in the professional arena. Education and adoption of these approaches is the key requirement to lifting the bar.

I can't remember the source I'm afraid, but I once read that the distinction between a good programmer and a great programmer is that a good programmer knows what they know (and possibly even knows it back to front), however a truly great programmer knows what they know AND they know what they don't know; a great programmer is both accomplished and yet humble.

These are the traits of the PHP developers that I've had the most favourable programming experiences with and most have had an appreciation of other languages and platforms besides PHP and the Web.

thinice
thinice

The list from your link is pretty good, another thing to add is the ability to distinguish the difference between writing 'perfect code' and getting the damn thing done. Seems most programmers want to churn something poorly written/engineered quickly, or take forever to build an uber-oop solution. Show me the guy how knows and understand the -balance-!

foobar
foobar

you really know as many good programmers (not only php) who can talk to customers? or you simple define "good progammer" as someone who can sell refrigerators to Eskimos?

Pavel
Pavel

Very good idea!

I'm a student at the moment and have been working with PHP for a few years.

In everything that I learn I'm trying to find the best resources (websites, books, etc) that can teach me how to write quality code, good practices and so on.

One of the problems with the internet today is that there are too many resources. Thus I can find very old code (that works) but written very badly. This can be very discouraging at times.

So then the problem is not the access to the resources, but how often they get updated and their quality level.

If you want to measure quality you need a measurement unit.

In what you were saying above, it seems like you were looking for personality traits when interviewing. Which makes sense ... I feel that all the tech bits can be learned with appropriate effort and guidance. It's harder for someone though to gain respect and trust, be calm, etc etc.

It would be nice to have not only the section 'what makes a good PHPer' but also to include 'how to become a good PHPer'. I know that at the end of the day, it all depends with how much effort you put into learning programming (the topic in general) ...

Trackbacks

  1. [...] developer? Szerző: Tyrael – 2010/11/22 I’ve just read Kevin Schroeder’s post: http://www.eschrade.com/page/getting-good-programmers-4ce1bb94 and I wanted to post my reply about the definition of the “good developer”, but it [...]

Post Navigation

Web Analytics