In case you don't know me already, I'm Jarrod Nettles, a Senior Developer at Apple Inc. I also go by the Twitter handle @hayvok, and blackshawk on Github (don't ask me why they're different). I have no real, formal blog since, well, I work at Apple. I'm posting this because I confused a good many people and I feel honor-bound to explain.
On April 1st Hacker News had their "Who's Hiring" thread. Since I'm currently looking for a developer, I decided to go ahead and post. Here's the content of that post, along with a link to the original.
https://news.ycombinator.com/item?id=5475813 - Original HN Post
Apple Inc: Cupertino, CA - Web Developer (PHP, Node.js, Ember.js) - Sorry, no remote!! Relocation offered. (I know, I know...) We're rebuilding an internal app from scratch and it needs to be blazing fast and real-time.
Here's our tech stack (right now).
* PHP 5.4 (we might go 5.5 once stable)
* Symfony 2
* Git, no SVN allowed!
* MySQL
* Redis
* Node.js
* Ember.js
If you're interested at all, even just chatting about the position, email me at ***********.
I posted this, not really expecting anything. Maybe a curious email or three.
Nope.
To date (and its only been two days since I posted it) I've received ~45 emails from prospective candidates. Even more surprising, I'd say fully half were serious candidates; they submitted professional resumes, wrote an interesting email to catch my attention, and asked pertinent questions about the job. I had a lot of faith restored in the dev community, Hacker News citizens. Bravo and kudos. Encore.
The thing that amazed me the most - virtually every applicant was downright giddy at the opportunity to work with Ember.js full-time. To me, this just goes to show how popular Ember is becoming - and rightly so. Ember is getting a lot of traction and attention and its developer base continues to grow. If you follow me on Twitter, you'll know already that I'm firmly in Ember's camp. In my opinion its the best client-side MVC framework out there. I also firmly believe that client-side frameworks are the future of dynamic client interaction and Ember is helping to lead that charge.
Sadly, the realities of business weigh in. I have exactly one post open right now, and right now my greatest need is for a strong PHP developer. I sincerely hope this didn't come off to people like I was advertising solely for Ember devs. I wish I could but I wasn't. I posted our current tech stack because I know potential candidates find them exciting and its invigorating and comforting to know that you won't be working on some awful "custom PHP framework" from 2004 that makes Wordpress' source code look reasonable.
My intention for the candidate is somebody who is rock-solid with PHP, preferablly an open-source contributor, and who is capable and interested in learning Ember. If I had another position available it would be for a front-end developer who amazing Ember and it would be to work in Ember all day long.
Again, sorry for the confusion.
(I'd like to address another, related, issue in this post, but feel free to stop reading here if you're bored.)
Some of the responses I received by email and on Twitter were of complete confusion. Below is a list that sums up the confusion I saw.
Why are you using PHP? That's stupid.
Why are you using Node with PHP? That's stupid.
Why are you using Ember with PHP? That's stupid.
I think a few people were thoroughly confused by the supposedly contradictory techs I posted. Here are the confusing parts, again.
- PHP (Symfony 2 framework)
- MySQL
- Redis
- Node.js
- Ember.js
To those people who are confused, you should know that a production solution rarely involes a single technology. The days where we deployed a PHP and MySQL web site are over. Get used to it. You know what? I could toss a few more techs in there that we'll be using.
- Ruby gems
- Web Workers
- Socket.io
- Three.js
- D3
The truth is that all of these technologies combine to power what I'm trying to build. Could I do it all with PHP? Possibly. But implementing a lightweight server to handle web socket communictions from the Web Worker that power the "real-timeness" is better done with Node. Ruby currently provides a good chunk of our deployment process. Three.js and D3 provide data visualization. Redis is our amazing cache that we couldn't live without. PHP is handling the API and is absolutely rocking at it, no matter what Jeff Atwood says.
No one technology can provide all of the things we that need. To a certain extent we need to be polyglots, because that's just how real work gets done nowadays.
Feel free to hit me up on Twitter. I'm always around.
Just because something is written in a language other than PHP does not make the author a hipster. You don't have to change your language every year, or use the latest fads. But c'mon. "nothing beats that"? Have you even looked at what node.js, or Ruby, or Python is doing these days? None of these are "hipster" technologies, they've all been around for years.
I've done PHP development for 10 years. Does it work? Yes, fantastically if you know how to do it. Is it messy? Hell yes. It has a ton of rough edges. For no good reason other than it's legacy that people refuse to fix.
PHP should be treated like COBOL. If your big business app is already written in it, by all means maintain it, fight the software rot, and time permitting replace modules with something more sensible. But if you're proposing that new apps be built from scratch in it, you're not taking advantage of about a decade of improvements that can be found elsewhere and pushing the code owner onto a platform that is notoriously painful to maintain.