What separates a professional PHP web developer from a scripter?

March 16, 2007

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)

    * interfaces
    * constructors
    * private, public, protected
    * inheritance
    * polymorphism
    * static methods


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!



Comments

RSS feed for comments on this post.

  1. Sean Cannon says:
    August 4, 2007 @ 16:09 — Reply

    I've been developing PHP sites for 9 years now, and honestly I've only had a few instances where I've needed to incorporate OOP into a website. Maybe that makes me a bad developer, but I think there's a predisposition some people have that OOP is by default better than procedural in some way, and I disagree. PHP is written in C not C++, so it's procedural by nature. Yes PHP5 has a full-blown object model, but I was coding sites in PHP3/4 for years without ever thinking to myself "gosh when's PHP going to be like Java?". Procedural PHP may have some code redundancy but at the same time it's much less resource-intensive, and it meets my needs for 9/10 client projects. Don't get me wrong, I have a game I'm working on in OOP PHP + Ajax, and for that purpose, it's quite handy. I'm also not so big into design patterns (maybe I don't fully see the benefit). I'm the kind of person who likes to see what I can do with my own code and figure things out for myself rather than using other people's "tried-and-true" templates. Again maybe that makes me a bad developer but it sure makes coding PHP that much more fun, and gets my brain juices flowing that much faster. I do agree with most of the other items on your list. Some of the people are arguing against CSS, and to an extent I understand their point - a PHP developer should never be required to debug front-end/client-side issues such as JS or CSS, but at the same time, having those skills would increase overall productivity by eliminating a potential bottleneck. Good stuff Jim - I just found your site the other day when I read your PHP sockets tutorial (which, by the way was a huge tease since 80% of the tutorial is "coming soon"), and I'm bookmarking this blog right after this post. --S--

Leave a Comment

Line and paragraph breaks automatic, HTML allowed: <a href="" title="" rel=""> <abbr title=""> <acronym title=""> <b> <code> <em> <i> <strike> <strong>

Comments disabled due to spammers being losers that lead sad lives.