As another startup in Atlanta trying to hire good PHP developers, I can sympathize entirely with MailChimp on this one. I have been searching for months for local PHP developers with experience doing TDD or other agile/modern practices and it is extremely difficult. If you are one, please feel free to contact me.
I think good TDD/agile/architecture cultures are more prevalent in ruby/python but as those languages have become more mainstream the quality of the average dev in those environments has dropped quickly. A few years ago only really good devs ventured into ruby stuff. Now everyone is trying it as the tools have made the language much more accessible for the average developer. I am seeing more and more programming mistakes in the ruby code I dive into than I used to.
Language choice doesn't matter too much from a technical perspective. It matters from a practical perspective. Consider the jQuery/prototypejs war. Prototypejs was technically superior for a long time, yet due to jQuery's more accessible plugin culture and prettier web site they were over time able to build a more robust community and took the mindshare lead in the js space. I still think one of the core reasons ruby/rails and python/django got big is that for a long time there was only one major framework available for the language and this caused a better community than the php landscape, which pre-dated frameworks by a long time (this happened to perl as well). So there wasn't "one true way" in php to build apps quickly, and this hurt the php community when rails got big. I think as a community we lost a lot of talent to ruby/rails in the last few years.
Bottom line is that accessibility, pervasiveness and low-learning-curve are critical to the initial and continued success of any platform, whether it's a language (ruby > php > perl), OS (ios > android > rim), etc.
Language advances in PHP (circular gc, traits, closures, etc) have brought php's language capabilities forward enough that it's a respectable platform for sticking with. However, you can't fix the community really since it's so fragmented. Fortunately some frameworks are getting enough traction to have rich ecosystems, and that's definitely a great thing for the language and the community.
Have you tried hiring good devs and then let them learn php, rather than narrowing your pool of candidates by only considering good devs who know php well? I mean, the latter may be preferable, but the former will often do.
The funny part is that when Rails and Django were rising to fame, it was argued that PHP was the better choice because finding developers to maintain the code in the future will be easier. Now that we are here, it seems it didn't turn out that way at all. Goes to show you should choose technology for technical reasons and technical reasons alone.
〉 I have been searching for months for local PHP developers with experience doing TDD or other agile/modern practices and it is extremely difficult. If you are one, please feel free to contact me.
I believe I meet your criteria but can only work remotely. I am currently looking so if remote is an option please let me know and I can send you more details.
My main beef with PHP is that the most deployed applications that use it are some of the most difficult to manage and messy pieces of code that I've ever seen.
I'm talking about Wordpress and vBulletin.
While MVC isn't the only valid design pattern, some varient of it is rather nice when working with websites and these two seem to ignore it through and through. Testing? What's that?
I know that better can be written in PHP, but for apps that I've had to deal with, PHP normally looks like an overpowered scripting language that's just a mess. I'll stay with Rails and Sinatra when I can.
I agree with you that WordPress and Drupal aren't examples of great code. It has to do with the fact that CMSes take a long time to gain traction and acquire a true community, and WordPress and Drupal were started at a time when MVC was almost unknown in the web community. By the time they got traction, the oldest code in the codebase was, well, ugly. Things that have been added to WordPress and Drupal recently are usually okay code-wise.
For many years now, more and more code has been moving to the client side. At this point, for me, PHP is just the glue between the database and the client side code. There's nothing left to hate. Move on already.
There still has to be a lot of glue logic on the server. When your client-side code calls something like "validate_purchase" on the server, you'd better have some trusted code handling that.
> it also has dead-easy deployment, cheap and reliable hosting
Matters for a single 15 years-old developer. Deployment is never easy when you get do anything non-trivial, and the cheap hosting... hosting for other languages start at $5 or $10... The only cheaper hostage PHP has is free.
> good documentation
That's highly debatable. I've also seen the PHP doc comments being pimped, I could never find anything worth more than a laugh in that cesspool.
Exactly. There are tradeoffs to be made when making any architectural decision. PHP may not be the right choice for someone, but it might for someone else in a different situation that values the characteristics you highlighted. However, it is ultimately a potential hire's choice what they want to grow their experience in.
PHP is what I've started with and after many projects in Python and Java I still come back to it whenever I need to get stuff done. I mean look at the array functions (http://www.php.net/manual/en/book.array.php)! Some consider this bad design, but I love this about PHP.
There are some good reasons to like PHP but the array functions in the standard library are not one of them.
* Arrays are created with array() as opposed to a more modern [].
* Arrays are not objects, so you have a ton of functions in the global namespace starting with array -- array_join() as opposed to $array->join().
* The functions are not consistent. Half of them don't have "array_" as a prefix. The order of arguments isn't consistent with other parts of the standard library.
I'm really curious about why you consider this a strong point of PHP.
At least it's not ColdFusion... I'm convinced some websites out there use fake .cfm file extensions as a joke. No way they're actually using ColdFusion!
It's actually not as bad as that anymore. Adobe CF has traditionally been pretty poor (though it's better these days) but there are great alternatives now (Railo is a top notch open source alternative).
I wouldn't ever expect to convince anyone who had ever worked on an old CF site to move back to CF ever again (believe me, I'm still scarred from it) but it's actually pretty good these days (Railo, that is).
My experience isn't limited either; Rails, Django, Flask, .Net (Umbraco), CodeIgniter, Drupal to name a few. They all have their warts. I hate to say it but in my experience Railo (CF) is way more performant than any of them.
I have 5 years of coldfusion and I can't understand that people can like it. It's too much buggy (yes it is). I don't like PHP but I cant say that PHP is a lot better.
Fortunatly, this is my last month with coldfusion, and don't want to work with again.
This seems to be a common essay from well-established companies who use PHP and then write "oh gosh we use PHP!"
The key here, as it states, is that they "built their own framework/libraries", which essentially means nothing to indie-devs and other small non-well-established companies who want to build something...
So the trend is simply this:
1) We use PHP because it's what we know, easy to get started with etc.
2) It gets us by while we build our business
3) Profit! Re-factor our codebase, in PHP!
Thus, the blog post should read: "Hey Mailchimp is doing awesomely, so we refactored our PHP codebase with our very own custom framework!"
It's not that PHP is all bad; it just lost the "framework wars" IMO, and I think when companies come out and state things like this, it kinda proves it...
If you're in Atlanta you're near Georgia Tech. They're pumping out CS graduates, have undergraduate students looking for experience, and also have a pretty good internship program. It is not Silicon Valley but you're better situated than a lot of other places.
Damn, long thread. I use Java, PHP, and Ruby: whever gets the job done in the given problem domain. Not a fan of a technical monoculture at all. PHP has been the language that is fashionable to hate for years now, but I still love it for web apps.
PHP started at a time when web development was not considered "serious programming". I mean, people switched to it from building GUI or console apps on C/C++ and Perl. It was fast, efficient, had convenient hashtables and defaults in place, and it was better than writing simple HTML files, but it was still considered "scripting". Nowadays, web apps are a lot more complicated, but web development is still messy: as HTML always stands in the way, it's still hard to abstract the whole web development process without restricting yourself to a specific mode of development and its limitations.
It's hilarious how most PHP programmers think they are exceptional compared to the rest. While most of them rarely code in any other language besides PHP/ActionScript/JavaScript/ASP. And virtually none of them read a serious algorithms book.
Java and JVM as reliable platform +1 just go whatever language you want Scala, Haskell, Ruby... here language doesn't matter. If you want to create custom web based application (not RIA one ofc) go django or rails, now it's more matter of taste both choices will give you a lot benefits, and ofc you can run it ontop of JVM. But if you considering building anything today on PHP (when you have sooooooooo fucking many better platforms) you are incompetent and plain stupid, because it will be a big technical debpt for the whole project.
[+] [-] apinstein|14 years ago|reply
I think good TDD/agile/architecture cultures are more prevalent in ruby/python but as those languages have become more mainstream the quality of the average dev in those environments has dropped quickly. A few years ago only really good devs ventured into ruby stuff. Now everyone is trying it as the tools have made the language much more accessible for the average developer. I am seeing more and more programming mistakes in the ruby code I dive into than I used to.
Language choice doesn't matter too much from a technical perspective. It matters from a practical perspective. Consider the jQuery/prototypejs war. Prototypejs was technically superior for a long time, yet due to jQuery's more accessible plugin culture and prettier web site they were over time able to build a more robust community and took the mindshare lead in the js space. I still think one of the core reasons ruby/rails and python/django got big is that for a long time there was only one major framework available for the language and this caused a better community than the php landscape, which pre-dated frameworks by a long time (this happened to perl as well). So there wasn't "one true way" in php to build apps quickly, and this hurt the php community when rails got big. I think as a community we lost a lot of talent to ruby/rails in the last few years.
Bottom line is that accessibility, pervasiveness and low-learning-curve are critical to the initial and continued success of any platform, whether it's a language (ruby > php > perl), OS (ios > android > rim), etc.
Language advances in PHP (circular gc, traits, closures, etc) have brought php's language capabilities forward enough that it's a respectable platform for sticking with. However, you can't fix the community really since it's so fragmented. Fortunately some frameworks are getting enough traction to have rich ecosystems, and that's definitely a great thing for the language and the community.
[+] [-] troels|14 years ago|reply
[+] [-] randomdata|14 years ago|reply
[+] [-] simonw|14 years ago|reply
Can you expand on that at all? What made Protoype technically superior?
[+] [-] unknown|14 years ago|reply
[deleted]
[+] [-] mattm|14 years ago|reply
I believe I meet your criteria but can only work remotely. I am currently looking so if remote is an option please let me know and I can send you more details.
[+] [-] JoeCortopassi|14 years ago|reply
[+] [-] tibbon|14 years ago|reply
I'm talking about Wordpress and vBulletin.
While MVC isn't the only valid design pattern, some varient of it is rather nice when working with websites and these two seem to ignore it through and through. Testing? What's that?
I know that better can be written in PHP, but for apps that I've had to deal with, PHP normally looks like an overpowered scripting language that's just a mess. I'll stay with Rails and Sinatra when I can.
[+] [-] naz|14 years ago|reply
[+] [-] KnightWhoSaysNi|14 years ago|reply
[+] [-] maratd|14 years ago|reply
[+] [-] rbanffy|14 years ago|reply
[+] [-] creativityhurts|14 years ago|reply
[+] [-] KnightWhoSaysNi|14 years ago|reply
[+] [-] masklinn|14 years ago|reply
Matters for a single 15 years-old developer. Deployment is never easy when you get do anything non-trivial, and the cheap hosting... hosting for other languages start at $5 or $10... The only cheaper hostage PHP has is free.
> good documentation
That's highly debatable. I've also seen the PHP doc comments being pimped, I could never find anything worth more than a laugh in that cesspool.
[+] [-] checker|14 years ago|reply
[+] [-] saibotd|14 years ago|reply
[+] [-] generalk|14 years ago|reply
* Arrays are created with array() as opposed to a more modern [].
* Arrays are not objects, so you have a ton of functions in the global namespace starting with array -- array_join() as opposed to $array->join().
* The functions are not consistent. Half of them don't have "array_" as a prefix. The order of arguments isn't consistent with other parts of the standard library.
I'm really curious about why you consider this a strong point of PHP.
[+] [-] TylerE|14 years ago|reply
[+] [-] rbanffy|14 years ago|reply
This should help you.
[+] [-] simonw|14 years ago|reply
[+] [-] skrebbel|14 years ago|reply
Awesome PHP is awesome.
[+] [-] Androsynth|14 years ago|reply
[+] [-] jinushaun|14 years ago|reply
[+] [-] c1sc0|14 years ago|reply
[+] [-] aidos|14 years ago|reply
I wouldn't ever expect to convince anyone who had ever worked on an old CF site to move back to CF ever again (believe me, I'm still scarred from it) but it's actually pretty good these days (Railo, that is).
My experience isn't limited either; Rails, Django, Flask, .Net (Umbraco), CodeIgniter, Drupal to name a few. They all have their warts. I hate to say it but in my experience Railo (CF) is way more performant than any of them.
[+] [-] mardiros|14 years ago|reply
[+] [-] ceejayoz|14 years ago|reply
[+] [-] rmason|14 years ago|reply
Even JBoss has an open source CFML distribution, http://www.getrailo.org/ so the whole cost argument is mute.
[+] [-] tobias3|14 years ago|reply
[+] [-] OzzyB|14 years ago|reply
The key here, as it states, is that they "built their own framework/libraries", which essentially means nothing to indie-devs and other small non-well-established companies who want to build something...
So the trend is simply this:
1) We use PHP because it's what we know, easy to get started with etc.
2) It gets us by while we build our business
3) Profit! Re-factor our codebase, in PHP!
Thus, the blog post should read: "Hey Mailchimp is doing awesomely, so we refactored our PHP codebase with our very own custom framework!"
It's not that PHP is all bad; it just lost the "framework wars" IMO, and I think when companies come out and state things like this, it kinda proves it...
[+] [-] Mikushi|14 years ago|reply
[+] [-] middus|14 years ago|reply
[+] [-] naner|14 years ago|reply
[+] [-] unknown|14 years ago|reply
[deleted]
[+] [-] j_col|14 years ago|reply
[+] [-] troels|14 years ago|reply
I never really understood this argument. I mean, the overlap between Ruby and PHP are so great that they are virtually interchangeable.
[+] [-] bufo|14 years ago|reply
[+] [-] ristretto|14 years ago|reply
[+] [-] ArtemZ|14 years ago|reply
[deleted]
[+] [-] alecco|14 years ago|reply
[+] [-] pkkk|14 years ago|reply