Again, I'm not saying Java-the-language is bad. Java can be the best tool in a programmer's toolbox for many things. But, overwhelmingly, Java schools make Java programmers that only wield the Java hammer on every nail they find.
If your first language is PHP, or ActionScript, or Perl, it is very likely that you picked it up on your own—and thus are interested in the topic of programming in general, and will continue to learn from there, picking up bits of programming theory and new languages as you go. However, if your first language is Java, you learned it in school, because that's what they taught—you didn't yearn for anything more—and then there was a big bubble of EE employers ready and waiting to insulate you from the rest of the programming universe. Straight out of school, you start work for one Java company, and then transition to another, and pretty soon you're 32 and don't know what a combinator is or how you could possibly implement something like the JVM.
Having attended one of these Java schools for a semester, I can guarantee you that no one who graduated from there will ever learn another language. They know what they know, and they're happy with that. That what they know is Java is immaterial, except that that means that only knowing Java, by Bayes' law, becomes a positively-weighted-feature in the detection of these work-a-day programmers who need to be avoided at all costs if one wants to hire in a startup.
You know, lately I've been thinking about the languages I learned this past few years. As of now, I'm nowhere nearly good in any environment thanks to my stupid brain following the "language love boat" preaches.
Couple days ago I decided to shut my eyes off articles that compares programming languages and decided to stick with Java and Ruby. I don't plan to learn 10 different programming languages for the rest of my life unless I happen to get an offer in a company where they would want to train me in their technology. I have no plan to be a software developer for the rest of my life because that is a bottom-line job. It's useless really. Especially when there are too many effing opinions in our industry such as:
- We prefer young people (remember, y'all going to get old at some point, you'll be out of the game soon)
- We prefer TDD, Scrum, and Agile (those of you who dislike TDD will be crossed out from this list)
- We only do games (those web developers are out)
- We only do web-development (don't know HTML/CSS/JS? get out)
- We only do internal IT (you're a software product guy, you won't last long here)
- We do "Digital Social Media Marketing Branding SEO" (you're just a PHP developer, go make something)
- We do SAP, PeopleSoft, and Oracle Financial (you're not qualified even though you know .NET)
- We do embedded (web developer and enterprise developer, the door is right there)
- We only use Apple (not an Apple fanboy? doesn't worship Jobs? out please)
I'd rather spend my time learning the business domain, leadership, management, networking and how to live a life and achieve happiness than learning LISP, C, C++, HTML, CSS, Python (I know a few things about Python but by no means I can be qualified to work in a startup that uses Django).
I don't want to be 50 years old hacker unemployed (due to age) and have no social skill to convince people that I'm still worth. Besides, I want to have a retirement that doesn't bother my kids's financial situation.
Do you have any idea how long it takes to learn and master a programming language and the ecosystem (libraries, tools, the community, etc)?
It's a life choice that I decided and I don't think you should look down at other people choices.
I don't know how you're managing to read this as any form of language-prudishness. I'm not saying "startups should not hire Java programmers." I'm saying "startups should not hire programmers who have only ever programmed in one language," because they will either be inexperienced, or remaining willfully ignorant of the breadth of the field available to them.
By coincidence—not by any flaw of Java or the generalist programmers who happen to know it and like it—the language that will most frequently appear on the resume of a single-language programmer is Java. This means—in the same way that given races of people get tested for given congenital diseases because they are statistically more likely to be afflicted by them—that if you're interviewing a programmer and all the previous projects listed on their resume are Java projects, it becomes more important to ascertain whether they know any other languages, because they are statistically less likely to.
This point is just a combination of the famous and well-received "programmer vs [language X] programmer" rant, and a bit of Bayesian analysis to determine which people applying for "programmer" jobs (i.e. generalist jobs, of the kind needed in startups) are most likely to actually be "[language X] programmers" instead. If you trained a spam filter on generalist-y-ness, it would flag Java as having a high correlation[1] with non-generalist-y-ness—that's all I've been trying to say.
[1] ...which is very explicitly not causation, I think I have to remind everyone at this point.
I quote: "if your first language is Java, you learned it in school, because that's what they taught—you didn't yearn for anything more".
That's language prudishness, right there.
I also find your assertion that if someone learns PHP as a first language they're likely to end up a "better" programmer than someone who learns Java as a first language absurd. There are good schools teaching Java, and smart, inquisitive people studying it. Many of the best programmers I know still use Java for pretty much everything since it allows them to get their jobs done. Some know other languages, some don't. It's a purely pragmatic choice, but to say that those people would not be valuable to a startup is crazy.
Maybe the process you use when interviewing is good enough to separate these people from others who really don't know how to program, but it seems like they're going to be starting at a significant disadvantage if you're interviewing them.
If your first language is PHP, or ActionScript, or Perl, it is very likely that you picked it up on your own—and thus are interested in the topic of programming in general, and will continue to learn from there, picking up bits of programming theory and new languages as you go. However, if your first language is Java, you learned it in school, because that's what they taught—you didn't yearn for anything more—and then there was a big bubble of EE employers ready and waiting to insulate you from the rest of the programming universe. Straight out of school, you start work for one Java company, and then transition to another, and pretty soon you're 32 and don't know what a combinator is or how you could possibly implement something like the JVM.
Having attended one of these Java schools for a semester, I can guarantee you that no one who graduated from there will ever learn another language. They know what they know, and they're happy with that. That what they know is Java is immaterial, except that that means that only knowing Java, by Bayes' law, becomes a positively-weighted-feature in the detection of these work-a-day programmers who need to be avoided at all costs if one wants to hire in a startup.