I've just interviewed probably my 200th php/web candidate during the past three years that I've been involved with staffing. I've come up with some criteria that I look for to get a real "senior" level developer position filled. I'd say 98% of people don't seem to meet even half the criteria. How many do you meet?

Without further delay, here they are:

PHP5 vs PHP4
You should at least three major features that separate PHP5 from PHP4

Networks
You should be able to do some basic socket programming or at least understand how you would connect to other machines

OOP
You should have a deep understanding of OOP and be able to answer simple questions like how private and protected methods differ. You should understand the following concepts(not really critical you use all of them but at least know why you would need them)
[list]
* interfaces
* constructors
* private, public, protected
* inheritance
* polymorphism
* static methods
[/list]

Database
You should know what a normalized database is, you should understand primary and foreign keys,

Design Patterns
You shouldn't say "huh?" when I mention design patterns. Again, not critical you use that many, but important you understand why they're helpful and know at least a couple.

Source Control
You should be well versed in at least one major source control system (ZIP FILES IN TEMP DIRECTORIES DON'T COUNT!). bonus points for being able to name at least one reason cvs is a pain in the ass.

Unit Testing
You should understand what unit testing is, and why it's important (bonus points for test driven design, knowing how to unit test javascript, or how to use selenium).

Part of the Community
I should be able to find all sorts of good things on google that you're doing with php or web technologies, It generally is a red flag when I google you and nothing comes up(bonus points for having a project of your own or contributing to one).

Javascript Skills
You should know the methods use to manipulate the DOM (appendChild, removeChild, nextSibling, etc...), you should know how to create your own classes in JS (FORM VALIDATION IS 1999), bonus points for being able to show how to make a private variable in javascript.

CSS Skills
You should know the box model inside and out, understand css selectors and how to use inheritance

Passion for Improvement
I want you love what you do and not be looking for a bare minimum, what's the least I can do to get out of here at 5 job. You should be looking to build your skill sets and become more valuable.


Those are some of the minimum things I'd look at for a senior developer. Sadly, most seem content to be the bare minimum developer, which leads to bad code and bad teams. I see it here all the time. You get great developers paired with someone who likes to sleep at their desks from 9-10am(don't laugh, I have pictures of people here sleeping in their cubes). It brings the whole level of the team down. People start checking in code that breaks the build at 4:59pm and leave at 5:00pm. Luckily, our web team here is strong and everyone gets along but those c guys.. man I'll tell ya!

Ready for More?

Follow Me @jimplush