Ravi Mohan's Blog

Friday, June 22, 2007

Zenter - Working Habits for a succesful startup

I am still "offline" but this was so striking I wanted to record my awe. from here, (emphases mine)

What was a typical day or week like at YC?

We basically lived by the following schedule 7 days a week for 3 months. 10am - Noon: roll out of bed and stumble into the living room to sit at the computer, check email, blogs, news for the day and start coding Noon - 12:30: eat our $2 Lean Cuisine lunch - My personal favorite is Swedish Meatballs 12:30 - 7pm: Heads down coding, music played all day long and we alternated days to pick the play list which worked well 7 - 8: Kick Robby's ass at Tennis on the apartment courts. I think I may have won 3 sets over the entire 3 months. But they were always like 6-4 and it got us out for some exercise. 8 - 9: Make and eat gourmet dinner - mostly tombstone pizza, but occasionally Red Baron when they were on sale. Care packages from family were also extremely helpful to make sure we didn't eat too poorly. 9pm - 4am: Code like the wind - maybe do a design session or two if we are trying work through something particularly hard. 4am - 10am: sleep

I am impressed!

Thursday, June 21, 2007

Archive Visibility Fixed

The archives for this blog were not visible. Now they are.

Thanks to the reader who sent this in.

Friday, June 15, 2007

Blog On Ice For a While

the nutshell version:

I am *extremely* busy and won't be paying too much attention to this blog for the next couple of months. If you need to contact me, write an email or call. Thanks

Longer version:

I just spent an hour or so responding to a comment and an hour a day is something I just can't afford these days. I have a lot of travel coming up. My research has finally "clicked" and while there is a tonne of work to be done, there is no longer any ambiguity about what to do or how to do it. But I really need to buckle down and work. It's all very exhilarating but time is at a premium.

I have a roaming cell phone number and check my email twice a day. So do write or call if anyone needs anything. Friends can almost always ping me on messenger or gtalk.

I will be back in late August/Early September.Thank you for your understanding.

Thursday, June 14, 2007

Rogue Researcher's Route Map - Addendum

I wrote about what I learned when attempting to do Comp Sci research on my own (A Rogue researcher's route map).

Something I've learned since then might help people read research papers- Every (good) research paper asks (and hopefully answers) a question. Try to discover the question being asked and the answer and nail them both down by trying to express them in a couple of sentences each.

This really helps you understand the significance of a paper for your research. And stops you from panicking when you discover papers which seem to cover ground similar to what you are doing).

Paul Graham , talking about startup ideas, says,

Treating a startup idea as a question changes what you're looking for. If an idea is a blueprint, it has to be right. But if it's a question, it can be wrong, so long as it's wrong in a way that leads to more ideas.

Seems to work for research as well, especially for solo hackers attempting research outside institutional frameworks.

Wednesday, June 13, 2007

The Stratal Effect

Dr de Bono defines a "stratal" thus.

"A stratal is a number of parallel statements or observations that are put together as a whole. The statements need not be connected in any way whatsoever. There is no attempt to be comprehensive. There is no attempt to cover all aspects or to be descriptive. There is no attempt to be analytical. Just as a random word is used because you want to use it, different statements are put together as a "stratal" simply because you want to put them together in this way. A stratal is a number of unconnected statements put together solely to form a stratal. "

The key is that the statements are loosely connected or not connected at all. De Bono suggests that a stratal be used for generating ideas or to convey a particular effect.Some of the best poems can be seen as stratals.

But one can also use stratals for different purposes. One of the most fascinating uses (at least for me) is to lay out two (or more) random statements or ideas in parallel, especially in conversation and then see which of the ideas gets picked up. Let us say you are talking to someone who feels has a problem with relationships and you think there might be an empathy skills deficit. How do you check? One way to do it is to lay out two statements in parallel, one which checks for empathy, one which checks for it's opposite(say self centred ness). and see which one gets picked up. Say something like "I feel very frustrated when I talk to you so perhaps you can change that behaviour in the future" There are two ideas here, one starting with "I" and one starting with "you". A person having problems with empathy will probably pick up the sentence beginning with "you" and answer something like "Oh I know I need to think about changing my behaviour". A more empathetic person will place the focus of consciousness outside himself and on the other person say something like "Oh you feel frustrated? Why do you say that?"

