We just had an internal discussion about if sticking with PHP limits your career options. And just now (coincidence?) I noticed blog posts in the PHP and MySQL community noting similar concerns. The issue is that there is simply not enough top qualified talent that knows LAMP well enough to hire. Or maybe its just too hard to find them? It seems all the good guys are already hired. As a result companies end up looking for other technology, not because they actually believe that these technologies are any better or worth the license fees that these usually require to be paid up ..
So whats the problem here? Well I think one of the key issues is that LAMP focus on solving issues with a very non academic way. This implies that few people are exposed to LAMP during university. Even if they are, then they are forced to think in the traditional ways. Doing things the proper software engineering way etc. But this is not what helps you to become a top LAMP engineer. Here its important to solve real world issues in a good enough approach.
For example I bet you 99% of all professors would get a heart attack when I tell them that PHP is great and robust because any memory leaks get cleaned up after each request. So while developers try fix memory leaks, they can get away with some hanging around. This means that they can focus on adding new features instead. So lets hope that one by one universities realize that its worthwhile studying what makes LAMP so successful. Also to all students I can only say: If you are truly motivated, there are more chances in the LAMP space than in the Java/.Net world, since as this posts shows .. there is not enough talent in the pool .. meaning there are more opportunities for people that do join the LAMP talent pool. And there are more chances of sticking out from the crowd and becoming world famous (I am not kidding).
Another issue is simply time. Linux had the same issues, but most of that is solved now. I think in 5 years time there will be enough examples of people that got rich with php. There will be enough examples of companies that succeeded because of how LAMP enabled them to scale and solve real world issues as they became relevant to their business. I am not sure what role certifications will play in all of this. I do not think that a certification certifies that you are capable, but it does help in weeding out the fools maybe. They might just serve as a placebo that helps HR departments to me more willing to take the plunge with PHP. But I think PHP companies will just need to work harder at building their own PHP talent. Cool companies like Liip, that focus on combining sound business while appealing to the needs of geeks, have a key role here. As such I think that a lot of companies will need to rely on external consultants to up with their development needs.
I also think that the evangelization of LAMP could get better. Stay tuned on this one. I am cooking on something in this regard.
I think one problem is that php has such a low barrier to entry that the world is filled with low quality "php devs" which is negatively impacting on the actual good php devs (note the no quotes). This of course makes it less likely for new talent to choose to join the LAMP pool.
Of course people who are good would usually be looking for plain dev positions...that is they would be language agnostic.
I used to pick up some spare bucks 'fixing' second or third rate code that a company had low-ball bid to get. I usually had put in a higher bid and warned them that they get what they pay for and that must have stuck from the phone calls I would get months later.
Or they would go with an heavy Java framework and run out of money trying to get it to work.
A few times the PHP was not bad but needed cleaning up. But usually the company was doing things the least expensive way possible and it showed to me and their customers.
Before we held last year's PHP unconference at our local university (http://www.php-unconference.de/), the academic staff members had very little to no idea about what PHP was capable of.
I think they were quite impressed by what the saw and heard during the event. I don't know, however, if this has lead to any changes in mindset, or maybe even PHP or MySQL being taught in regular university courses.
We'll have a meeting with them about the upcoming unconference in April, and I'll make sure to inquire :-)
Don't be worried. PHP and MySQL are among top open source packages used widely in enterprise. Java is on the top of course.
I definitely agree that there is a lack of academic focus on administrative aspects of the LAMP stack. Most four-year universities that I've seen work on strictly a programming or engineering platform. I came out of actual course work with a working knowledge of C and Java (which easily translated to PHP) and Oracle SQL (a short jump from MySQL), but would have had no experience in the rest of the stack were it not for my senior project (I built a web-based business management thing, and in the process manually set up a Red Hat/Apache/MySQL/PHP server).
Some of it, I think, is a problem of resources. To give all the CS students the experience that they ought to have to be proper software engineers, they really ought to have had a machine for each of us and made us build our own JRE before we could learn Java, set up our own database server before we learn SQL. But no... not exactly practical.
The only education programs I see around here that come close to that are at technical colleges, and most of them are focused on the MS certifications.
I suspect that the reason that you don't see PHP in universities is that it's not a teaching language.
One of the biggest problems in teaching computer science and computer engineering (in Ireland at least) is the focus on what the industry is doing. Whole courses have shifted in less than six years from Pascal (an excellent teaching language for teaching procedural programming) and Modula-2 (also excellent) to C++ (god-awful for teaching procedural or OO programming) to Java (at which point I resigned from teaching that course under protest and asked for a transfer to a different course as TA). The simple fact is, C++ and Java do too much for the student. They're not designed to force someone to code cleanly, they just allow it, and that's not enough for a beginner. And languages like Perl, PHP, Ruby, they're all much, much, much worse than C++ and Java for teaching, purely because they're so capable. Why bother learning to write a hash table if you have java.util.HashTable? Why bother writing clean, readable code when you can enter the IOCCC? And who cares about learning about types when you can just mash something up in PHP?
The problem is, we teach in the wrong languages. We need to throw out industry languages en masse from university courses, and teach the basics properly again. Start from assembler (the single best way in existance to teach a student about pointers and some really basic data structures), and work through procedural and object-oriented and function and aspect-oriented programming, and then - and only then - go on to teach them industrial techniques in their final year. The fact is, teach them correctly, and graduates can pick up a simple language like PHP in a matter of a few days and become proficient in it quite rapidly. But a graduate who didn't learn how to write a compiler, or who doesn't know an object from a class or who doesn't grok regex writing - well, those are things that you really have to learn properly, and the time to do that is not after graduation, it's before.
(Oh, and 99% of professors, lecturers and TAs that I have known would not get a heart attack at the thought of memory leaks, because 100% of professors, lecturers and TAs that I have known get to see students being puzzled when what they're typing is overwriting the code already on the screen. Believe me, you explain the insert key enough times and you start to pray for code advanced enough to exhibit memory leaks!)
I agree with what you are saying Mark. However what I felt was totally missing at university is teaching about how to build a scalable system. I mean I learned algo's in Modulo-2. I even learned a bit of Assembler. I had courses in the basics of data modeling and operating systems. But I learned nothing what it means to manage the flow of data in a large system. I did not learn about how to figure out priorities in system design. And yes .. the increasing obsession with Java at universities cements the mindset that Java is the right thing for everything in the real world.
This is like reading about a parallel universe. From where I sit (Zend, International) we see loads of academic institutions all over the world both using PHP for their own business needs and teaching PHP.
I won't say that these are all top level universities, some are high schools, some local colleges - but I totally agree that there is a talent crunch and companies with universities (and us) are running hard to catch up (hopefully you'll start seeing some results soon), but suffice to say that last year we made an announcement with the French Ministry of Education for PHP in the Baccalaureat and we have dozens of German, Swiss, British, French, Italian and many other academic institutions using and teaching and promoting PHP. So perhaps some Computer Science professors might have heart attacks about memory leakage etc... but in general, most of them probably have a tinker with PHP in their spare time and may even build their own tools in it. Let's not forget that Apache and Linux in general have a strong academic heritage.
Bear in mind also that IT/Computing courses in many western economies have falling popularity and I see lots of self-taught developers in the market who never saw the point in going to university. Nonetheless, there are increasing amounts of courses in eCommerce, Web Engineering and the like where PHP is definitely being taught as a component (some professors write their own material, some plan to use Zend stuff). I do agree that the courses are a lot more applied and business oriented, but I also rarely come across a PHP developer who isn't also doing about 3 other PHP jobs in their spare time - that's the PHP crowd for you: hyperactive, entrepreneurial, business-centric and dynamic.
So, the upshot of all this that your concerns are definitely very valid but, even as cynical and pessimistic as I tend to be, I don't think doom is imminent, not even an impending gradual decline or demise of PHP. Happily for all of us reading this blog neither do the increasing numbers of companies I have the pleasure to talk as part of my job.
In any case, I got to read about Liip :-)
"But I think PHP companies will just need to work harder at building their own PHP talent."
Any one of the many PHP User Groups will be happy to help you. Working professionals often overlook user groups because they already know the language, they know how to use the internet to find what they don't know, and working all day is hard. What they don't realize is how big a draw their everyday job skills are to folk who haven't had the opportunity to learn those skills yet.
If you want a talented pool of PHP developers to draw from, spend one or two nights a month actually teaching them skills you need instead of waiting for somebody else to do it. Find a User Group and demonstrate what you know. Don't worry about covering language basics - they can learn that from the internet. Show them the hard stuff. If you need CS skills, show them how CS skills make your life better within the context of PHP. If you're doing something complex, dissect it for them. They WILL start using bits of what you show them. And once they have the correct terminology and good examples to work from, they will look up more details. These guys are by definition self-starters. By actually talking to them you can make certain they're learning useful skills instead of bad habits.
It costs you nothing but time, it raises the level of competence of all the PHP developers in your area, and if you're far enough ahead of the crowd, you'll draw other working professionals too, which does phenomenal things for User Group attendance. Once that starts happening, businesses start noticing the ecosystem instead of just seeing the demand.