It seems that RoR, PHP & scala are the "hot" languages for startups. I know that java is old, but it lends itself to better engineering
IMO. Especially in NYC, where there is a robust market for high-
paying java jobs at investment banks, it is hard to find lean
startupers.
Are there theoretical or practical reasons to avoid java in lean
startups? Any ideas where to find folks at the intersection of java +
lean startups + NYC or is it hopeless?
Many thanks!
Cheers,
Mike
PS Here is the job description. Applicants and feedback on the
description are welcome too:
http://www.socialfeet.com/2010/05/got-java-chops/
I think in the big picture of a increasing speed supply (courtesy Mr Moore, for cheap cycle farms and cache; but also JIT compilation techniques), and comparatively fixed user speed demand (a gui only needs to be fast enough; network latency swamps many other delays), Java is now much faster than it needs to be (faster meaning performance, not development time).
Back then, you had compiled languages (C, C++) that were fast, and scripting languages, like python, that were not. Python was touted as a glue language. Anyway, Java was mid-way in terms of speed (being partly compiled and partly interpreted), and mid-way in terms of dynamic benefits (eg. garbage collected and runtime array bounds checked - but requiring static typing). That combination of ease of use and performance was a good fit for some tasks, at that time. As the speed supply moved up, Java became usable for more tasks. But as speed kept increasing, Python and Ruby and even PHP also became fast enough - and they had the ease of use of being fully dynamic.
To give a direct answer your question: agile/iterative prototyping is how startups compete these days (not on performance), and ruby, php etc are better than Java on this particular attribute. Another aspect is that many cool new things are happening in languages other than Java - they have more interesting tools (eg. Sinatra), and more interesting energy in the community, because they attract those crazy, eager, young, passionate, enthusiastic early adopters.
Exceptions: where more performance is required (eg. Google uses a lot of Java; and it's the basis of the Android platform and others); and for the Enterprise; and also where type-safety (for reliability) is more important than agility (though ML-based languages have some of this market).
Note: a startup can tackle any problem, not just consumer-facing webapps. I think webapps get disproportionate publicity (because they're on the web); and web forums (like this one) favour them.
btw: I remember Java's younger years, I'm still a fan, and I'm using it in my product development. Java... some one still loves you.