There are all kinds of variants of this technique in combination with all sorts of other psychological/counselling tools, but the essence is simple. Layout parallel thoughts.

I picked this up a variant of this technique from John Hundreiser (aka "H", once head of recruiting at Thoughtworks ) who frequently uses a similar technique in his interviews. He would ask you a chain of three or four questions and see which one you'd pick up . He was the head of HR and his interview would come after many rounds of interviews. he'd ask something like "How did the previous interviewers from TW treat you ? Did the explore technical questions in depth? Are you feeling comfortable?" There are three distinct questions here and many people would answer one of these questions, at most two and forget the third. It is the very rare (and very self aware) person who says something like "To answer your questions in order, first ...second , .. third .. "

Of course the big problem with these tools of applied psychology is that they are all very context dependent and to use them properly the user needs to be (relatively) free of complexes and biases himself and also have the ability to evaluate the results properly. But that is the subject for another blog entry.

"Concentration is the Enemy"

A fragment from a (chat) conversation with my friend Abey.Context == Talking about programming,

me: Hey did you know about this " I think maybe concentration is the enemy. Seriously. If you're working on something that is so complex that you actually need to concentrate, there's too much chance that it's too hard. - Ron Jeffries"

Abey: yeah that makes sense[/sarcasm]

me: I guess one could always pair to avoid the "danger" of concentration. Hard to focus if someone is yammering in your ear all the time.

Abey: Yup! Pairing always helps. Instead of one person fretting and strumming the guitar and singing (takes too much "concentration"), you should have one doing the fretting and one doing the strumming

me: Let's "turn the dial up to 10". How about two pairs, one pair on the frets and another on the plectrum. Lots of redundancy and no need to concentrate!

Abey: yeah Extreme Guitar .. perhaps we could write a book?

Monday, June 04, 2007

On an unwillingness to pay the price

This is something I've started noticing recently. A lot of people claim they want something and then balk at paying the price. The pattern is
  1. I want X. I soooooo wish I could have/be X
  2. Sure why not, Do A, B and C and there is no reason you can't have/be X.
  3. Urmm yeah but that's too tough.. I don't want to do that.

Here is an example.

A friend says "Dude I wish I could stop working on enterprise software and work on cool projects like you do". ME :"Sure you can , just work through these books, learn the required math and you can work on these things too. I have more work than I can handle and would be glad to give you some." Friend:" Maths!!! I hate maths!" or "yeah dude but that's gonna take me two years!! That's too long"

A variant on this, particularly applicable to relationships (of any kind) is an unwillingness to reciprocate. If you expect people to care about you and devote significant amounts of time to you, common sense says you have to do the same for them. I've seen many (too many) people who are very focussed on "taking" and not so much on "giving". Which is fine but then I hear complaints of "I am un appreciated/my husband left me/my girlfriend acts remote/ I don't have friends I can trust".

I don't get it. Is it too old fashioned to believe that one has to actively and diligently work for the really good things in life, whether the aim is a good job or a good relationship or something else?

FAQ (from my mail-box) #3 Can we hire you ?

Probably Not.

Some context. Every single day, I get 3-5 emails from people trying to offer me a job. The obvious form letters go into the trash can immediately, but I'm old fashioned enough to write a response to any mail that looks as if it has taken a human being some time to compose (Examples of both type sof mail at the end of this blog entry). Of late however, I find myself writing the same thing one too many times, hence this blog entry.

So, you are company X . Will I work for you ?

If your business model depends on body shopping (where body shopping is defined as "we don't care what projects we work on or for whom and the business model is x number of developers farmed out to random clients for y $/hour"), no, I'll never work for you. Been there, done that, got the T shirt. There is nothing you can offer that I want. I don't want to be an "architect" who does "high level design". I don't want "extensive travel" or "green card sponsorship". I don't want to be a Project Manager type and "lead enterprise changing teams for Fortune 500 clients". I do not want to be an "Agile Coach" (yuck!).

Please don't write to me. You are wasting your time and mine.

If you are a product company with a strong technical focus or even a tiny startup with an interesting idea, while I don't promise to work for you, I'll give your email serious consideration. I don't promise to accept your offer, but you'll get a reply.

Here is an example of a recruiting mail that goes straight into a the trash bin.

Dear Candidate,

I saw your resume in out database and would like to talk to you about some positions with our Direct Client in Naples , FL. If you match to any of the below mentioned positions then please mail me your resume with the job title in the subject line.

Location: Naples, FL, USA

Duration: 2 years +

Start Date: ASAP

Requirement : Java Architect

* 8+ years of software development experience

* Strong OO concepts

* Experience with RDBMS (Oracle and SQL Server)

* experience in leading a development team and working with Fortune 500 clients.

* Good problem solving skills

Please email me your resume if you are interested on [email] or call me at [phone number] if you have any queries.

Regards, [Name]

It boggles my mind to imagine that people expect responses to emails that begin with "Dear candidate"(!!!).

Here is an example of an email that gets answered in the polite negative.

Hi Ravi,

I hope you remember me. We worked together in [company] where I was working as a recruiter. Well I've moved on to [Outsourcing company] and we have a desperate need for senior people. Compensation is not a problem and even if I do say so myself, we have an interesting culture and great projects. if you are looking for a change, do touch base with me.



This is the kind of email to which I hope to forestall having to reply by writing this blog entry. Let me repeat, if your business model is built on selling developer time by the person hour, I am not interested.

Lastly here is a mail I got from a recruiter in a certain company head quartered in Mountain View. It is still very much a slightly customized form letter and if I wanted to work for the big G, I'd probably ask someone I know who works for them to reccommend me, but this letter got a reply.

Hi Ravi,

I would like to introduce myself. My name is [Recruiter Name] and I am a technical recruiter with Google. I came across your profile online and I thought you would be a good fit for one of our Software Engineering roles on our test tool development teams. If the proposition sounds interesting and you would like to learn more, please contact me directly via e-mail or phone. I would love to share with you the exciting approach Google takes to software testing and the amazing advances we are making in test tool development.

Thank you so much for your time and consideration. I look forward to hearing from you and talking to you about a career with Google. Respectfully,

-- [Recruiter Name] Google Staffing [Recruiter Phone Number]

1600 Amphitheater Parkway Mountain View, CA 94043 [Recruiter Phone Number]

Product Company? Check. Technical focus. Check. So I spent about 10 minutes thinking about it and then wrote a "Thanks but no thanks" email. I don't want to write testing tools, (though I know a few people who are) and I am not sure working for Google now is a good idea. Their stock prices are at unheard of levels and Bangalore (where I am located) is probably very far away from the real technical action in Google, if the "Bangalore centres" of other companies I know (and are competing with Google) are anything to go by. I could be wrong, but I've never come across anyone who worked for Google Bangalore. If I knew someone I admired who worked in Goog Bangalore, then yeah sure I'd consider it. I also hear on the grapevine that the old "Google culture" is fading a bit. I'd rather work for a startup with 5 smart people than for Google.

Which brings me to an interesting point. Beyond a certain level of expertise, I doubt if recruiters can be very effective at all in hiring good developers. Most developers are pulled into new jobs by their network of fellow developers / people they worked with before. So here is a hint for recruiters trying to hire good developers. Ask the best developers you have to contact the best developers they know. Beyond a point, I suspect that's the only way.