Friday, July 31, 2009

Unplugged

I am unreachable, (especially by phone, which doesn't work where I am) till Jan 2010. Email will be answered, eventually. I am not available for any consulting assignments till 2010.

See you next year! Have fun,

Saturday, July 25, 2009

Why do startups still use Java? Part 4 (conclusion)

(Part1, Part2, Part 3 of this series of blog posts, for anyone who needs some context)

I got some time to think on a plane and distilled down the rationale for using java in a startup to this question.


"Is your startup going to need "average" programmers before your company makes significant amounts of money and/or gets funded?"


"Average" could be interpreted different ways - "dumb" (either absolutely or relative to alpha coders you do have), "low energy" (due to lack of time to focus on programming/ wanting to go home after 8 hours of work/ whatver), "low experience" (hire people with no programming experience), etc etc.


But all said and done, if you are going to need many average programmers on your project *before* you make (decent amounts of) money, then the decision to use Java (or C# or whatever the "mainstream" language is) is probably justified.

The question is a bit more subtle than it looks and has some circular reasoning baked in, but it serves to encapsulate all the reasons people select Java as a main programming language in a startup and can probably serve as a rule of thumb simplifying approximation.

The bigger question is what exactly does it mean for a startup to depend on "average" programmers, (I can't think of a convincing example of such a software startup, but I am sure they exist somewhere) but that is a question for another day!

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

Wednesday, July 22, 2009

Managers, Makers and Meetings

When I last worked at MegaCorp, I would be in the office by 6.30 in the morning and leave by about 3.30 in the afternoon. This was non negotiable and part of the agreement I made with the company. I could work[1] productively for about three hours before the day's meetings and "manager work" started and the rest of the day usually went downhill very fast. I had some dim sense of "preserving my sanity"as a reason for doing this and it worked very well in this regard, but I could never explain clearly why this worked so well.

Now I know. Paul Graham writes an excellent essay on the different notions of scheduling for managers and "makers". A must read for both managers and programmers.

[1] At MegaCorp "work" had strange meanings - it was mostly measured in the degree you sucked up to your superiors (I am not being condescending here. I watched several masters of this art who would apply a frightening degree of focus on "managing upwards". Very educational but very scary), and how many meetings you attended. By God, did we have meetings. One of the reasons I left (not the most important one!) was that we started to have meetings about meetings and I came out of these dispirited and demoralized and completely drained.

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

Saturday, July 18, 2009

Why do startups still use java?

I can't imagine what competitive advantage using Java (or C#) to create a startup provides these days. I can see why the JVM is sometimes a good idea. But java?

The only advantage Java provides *these* days over something like Clojure or Scala (or Python or even a c + scripting language combination depending on domain, let alone more powerful languages) is that you can be sure an average dumbo "programmer" hired off the street won't run away screaming when introduced to the code base. But if you are a software *startup* (vs big, fat and slow MegaCorp), why would you want to hire "average" (we'll be kind here) programmers?

I mean if you need a lot of libraries, use a better language on the JVM. If you need only a few, use the most powerful language you know. I would have thought it was obvious.

Well I thought about it and found an answer.

Startups are not necessarily founded by great programmers (who presumably are fluent in better languages than java or C#). They are often founded by MBA/business types who bring in a programmer they know and unsurprisingly enough these are the mediocre "enterprise" type of programmer. And they reach for what they know and are comfortable with, and hey presto, yet another j2ee/dotNet startup!

COntinued in Part 2, Part 3 , Part 4

I've become some kind of weird clearing house

for good programmers looking for interesting projects/jobs. I know people doing interesting things (startups or other interesting projects). I also happen to know some really good programmers (who are as rare in Bangalore as they are elsewhere). Sometime I am able to link the former to the latter. If I didn't have so much to do I would probably start something like "Really Cool Jobs for really cool programmers in India dot com".

And since I connect only people I know personally, I can put my credibility behind them they are able to bypass multiple levels of interviews and such. Maybe there is a business model in there somewhere? (just kidding. I have enough to do for the next 10 years and my pile of "things to do" would be just as high).