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