I have no "findings", no "conclusions", but I have some thoughts on my continuing goal to help bad/nominal PHP programmers become better PHP programmers.
The first question I asked is "Is there really a shortage of good PHP developers?" While I didn't get a specific answer the general jist of it is that yes, there is a problem with finding good PHP developers. Now, some of that may that the people responding ARE the above-average PHP developers and so there can often frustrations in figuring out how to work with developers who don't yet have the chops that they do.
A lot of people also didn't like my "what are 6 of the 10 PHP variable types" question. I make no apologies for it. Any developer who has spent any amount of time programming in PHP will have had exposure to them. ANY PHP developer should be able to get at least 4. If you've never realized that there's a reason to use === then, no, I wouldn't hire you. For someone who is thinking through what their code looks like I would think you could figure out at least two more. And if someone calls me on the error and gives me the correct number of variable types, then I can be reasonably certain that they know their stuff. But, like most things, it's A qualifier, not THE qualifier. If they send me a case of Chimay Bleue I might overlook it.
I also had other discussions from people who don't think that programmer's should have to have a certain level of memorization because you can always look it up. Sorry, but I have to disagree with those people. If you cannot tell me, offhand, what a callback function looks like then you probably don't have enough experience. If you can't tell me what PDO is used for then you probably don't have enough experience. For various levels of developer maturity there MUST be some things that you are required to know offhand.
One of the things I've also found a little interesting is that there is some resistence to standards. The argument goes; developers get better by different means and so having something set in stone to evaluate them is difficult, nigh impossible, to do. Perhaps, but I go back to other industries. They have been doing it for years. Yes, it WILL be imperfect. No doubt. Also, nobody will meet them perfectly. But if managers, recruiters and new programmers don't know what is required how can they ever become better other than by trial and error? The goal here is to decrease the "error". Or maybe people are just argumentative. I dunno.
That said, there were a few suggestions that were good which I will take into consideration. I have a little too much to do this short week for me to really get into it. So, this, I guess, is a blog post without a purpose.
Comments
Marcus Dalgren
I really like your comment about standards. As a self taught PHP Developer I spent (and still spend) alot of times trying to find out good or standardized ways of doing things and this can often be pretty hard to find.
The PHP standards group caused alot of controversy when they started up because of this resistance to standards but I really think that this is hurting us. Even if we do have standards it doesn’t mean that programmers have to follow them but at least we have something to refer to.
Also alot of the PHP being taught from tutorial sites is bad PHP. Many preface these kinds of articles with a blurb saying that this isn’t how they would’ve done it but I bet alot of this gets copied anyway and sent out into the wild. I think many people start out from these kinds of sites and might not know how to do it the good way at all.
Kevin
What is done with developers in other languages that are more standardized, like Java or C#?
Kevin Schroeder
There are language standards, defined coding standards, API standards, multiple levels of certifications and vendor supplied training, which is, itself, standardized. The PHP ecosystem includes some of those but there is significantly more standardization in other languages.
That said, I think that because we don’t have as many existing standards we have the opportunity to look at what was done in those industries and see what was done right and what was done wrong. I’m a big fan of learning from other people’s mistakes. Also, because PHP is, for all intents and purposes, an HTTP-based language, the number of permutations of standardizations does not have to be nearly as high as with other languages. But we need to take into account levels of strength.
For example, Unit Testing. What should a Jr. developer know. What should a Sr. developer know?
Charlie
I recruit for PHP Developers on a regular basis. For starters, I think that employers need to implement internal training sessions to keep up with the pack. I also think that developers should be active in their local php community. I feel that a solid Jr developer with good skills can be mentored and ramped up, while some simply might not have the work ethic to hang with the big dogs.
I find that most of my Sr guys have 5+ years of solid experience and the Jr’s 1-3 yrs. Obviously other variables can throw these numbers off as well.
Kevin Schroeder
Charlie, good points all. Concerning user groups; what approach would you take with people who would prefer to spend their evenings at home with family, or something like that, as opposed to visiting a user group?
Charlie
I attend user groups about 3-4 times a month……So not a huge sacrifice. I have a wife, a 7 yr old daughter, an 11 month old, and another one on the way. For me, that’s all the more reason to be involved in the local tech community. For those that can’t get away it’s on them to stay current with the latest and greatest.
mjcpk
As an occasional PHPer (a jack of all trades web designer/developer) I think it often comes down to the same problem that gets people starting out in other industries. You can’t get a job without experience and you can’t get experience without a job.
You can be self taught (from the web, books etc.) but it doesn’t give that real professional experience.
I don’t get to see code that I KNOW is good. This means that I can’t learn from it and correct my own mistakes. PHP has lots of people like me who can’t make that step up to being a proper professional because we’re not exposed to the right kind of code.
foobar
great post!