2012年10月27日星期六

找工作的感想(中篇)


学校都要开始期中考试了,那么找工作的感想当然也就要到中篇了。
先概括一下,一共投了28份简历,8个内推,20个自己投。发出去的简历全都没有Cover Letter,这也算是一个失误,但其中也包括一点自信的成分,相信自己能够找到工作。
其中16个HR给我回了邮件,8家公司已经过了电话面试一轮,7家公司onsite已经结束。
有2个offer已经发了过来,还有2个承诺了口头的offer,下周应该能够收到。当然拒信也不少,3个拒信和1个口头说还是不要申请我们了。

先从不要我的公司说起:
Microsoft,我从前的老板调到了微软总部,于是我给他发了邮件,打了电话。他很相信我能拿到Google,Facebook和Twitter的offer,而且觉得我更适合这样的公司,于是告诉我不帮我内推Microsoft了,如果找不到工作再联系他,我想了想,觉得他说的也对,于是就没有申请Microsoft。
Palantir,一家我听说后比较想去的公司,胡伯涛推荐给我的公司,不过不是内推。做数据挖掘,有很多国家项目所以很有钱,但是可能是因为我没有Cover Letter的原因,于是简历发过去一周之后就收到了我们不会面试你这样的拒信。
Box.net,和Dropbox提供类似的服务,公司规模不大,130个Engineer,300+的销售人员,主要针对大客户。我个人很想做他们的Backend,不想做他们的Client。可是面试的时候Backend的team面我效果不好,Client的team面我很喜欢我,但由于个人回答上的问题,他们认为和我的职业规划不一致,于是给了我拒信。该公司面试从12点到6点,主要是system design和algorithm,一共和6~7个员工扯淡,非常辛苦。
Quora,我10月26日前最想去的公司,面试设计算法,公司的idea,修改open source的代码。我很喜欢这个公司的主要原因就是因为里面有很多聪明人。比如MIT,Caltech毕业的人,新加坡IOI队99,00,01年的成员,他们的CEO是美国IOI对02年的成员,每个聪明的人都有个人魅力吸引着我。可是由于我open source修改时的表现不好,给公司提改进意见时候一个数学公式没有推出来,很关心公司的盈利计划(因为CEO想10年内都不打算盈利的),所以他们给了我拒信。有幸是下周六还能去湾区参加CEO举办的聚会,到时候还可以聊聊天,认识一些牛人,对此我充满期待。该公司面试从下午2点到6点,轮数不多但是难度比较大,因为之前有和他们的大老板通过邮件,所以面试官都对我比较客气,也留下来吃了晚饭,可是结果还是没要我。

接着是不知道要不要我但是我不是很喜欢的公司:
Google,唉,其实我非常非常喜欢Google的产品,但是在Google的实习经历让我明白了加入大公司就只能面对一个小项目的小feature的痛苦,所以我并不想加入Google。另外,和人聊天了解到很多内容,比如Google并不自己去衡量如何给你订offer价位,很多情况下都是去match别的公司的,比如Facebook,Twitter的offer,于是你要是没有别的公司的offer,就很难和Google砍价。当然,Google牛人多自然不care一个新员工的重要性,这都可以理解。用来当养老的公司不错。Google的面试是intern转正的面试,所以在实习期间直接给我onsite面试了,结果我已经不care了。
Chopper Trading,我之前调查了一些trading公司,但是后来觉得和自己的理想不一致,于是都没有投。这家trading公司是一个师兄把我的情况介绍给了一个师姐,于是联系了一下我。公司很牛逼,但是我没有什么感觉,面试的问题非常的基础,但是基础的往往就是我们容易忽略的,比如List和Vector的长处和短处分别是什么?Virtual function的继承以及优缺点等?问的我一头雾水。

