Thursday, July 23, 2009

Why do startups still use java? Part 3

For context, see the two previous blog posts on this topic :- part 1, part 2

I was talking to yet another friend who is building a startup on the side (while holding down a 9 to 5 job) and after discussing his idea a bit I asked him the question "So why are you using java, given that you have very little time to work on your startup idea?" and after backing through the usual "problems" with more powerful languages, ("support", scalability etc - see the anonymous comments on my earlier blog entries on this topic) he said (paraphrased)

"I guess the final reason is somewhat depressing. I would have definitely used Scala if I were say 5 years younger :P. I am starting to feel that little bit of laziness when it comes to researching and learning things" .

This was a great eye opener for me because my friend is a *good* programmer and not in the least "managerial".

First, I am kind of unusual (some would say crazy, ;-)) in that I am still enthusiastic as I was ten years ago (or more than I was 10 years ago) about all things technical. I am perfectly happy reading a technical paper, or some source code or a technical book on the bus, in the train, waiting for lunch, in bed before sleeping and so on.

Second, I think nothing of working 2 days flat out and then crashing for 12 hours or working nights for a few months.

Third, I don't have a wife and kids who (rightly) require attention (the girl friend is used to my crazy ways and very undemanding, bless her kind soul). I don't have to feed the kids and send them to college so a 9 to 5 job isn't the necessary evil that it is to most folks.

So (in matters relating to programming) I am still 20 years old in my head, with the whole world wide open and full of possibilities, while other people my age have to do what they can in the *very* limited time they have. Given this, upgrading to the latest greatest language/toolkit/ os/ whatever may have a lesser priority than would be apparent to someone like me. My conceptual mistake is to extend my "mindset" to others. (yes once realized this is a obviously stupid idea!)

So maybe one of the reasons some programmers choose java for a startup is that they are of an age where there simply isn't the time or energy to constantly upgrade. You are very productive with Java through sheer experience and the time or energy to master a completely new ecosystem is simply not there.

Which has some consequences of course - in that such a programmer can often be outcoded by a kid whose innate brilliance and energy I enough to make up for the (relatively) old man's wisdom and experience.

Which maybe why, historically, most of the technically ground breaking software startups have been founded by brilliant teenagers who can hack.

Continued in Part 4

15 comments:

Venkatesh Sellappa said...

"So maybe one of the reasons some programmers choose java for a startup is that they are of an age where there simply isn't the time or energy to constantly upgrade."

Isn't that a creative way of saying - "laziness"

Ravi said...

@venkatesh,
I don't think laziness == lack of energy.

If it were, someone who's been starving for few days, or someoen really old, would be "lazy"

sriram said...

Programming in Python or your fav. lang. is so much more fun and that is what a start up is all about. That is why I think programmers should consider programming in a language other than Java or C#.

Varun said...

yes Ravi you are definitely as enthusiastic as a 20 year old :),i saw
you are currently reading udi manber(i am sure on Chris Okasaki's recommendation :) )...i am also reading it these days and it is a delightful book with beautiful problems. I am actually 28 and was thinking about how old i am now to solve algorithm problems and do induction etc, and keep cursing myself for not having done this stuff 5 year back...but man i must say that you are more passionate than many 20 year old topcoders....how do you get time to solve all those problems ?

Ravi said...

@varun,
yes Okasaki's reccomendation. Good Guess!
as for time, everyone has 24 hours in a day!

@sriram.
amen brother!

Anonymous said...

Having a family is certainly an impediment ,especially a 1.5 year old kid.They are so demanding! With both parents working these days, you have to do a time slicing of family job and professional work.

I am trying to read books only during office hours ;-).So, i manage to squeeze in an hour or 2 every day but can't do much on saturdays and sundays!

Hopefully, even though my progress is slow, i will be a better programmer than my present self in 5 years(i know i cant compete with younger kids who hack :-))

Vignesh(VIGNEMP5)

Venkatesh Sellappa said...

@Vignesh,

Why do you say you can't compete with younger kids who hack ??

Surely, with experience on your side you should be better than "kids who hack".

p.s: Sorry Ravi, i could not find any other way of contacting Vignesh but had to say something on this.

Ravi said...

@venkatesh,
"Sorry Ravi, i could not find any other way of contacting Vignesh"

