While working at EZYield, we’ve come across a shortage of qualified Enterprise Level PHP Developers. While that term might sound a bit nebulous, there’s really just a handful of things that separate the men from the boys in PHP. Honestly, those traits really aren’t even that hard to learn. They’re contradictory to the “rockstar” persona so commonly heralded by developers though; which is likely why there aren’t enough good developers around.
Basically, there’s 4 things that make a developer ready for the big leagues: design patterns, unit testing, versioning systems, and experience.
Design Patterns can’t be emphasized enough. Almost every situation a typical developer has encountered, someone else has already solved. While the solution was likely in a different language, the concepts are universal. If a candidate cannot answer questions about basic design patterns like Singleton and Factory, they’re ability to adequately handle the responsibilities of a large scale application is seriously in question.
Unit Testing is an equally critical skill for any developer to understand. 90% of developers I interview typically work alone on small projects. this scenario doesn’t reveal the necessity for unit testing. Imagine that you work with 50 other developers on a project that’s hundreds of thousands of lines (if not millions) of code that’s distributed across hundreds of servers over multiple continents. Your amazing class that handles some unique circumstance will be modified by someone else who didn’t know you’re awesome intentions. How will you ensure your code works as intended without automated testing? Unit testing ensures that the concepts that sparked the intent of some software are held for posterity
Versioning systems are another area of knowledge that are surprisingly deficient in PHP Developers. CVS, SVN, Perforce, Mercurial, and (preferably) Git are software packages that any software business relies on. Not knowing the concepts of distributed software versioning software is like not knowing how to push the brake pedal on your car. You might get pretty far without needing it, but eventually you’re going to get into a situation which will crush you.
Experience. Nothing substitutes this. The brilliant young developer can make an awesome idea for his own company. He cannot serve a large company with existing ideas any better than a mediocre developer that listens to what he’s told to do. Software development is still more of an art than a science. Actually, it might be better denoted as a trade. Experienced artisans are able to accomplish things that younger folks cannot.
To re-iterate the point. Know design patterns, know unit testing, know version control software, and keep doing it. If you’ve been developing for years and are short on some of these points, take the time to learn. These skills are paramount and no one skill makes up for another. They are all indispensable in separating junior developers from enterprise level developers.