要我但是我并不感兴趣的公司:
Imo.im,小公司,程序员一共十几人,主要产品是手机上的聊天软件(iphone上用来登录Gtalk的主要软件),还有一个web平台。他们的面试好多轮,每轮两个员工来面你,面完你就认识他们一半以上的员工了。中午和CEO吃午饭,一路上聊了很多聊天软件的问题,比如Gtalk的不爽的feature,中国市场的微信,QQ,陌陌。他知道微信和QQ,但是不了解其中一些神奇的功能,比如摇一摇和附近的人。CEO人很nice,给我的offer也非常的高,估计是因为他们面试全都是算法题目,而且是在电脑上写不是在白板上写,所以我解决的比较好吧。但是我主要担心的是和别的公司竞争聊天软件没有什么市场,所以拿到了offer也不是很想去。
Storm8,叶阳师兄推荐的公司,做手机游戏。他们的发家史比较有趣,CEO和co-founder都是facebook的员工,观察到了Zynga在facebook上的成功,很早就开始做手机游戏(iphone1时代)。营销策略非常完美,他们从来不投广告,因为他们有很多游戏都在iphone app排名前50,所以他们在自己的游戏里给新游戏打广告,很容易让他们的新游戏进入排行榜前列。美国人为了玩游戏爽,很愿意在游戏里面花钱(不是购买游戏,而是购买游戏币)。所以他们的盈利非常高,并没有风头介入。从offer的角度上来说,钱不如Imo.im多,但是股票给我非常多,比我知道的其他人都高,Sign Bonus也很高,比我知道的new grad在他们工作的都高,让我很是心动。可是!他们的offer只给48小时考虑时间,这是某些硅谷公司的挖人手段,欺负新手!
我本来不想做游戏,觉得游戏公司和我想要去的互联网公司差距太大,可是面对白花花的银子忍不住动心,后来和唐总打了个电话,终于打消了我做游戏的念头。做游戏是个大坑,往里跳了之后世界就不一样了,所以要是热情不够,还是不应该做游戏的。

口头要我且我感兴趣的公司:
Facebook,面试facebook的过程非常奇葩,电话面试的时候貌似表现不好,于是就加面一轮。当时我在湾区,于是和他们的HR商量直接onsite,他们的HR在onsite前4个小时给我打电话确认了onsite。我满心欢喜的决定去onsite后,发现只是onsite进行第二轮电话面试。聊天中我告诉HR我已经有别的offer了,于是完成了onsite的“电话”面试,开始和facebook的朋友一起吃午饭的时候,突然接到HR的电话问我有没有时间直接下午进行onsite,那我当然有了,于是下午就连着onsite了。Facebook面完后就给我发了一个打算给我offer的邮件,让我等一等,因为还有一些手续。其实facebook想要招我的那个组我并不感兴趣,做一些给他们marketing,ads的internal tools,但是由于听说了下半年facebook给的疯狂的Sign Bonus数额,我不得不把facebook列为我感兴趣且口头要我的公司了。
Klout,这家公司的主要业务是分析用户在社交网络上的影响力,推荐大家都去注册,提升一下我的影响力。公司规模不大,算上sales什么的也就70~80人,公司创立于09年,但是已经盈利了,且9月底与Microsoft签下了一个很大的合同。他们做的东西很有趣,且作为小互联网公司能盈利我非常感兴趣,所以多说一点。
一开始去的时候,HR说CEO和他们的Chief Scientist很欣赏我的简历,要过来Say Hi,我当然非常荣幸了。于是开始和他们的CEO聊天。他们的CEO Joe辍学创业,和朋友开过几家公司,听到我讲去小公司的原因和职业规划的时候,对我表示了赞赏,同时,我自然也欣赏他们的公司,最后他给了我张名片,让我有问题可以给他发邮件。第一个面试的是一个印度人,在Yahoo工作了几年(这是我后来才知道的,我知道前还告诉他我不喜欢Yahoo,真是太囧了),该印度人问了我system design的问题和map reduce的问题,我感觉回答的不好(后来收到一个人的来信发现的确这个很吃亏)。第二个面试还是印度人,不过面的是算法题,轻松解决。中午一起吃午饭,和他们几个新来的员工讨论了些问题,感觉那里的人非常友好,并且我还得知一个一起讨论的美女是清华计算机系3字班的学姐(贵系3字班女生出人才啊,林希德,项荣璟,还有这个美女)下午第一轮面试是Chief Scientist,面了一个简单的算法题,聊天中才发现他们会重视我的原因,主要是贵系前辈们表现的好。该Scientist是当初Facebook的第二个中国人,之前看我的简历的时候发现搞过竞赛,于是问我认不认识符文杰-付老大,这时候死马也要当成活马医啊,我当然说我认识了啊,于是他还给我讲他和魏晓亮一起工作的故事,虽然他本科是复旦的,但这个时候我感觉就是自己人啊,所以聊的很投机。最后一个面试是他们的Backend manager,擅长系统,面试内容是聊天,所以我就把自己仅有的一点数据挖掘的知识讲啊讲,努力表现一下。
其实这次面试之后,我才明白面试结束并不是最后的结束,因为我知道第一个人我面的效果很差,如果坐以待毙的话肯定会死。但我非常喜欢这家公司,美国人相信数据和个人的影响力,公司够小不到100人且盈利,晚饭之后我就开始撰写邮件。先给chief scientist发邮件,告诉他我对中国来湾区比较成功的前辈的崇拜之情,以及看过的分析influence和community detection的paper。再给ceo发邮件,告诉他我对他们公司解决的问题的喜爱与热情,以及对于加入“小公司”的憧憬。于是今天收到了他们的邮件,scientist劝我多了解了解hadoop,hbase,hive这些open source,HR告诉我大家很impressed且我周一谈一谈,ceo给我了很好的feedback且让我有问题可以继续联系他。

