Hacker News new | past | comments | ask | show | jobs | submit login

I once wrote some blogposts [1] titled "Why do Startups still use Java? ". I would have thought people who wanted the Java libraries/JVM would have used Scala or Clojure. I understand why people would choose Java over say Python (the need for specific libraries like say Hadoop which have no direct equivalent in Python/C land), but I've not yet understood why they won't use Clojure or Scala once they choose the JVM.

I wasn't (and am not) running a startup so I asked some friends who were (and were using Java). I never got a satisfactory answer (but I got some surprising answers including "If I were 5 years younger I would be using Scala or Clojure but I am very productive in Java and don't have the energy to learn new languages"(!!)). Another interesting answer I got was that their startup focused on business value but needed only average programmers (I am just reporting what people said) and could very well work in Java. All answers tended to "Sure Java is inferior but there are mitigating factors."

Fwiw, If I were to ever start a business where software was a differentiator I would use (a) Scala (if JVM/libraries were important) (b) Haskell + C or (c) use a custom Scheme variant I've been hacking on for many years + C.

I personally think the fears of not getting good programmers if you build in unusual languages is overblown. Even in Bangalore, good programmers would jump at an opportunity to work on interesting systems and interesting languages. I am not looking for work but I would still consider a job offer from a startup using interesting languages very seriously.

[1] I was trying to figure out stuff by writing and so these posts are not polished, but if anyone wants to read, here they are

http://pindancing.blogspot.com/2009/07/why-do-startups-still...

http://pindancing.blogspot.com/2009/07/why-do-startups-still...

http://pindancing.blogspot.com/2009/07/why-do-startups-still...

http://pindancing.blogspot.com/2009/07/why-do-startups-still...




Almost all of the best Java developers that I know (including many who ran Java user groups, podcasts, started well known projects) would choose to use Scala on a new project rather than Java. Given Scala's present state (many performance problems were ironed out in 2.8.0), I simply don't see a single reason not to do so.

It's quite puzzling why the author of the parent article lumps it in with Ruby as the two aren't very similar.

On the other hand, I've seen a friend who's a good (but not great - and he's well aware of it) developer, but is rather entrepreneurial (quit a very well paying job to work on his own project with no external funding) was very surprised after I told him Scala is statically typed. Apparently Java developers almost develop a sort of a Stockholm syndrome that leads them to believe that "if it isn't verbose and limiting, it must be dynamically typed and slow".


But you are forgetting that its much easier to hire experienced Java programmers than experienced Scala programmers, simply because there are not that many of the latter.


If a Java, C#, C++ (or F# or OCaml) programmer isn't able to pick up Scala (or any other typed object oriented language) quickly on the job, they aren't that great of a programmer (even if they are experienced).

Same for knowing any of {Perl, Python, Ruby} and being able to easily pick up the other. Some of the more advanced idioms may take longer to learn, but it's a fact of life that you'll have to learn new languages as you go.

On the other hand, if you need to hire average but experienced programmers (e.g., if you're doing outsourced CRUD app development) then you might have an argument.


I dont want to pay people to 'pick things up on the job'. I want people with a proven track record in the language we use.


> I dont want to pay people to 'pick things up on the job'.

Google would disagree. As would Microsoft (they were very interested in interviewing me, even though I've never done Windows or C# programming and made that clear on my resume), Facebook, Amazon (http://groups.google.com/group/mi.jobs/msg/d81b6c1fa8f361fc) and other serious software successes.

Sounds like you want coders, not developers. What reason would talented developers (the ones with offers from all of the above, plus start-ups competing with you) to join you?


As a startup we evaluated using Scala for parts of our development but found the development tooling support to be very limited.

Eclipse is a great IDE that has been an awesome productivity booster, but the Scala Eclipse plugin kept throwing Exception.

If it worked for me, then I would have tried it out, and then I would have gotten my teams feedback, then we would have considered switching. i.e. I do see non Java languages running on the JVM to be the future, but they are not the present yet.


"As a startup we evaluated using Scala for parts of our development but found the development tooling support to be very limited."

Twitter seems to manage fine with the "limited tooling" for Scala and is the existence proof that Scala works fine in startup/production environments. I suppose they must be using ancient editors like Emacs or Vim and unix command lines? Sure, "tooling" like that existing for Java would be nice to have, but if that stops you from using Scala in a startup, you are not the target audience for it.

That said, I concede that your startup/developers may have had special needs that the folks Twitter didn't and so you shouldn't use Scala - or Clojure. Or Haskell. Or even Ruby or Python- all of these have "limited tooling" as compared to Java.


> Or even Ruby or Python- all of these have "limited tooling" as compared to Java.

The reason for the IDE argument is again, a continuation of the "Stockholm syndrome" argument. The whole reason the IDEs are considered "required" for Java developers is because the language is verbose. You don't need an IDE to write Scala: type inference means less typing (pun intended), having a REPL means you can evaluate code before compiling.

I haven't seen CDT and PyDev Eclipse plugins (which are reportedly well written, supported by large companies) get very much traction as you simply don't need Eclipse to program in C or Python: the languages are terse, the APIs (Python's standard library, C's stdlib and UNIX network APIs) are easy to keep in your head.

That being said, as Scala is more statically typed than Java (but at the same time supports a REPL) it's theoretically possible to have better IDE support for it then Java. IntelliJ's Scala mode works very well (and is free) and ensime (for Emacs) is simply incredible: http://www.youtube.com/watch?v=A2Lai8IjLoY

On the other hand, the sort of tooling that actually solves difficult problems is just as available to Scala as it to Java: YourKit profiler, JVisualVM (and other JMX consoles), etc... In some cases there tools available (e.g., sbt, ScalaSpec/ScalaTest, Slime for Clojure) that are superior to the ones for Java.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: