I will be hiring a php guru to help us architect a highly scalable web
site/web application; the problem is I am coming from Microsoft .NET
world and not too much familiar with the platform.
What kinds of questions would you advice to ask the person on the
interview to see if he/she is:
1. Proficient with php
2. Proficient with MySQL (development, maybe some administration)
3. Has web app architecture skills and knows how to build scalable
codebase
Your ideas are highly appreciated!
Thank you,
Andrey
How do you handle .NET hires? I would think this would be similar.
Ask him/her to send you any utility that they have written that uses
PHP and MySQL and is OO.
I'm sure there are tons of php developers that have never gotten
beyond procedural code, throw them out. Look for someone that has a good
grasp on OO and uses it. Look to see how the code is documented. What
you are looking for is code that can be altered without breaking aps
that already use that. I'm sure the same applies to .NET. Programming
languages and administration skills can be picked up quickly,
programming style comes with experience.
Then you can tell him about your project and ask how he would go about
it. After a while a good programmer has done something similar and knows
the questions to ask and the routes to take. The questions he asks are
as important as the ones you ask. And remember, you are going to be
working with them, so you'll need to see how you interact.
Of course, if you have no real programming experience yourself, you
are pretty much up the creek. I don't think you are going to get a good
programmer with a quiz.
Just my 2 cents...
Jeff
World + dog can claim to be a PHP programmer. PHP is easy - the hard
bit is knowing how to apply it effectively. Really you should you be
trying to recruit a **programmer** who happens to know a bit about PHP
rather than a PHP programmer.
I would be very wary of any suggestions you get here - otherwise it
will turn into a tick-the-box interview where you're not in a position
to understand what the person is telling you but just listening out
for some magic words in the response. Think about getting a PHP
consultant in to help with the capability part of the interviewing
process.
With that in mind....
I'd ask them what experience they have working as part of a team of
developers (and expecting an answer that includes mention of some sort
of versioning system).
How they would go about isolating a performance problem on a website
(expecting mention of webserver and database logs)
How they would ensure a script which performs well in test will scale
well in live (mention of parallelization / mutexes / locking, using
EXPLAIN in SQL).
A good understanding of how to use content caching: e.g. how to go
about implementing good caching with user selectable themes (answer
should mention pushing theme data into CSS, and/or using VARIES
headers, reverse proxying).
Then you can start answering the PHP specific questions.
But I do take issue with some of Michael's questions - safe mode and
register_globals? No.
Perhaps ask them about porting an application from PHP4 to PHP5 (where
the answer should mention register_globals - since its probably old
code, also the change from pass by val to pass by ref for objects).
What problems would they foresee with having a mysql database
replicated across multiple machines using auto-generated insert_ids
(ans: you can't consolidate to the same schema unless you seed the
insert ids to avoid collisions).
C.
The difference is not really that big in approach. If you really know a
.NET language, you know that the language itself is easy. The main
skills are in good Object Oriented knowledge and in knowledge of the
(huge) library.
There is one main difference though: .NET tends to hide specific
knowledge from the programmer, whereas PHP expects you to know what you
are doing. There is no sales argument that PHP is "easy to click an
application together".
So, for instance, ask what the difference in approach is between a PC
application and a web application in the object model.
Specifically, ask him about web safety. Let him name a few injection
attacks and what to do about them. Alas, the web has lost its innocence...
> What kinds of questions would you advice to ask the person on the
> interview to see if he/she is:
> 1. Proficient with php
> 2. Proficient with MySQL (development, maybe some administration)
Both are hard. I have worked as an ASP .NET programmer before I ran back
screaming to PHP, so I can compare SQL server and MySQL, and ASP .NET
and PHP. But for someone who never had anything to do with .NET, this
may be hard.
But I think it is good to ask him about PHP6. If he is a real guru, he
must have looked into it.
> 3. Has web app architecture skills and knows how to build scalable
> codebase
This is one that you should be able to answer yourself. Just ask him
about web safety, modular programming, source code control, unit tests,
test driven design, agile programming methods, etc.
Good luck,
--
Willem Bogaerts
Application smith
Kratz B.V.
http://www.kratz.nl/