中期感想,虽然收到的offer都不是自己最感兴趣的,但是得到了自己很感兴趣的公司的口头offer,算是一个比较好的期中答卷了。
我很感谢周围的人的帮助,无数人帮我内推,比如郭华阳,冯威,谢居晨,叶阳,项荣璟等前辈。
我同时对硅谷某些公司的老板非常感谢,比如Joe,Ralph,Adam D'Angelo,他们很关心潜在的员工,并且愿意与他们交流,得到一些公司外,或者来自不同国家的人对于他们的产品的看法,这种氛围让我觉得自己非常的荣幸。
最重要的是在我选择职业上给了很多建议的人,郭华阳对每个产品都能提出很宝贵的批评意见,让我面试的时候能够更好的给公司的人展现出自己能做出的改变。叶阳师兄推荐的游戏公司虽然我不是很感兴趣,但是他创业的想法和精神一直影响着我。李老师告诉我很多工作经验,让我明白在公司工作的同时要提升自己成为某一个方面的专家。唐总深刻的告诫了我做游戏要有精神,让我坚定了自己不做某些选择的想法。还有在Klout认识的丁前辈帮我分析了下我投的那些公司的长处和短处,以及发展前景,如果没有他的分析,我就不会知道Quora十年内都不想赚钱的这样的想法,真为当初打听Quora怎么赚钱的行为感到窘迫。
最后,这只是中篇,因为我还打算去面一下Twitter,Yelp,Foursquare和Dropbox,他们专注的领域有很多不一样的地方,如果让我分类的话我觉得四家公司完全是做不同的事情,要抓紧自己还在学校的时间多和不同的公司做做交流,多了解行业动态。

写不动了,待续。

2012年10月15日星期一

[Read] Why Choose Pyramid

http://www.quora.com/Is-pyramid-is-better-than-turbogears-2
Pyramid is a low-level framework, like Pylons.
The design goals of Pyramid are to provided just a little infrastructure and let the developer decide what s/he wants to actually use.

http://www.quora.com/How-do-Rails-vs-Flask-vs-Pyramids-compare-as-web-frameworks
Using a lot of tools that are not traditionally used with Django, i.e. MongoDB. Django to be too tightly coupled.
Flask: simple and clean. Doubt whether there are enough plugins at the moment. Don't know whether Flask will get big in the future.
Pyramid: Bigger than Flask, smaller than Django. New, fresh, quite stable and widely used in industry.
Raild: The language is not as clean as python. Huge community and lots of plugins. There are some problem like scale.

http://www.quora.com/What-kind-of-web-applications-does-Pyramid-specialize-in
Pyramid does not 'specialize' on a specific kind of web application. Pyramid is much more loosely coupled. One of the most visible demonstrations of this is that Pyramid doesn't come with an Object-Relation-Mapper or data access layer by default.
Pyramid is also more low-level framework compared with Django. It does less out of the bow, and assumes you'll write more functionality yourself, or plug in other libraries to help you.

http://www.quora.com/How-difficult-is-the-Pyramid-framework
The author is able to setup his first Pyramid application in three hours.

http://blog.fruiapps.com/2012/05/Choose-your-Python-Web-Framework-the-Hard-Way

2012年10月11日星期四

[Linux] Connect to My EC2


To use SSH connect to my EC2:

ssh -i "key file" ubuntu@ec2-23-23-28-26.compute-1.amazonaws.com

To use SCP copy file to my EC2:

ssh -i "key file" "source file" ubuntu@ec2-23-23-28-26.compute-1.amazonaws.com:"destination file"

Now I plan to deploy Django on my EC2 server!

2012年10月9日星期二

[Linux] Auto Indent in Vim


Basically, other IDE already support this function.
For VIM, we have to type in following command in ~/.vimrc

set cindent
set smartindent
set autoindent
set expandtab
set tabstop=2
set shiftwidth=2

Also, there is a documentation about indent in VIM available here:

2012年10月4日星期四

找工作的感想(前篇)


最近有些神经衰弱,每天一点左右睡觉,七点多就自然醒了。
白天很困,今天还在校车上睡着,差点就坐过站了,囧。
因为打算这个学期拿Master毕业,所以最近一直在忙找工作的事情,投了将近20家公司,当然看情况也许会继续投一些公司,和将近10家公司的HR有了一些联系和了解。
最主要是联系到了一些贵系的前辈,所以想写点东西记录一下想法。

找工作最重要的是什么?
我认为是个人未来的发展前景,但是我一直不了解职业规划什么的,没有真正的思考过。
我一直认为自己还年轻,可以多尝试,但是其实我并没有定下好的尝试方向。与李老师,叶阳学长的交流过程中,我获得了一些启发。
每个人都有创业的梦想,然而不一定能实现,在工作中可以选择一些公司去培养自己,使得自己变成一个generalists,对于很多方面都应该去积累经验。
如果想跳槽,升职,或者成为一个公司的骨干,也需要培养自己成为一个specialist。
现在才23岁,有充足的时间进入公司学习,成长,发现自己的专长,然后内外兼修,使得自己各方面得到充足的发展的同时,掌握一门拿手的技术。

这就不得不提到大公司和小公司的区别了,我在两家大公司实习过,Microsoft和Google。在Microsoft主要从事研究的实习,虽然只是面向某一个产品的某一个方面,但是我积累了很多知识,现在某一领域如果出现新的paper,我都能初步理解他们的做法。在Google的实习经历比较糟糕,加入了一个大产品的小部门,每天就做一点点事情,感觉并没有学到什么东西。
这两点经历让我对未来选择小公司去工作更加坚定,去小公司可以更好的学到一些本事,掌握一个产品End to End的开发过程。并且学习一些开源软件的用法,而不是大公司自己内部的架构。

选择一个小公司,相对来说就没有那么稳定,而且可能会比较繁忙。
需要常考虑的一个问题是这个小公司的前景如何?拿什么赚钱?是否会上市?是否会被卖给大公司?
还有一个严重的问题就是公司文化如何?我不是一个很social的人,所以如何融入公司,表现出自己的价值是很重要的,需要考虑的方面。
目前HR问我有什么问题询问,我常常只是问问这个公司现在有多少人,了解一下他们的规模。今天经过李老师提醒,才发现原来还是有很多问题需要考虑的。

关于经历方面,我突然发现有三点经历对我的事业起到了很大的帮助。
1.高中搞竞赛,取得了不错的成绩,更重要的是进入了一个不错的圈子,认识到很多牛人,这些牛人直到今天一直对我有很大的帮助,比如李老师,唐文斌,龙凡,郭华阳等。进入一个好的圈子的还有一个好处就是彼此认可对方的能力,对对方的未来有期待,这对于找工作有很大的帮助。
更加庆幸的收到一个IOI meet-up的活动邀请,由Quora的CEO,前Facebook的CTO举办的。因为他在2002年也参加过IOI,所以想把这个圈子里的人聚集起来聊一聊,想想能见到很多老朋友,心情莫名的激动起来。
2.上大学选择了清华计算机系,这也是一个不错的圈子,与上一个圈子不同的是这里的很多人他们也许并没有出色的竞赛成绩,但是他们在计算机圈内有一些我觉得很不错的成就,比如叶阳学长,有创业过,对选择工作有很深刻的理解,并且给我推荐了一家不错的公司。
3.参加ACM竞赛,与高中竞赛不同,更多要求更快,更准确的coding,写出bug free,clean maintenance的代码,在工作面试的时候非常有帮助,而且实习期间老板也觉得我写的代码比较易读。

最后,在与人交流方面,我发现不在硅谷还是欠缺很多。
从前我只注意大公司,比如Google,Facebook。通过与在硅谷的人交流,我开始注意到一些不是那么大的公司,比如Box,Storm8,Palantir。在硅谷的跳槽很频繁,但一开始的职业选择也同样重要,如果不了解硅谷的一些故事,那么很难想到要申请这些中小型的公司。这些公司分别是不同的学长或者同学推荐给我,可以看出与硅谷的人多交流的重要性。
因此,我开始更加觉得现在跳出UCLA去湾区是很重要且正确的一个选择。

待续。