Tuesday, July 21, 2009

Why do startups still use java? Part 2

In my last blog entry I had asked the question "Why do startups use Java (vs more powerful languages - Clojure, Scala etc - on the JVM, or other languages like Haskell or Erlang)?"

I had the opportunity to talk to a couple of ex-colleagues who are working on their startup (which, I predict will be *astoundingly* successful - these are very intelligent, well funded, capable -even the"business" guys is a good programmer - guys with some cool software) and I asked them this question and the answer was " (1) we find it hard enough to get good programmers. Adding a requirement for an unusual language will narrow the field (2) we don't have the time to train people. People should come on board ready to code. Unusual languages make this more difficult".

Both are thoughtful responses. I have some thoughts on these, but they will have to wait for another blog entry. Just throwing it out here for anyone interested.


Continued in Part 3 , Part 4

6 comments:

Varun said...

apart from the unfamiliarity with these languages, i have seen some people being also hesitant about issues like bugs,support etc. in upcoming languages like Clojure.
Also this assumption that somebody who has done only coding in popular languages is not a good programmer is something one should not assume.
I personally feel that the most important quality is "learnability" and a passion for programming (i should rather say "one's work" here). Also it is very important to have good communication skills.

Ravi said...

"Also this assumption that somebody who has done only coding in popular languages is not a good programmer is something one should not assume."

Who's assuming this? ;-). I wish people would stop reading things into posts which aren't stated.

That said,let us examine the assumption. yes, i think if you have been programming for a substantial amount of time(say > 3 years) and have coded *only* in the "popular languages", then you *probably* are a poor programmer (the one exception being when you are an acknowledged top O.1 % programmer in said language).


"I have seen some people being also hesitant about issues like bugs,support etc. in upcoming languages like Clojure. "

No language including java is bug free. There are bugs in java that have been open for a decade.


More generally *all* software has bugs.

When was the last time you got support from Sun for your compiler?

Meanwhile, langauges like python and Ruby (which have just as much "support and bugs" as Scala and Clojure ;-)) can crush Java in productivity.

And anyway, while you are waiting for all bugs to be fixed, other programmers are running rings around you with more powerful tools. Other things being equal, a man with a submachine gun will win against man with a wooden cudgel every time.

In a *startup* (vs some services enterprise company or megacorp product company) you can't afford to give away that kind fo leverage. Which is what the blog posts were really about.

"I personally feel that the most important quality is "learnability" and a passion for programming"

if a programmer has "learnability" (whatever that is and however defined) and a "passion" for programming he would have mastered powerful languages(and other tools) by himself. So this point is countering what you are trying to say rather than supporting it.

chandrakant said...

I would imagine there are two scenarios how a startup begins. One is when a non-programmer thinks of a great idea and knows the overall picture and needs some developers to do work for him. The other is when a developer hits upon a great idea and starts to do work on it immediately since he doesnt need anybody else. Since the most important thing in a startup is to get the product out the door quickly, I would imagine that if a (well-rounded) developer starts it, he would almost always choose a non-mainstream language with a lot more power (by power here I mean the languages that do not place limits on developers like single inheritance, no higher order functions etc).
It seems in your case the people who are starting it are looking to other people to do the work for them. But in that case, my question would be...why decide the language upfront? Why not first pick a developer who they know is exceptional and allow him to choose the language (a la 37 signals)?

Ravi said...

"It seems in your case the people who are starting it are looking to other people to do the work for them. But in that case, my question would be...why decide the language upfront? Why not first pick a developer who they know is exceptional and allow him to choose the language (a la 37 signals)? "

@chandrakant,
I don't know who the "you" in your comment is, but I completely agree with your viewpoint as expressed in the above sentence (pick a good dev and let her select the language) and I also agree that in this case it is very unlikely Java will be chosen.

chandrakant said...

By the "you" I didnt mean you personally but just was referring more to the situation you presented. Maybe you could put this question back to your friends? Would be interested in what their response is.

Ravi said...

@chandrakant,
Ok now I understand.

you said "It seems in your case the people who are starting it are looking to other people to do the work for them. "

This is not the case. Both of my friends are very good programmers. One is more business focussed but still a good programmer. But the reasons *they* used Java (which they acknowledged to be a relatively inferior language) were the ones given above. They do anticipate bringing more programmers onboard tec. I have some thoughts about this - more in my next blog post.