No problem at all, people talking to each other(vs just to me) is awesome!


"Why do you say you can't compete with younger kids who hack ??"

The blog entry makes the point that a low-energy but "experienced" older person may be at a *technical* disadvantage vs a high energy brilliant young hacker in the context of a startup.

The qualifier (technical) is important.

It is like an old warrior fighting a young warrior(in the context of hand to hand combat). The age old experience vs energy conflict surfaces here. The older man has an edge cunning and experience, the younger one has energy and stamina. Who wins is hard to say.
If the younger man has more advanced weapons (analogous her to better programming languages) *and* you th and energy (say he has a steel sword vs a bronze one), the older warrior has to have a MASSIVE edge in cunning to win. His job just got a bit harder. All analogies have breaking points and I wouldn't push this too far, this was just to illustrate teh point *I* was making.

As to what Vignesh thinks, I'll leave that to him to answer.

Anonymous said...

Venkatesh
I was agreeing to Ravi's point that people who can spend more time coding and reading good books have a advantage to people like me who find less time to do it.

Generally, people without family commitments(means young programmers) can spend the entire saturday and sunday reading & working on their aim while 30+ guys like me cannot as it might conflict with family commitments.

The point i wanted to make is that i am competing with myself to become a better programmer over the next few years.I have just started the first step following ravi's advice reading Simply Scheme now.

ptrthomas said...

*ahem*

>> It is like an old warrior fighting a young warrior
>> (in the context of hand to hand combat)

Thanks for that analogy Ravi, it inspires me to think along those lines, how can I make all that experience work to my advantage. So yes, I'll think more on how to outsmart those with potentially more time and energy to spend - but lesser experience. Go !

Anonymous said...

@ptrthomas

"I'll think more on how to outsmart those with potentially more time and energy "


And superior weapons( == technology)!

That's the key insight of this post.I am an old java warrior myself and this post really made me think!

Anonymous said...

"The point i wanted to make is that i am competing with myself to become a better programmer over the next few years"
Dude you can always do well in anything you want. There is nothing which pushes you back just because you like spending time with your family. It is not that successful and "happy" people don't have family life.
What is most important is what really makes you happy. We all have 24 hrs as Ravi said and we just need to organize our priorities accordingly.
There is more to life than lisp or java.
One can always innovate with focussed and consistent effort in anything, just don't try to compete with everyone in everything :)
Trust me, but nothing can beat spending a happy day playing with kids.

Venkatesh Sellappa said...

Very interesting comments all around, food for thought.

The point i was trying to make was , an experienced warrior should surely be able to use newer weapons much more easily than a younger talented combatant, time pressures do not necessarily preclude you from learning something new and using it to your advantage.

There are degrees of energy involved , if you have no energy , you are out of the game, but i believe with experience you do not "necessarily" need the same level of energy , thats where you bring in the cunning.

And all things being equal - an experienced programmer should be able to learn a newer language faster than a person starting fresh.

@ptrthomas: i really liked your JSF Sucks post , i wish i had known that in 2007 , to be able to point it to someone else.

I will now stop abusing Ravi's Blog comments .. :-)

Anonymous said...

he point i was trying to make was , an experienced warrior should surely be able to use newer weapons much more easily than a younger talented combatant,"

Sounds more like wishful thinking to me ;-). Learning a *new* (vs variant) weapon takes roughly a constant amount of time and the difference in speed of mastery is more about time spent than anything else.

"an experienced programmer should be able to learn a newer language faster than a person starting fresh."


but that is not the comparison the author made. he explicitly mentions" young ... *hacker*". Hacker, not someone "starting fresh". The comparison is not between an older guy with experience vs a kid starting out in programming.

An older guy with 6 hours to spare in a week will learn faster than a teenager who started programming at 6 years? Yeah right! (due disclosure I am 21, been programming > 10 years).

July 25, 2009 4:17 AM

Venkatesh Sellappa said...

@Anonymous -- hmm
"the difference in speed of mastery is more about time spent than anything else."

Not sure i agree to that , lets agree to disagree.

This really is not the forum to go into details on why i disagree to that. Its not fair to Ravi or to other readers of this blog., if you would like to continue lets take this off-line. (my name links to my contact details).