所有由jianshuo发布的文章

新年快乐2011

日子在不知不觉中过去,做完网站组第四季度的offsite,回到公司看过几个功能,一抬头,已经6点半。回想起来,那个时候,我还完全没有意识到一个严重的问题:这已经是2010年的最后一天。直到晚上,要写英文blog的时候,才意识到我该和2010年说再见了。

很少有一个年像2010年一样让我不喜欢。我翻了翻我的blog,发现从第三天我就很不喜欢。33岁的自己在2010年过得有些狼狈。书并没有读几本,朋友没有多认识几个,忙碌却不记得“2010年自己做过的一件事”是什么。好在,2010年结束了,我这应该送束花给它,再见,不送。

明天就是2011年了。对信念我还是充满希望,希望这是快乐和充满智慧,朋友的一年。也祝大家新年快乐!新年常联系,多谢点东西,也开始多写点微博

菠萝和筷子的故事

公司里面有很多的典故,菠萝和筷子是比较流行的一个。今天在Donews谈起,让我想起来提一下。

百姓网每天都会供应水果。夏天里面最受欢迎的是菠萝。阿姨把切好的菠萝泡在盐水里,用乐扣乐扣的大盒子装着放在进门的桌子上。不过阿姨经常忘记拿筷子,让吃菠萝心切的同事们围着菠萝打转。这种事情在每个公司里呆过一段时间的人都会遇到。

所以我们很多时候讨论问题的时候,就常用这个场景说事儿。我们说

我们宁肯有菠萝而没筷子,也不愿意反过来,有筷子而没菠萝

最理想的情况是既有菠萝也有筷子,但如果一定要在两者中间选一个的话,大家更容易看到事情的实质,是菠萝,而非筷子。有了菠萝,就算是拿手抓也能吃到菠萝,而没有菠萝,就算是筷子刀叉俱全也没有任何帮助。

网站有用是菠萝,美观是筷子;买到便宜东西是菠萝,节省时间是筷子。。。能举出来的例子太多了。在资源有限的情况下,先解决菠萝的问题,然后才需要考虑筷子。。。至于用户嘛?有了菠萝,他们自然会找到筷子的替代品的。

交大,我明天回来

明天晚上,就是周四的六点半,我会回到我生活过两年的闵行交大,在铁生馆200号宣讲厅做百姓网的校园招聘宣讲会。

铁生馆

虽然铁生馆在现在大得没边没沿儿的交大里面显得不是特别起眼,却是我印象最深刻的一幢楼。在95年的时候,交大的闵行没有几幢楼,我报道的第一天急着找厕所才第一次冲进这幢三层小楼。我以为大学校园应该很大,从拖鞋门走到铁生馆应该仅仅是一个开始,后面还有大片的校区。结果,从厕所的窗户望出去,已经看到了交大的最北边围墙。说实在,相当的失望。现在的交大闵行已经比15年前大了很多,学生也多了很多。我相信现在的同学会比我们那个时候更聪明,更有竞争力。

一个小小的铁生馆,在当年除了上中下三院以外,也只有这么一个还比较轻松的地方。铁生馆200号(就是这次办宣讲会的地方)是自动化系那几年每年开迎新晚会的地方,也是当时除了留园以外唯一的舞场,曾经在里面张牙舞爪的消磨了很多个周末。

我还是很开心这次的宣讲会放在铁生馆。

宣讲会

明天百姓网在交大招聘实习生和应届毕业生。这是百姓网在交大的第一次正儿八经的招聘宣讲会。因为我在交大毕业,所以希望我能尽我的所能,帮一下还在学校里面的师弟师妹们,提供尽可能多的机会。

当我还在学校读书的时候,发过成堆的牢骚,旷了无数的课,不务正业了整整4年,虽然学业上面没有什么建树,回过头来却正是这种相对宽松的气氛更容易产生创新的灵感,能容易产生“通才”,能够随着自己的性子在所有好奇的领域探索。这也是我们的招聘,从来不限制专业的原因。百姓网现在来自交大,复旦,同济的优秀的同事,不仅仅有计算机系的,也有汽车,船舶,旅游,心理学,电工,自动化等各个专业。大学里面培养的是一个人的气质,“聪明”,和态度,而不是记住了什么。

明天我们招聘的职位都在这里:http://jobs.baixing.com,包括技术和非技术的实习生和毕业生职位。欢迎大家先看一看。

百姓网

我(或许是充满偏见的)喜欢百姓网和优秀的同事,坚信这是一个奇迹发生的地方,是一个可以通过互联网改变世界的地方。交大喜欢创新,喜欢自己鼓捣写东西,喜欢接受挑战的同学,我相信会像我一样喜欢这个地方。

12年前,微软在包图一个宣讲会,我闲逛经过,看到很多人,懵懵懂懂的探了个头,就被吸引参加了笔试,居然进入了50名的面试名单,最终拿到唯一的一个本科生offer,从而改变了我的生活轨迹。这一切皆来于巧合。生活就是一个个巧合组成的,你永远不知道会发生什么。说不定明天对于我们和你来说,就是一个重要的巧合。

欢迎大家明天晚上在铁生馆参加我们的宣讲会。

时间:2010年11月25日6点30分。地点:交大闵行校区铁生馆200号。

百姓网今晚在复旦的讲座

从客齐集到百姓网的这几年,我们的活动从来没有离开过校园,比如这个列表:客齐集最近的大学公益讲座。百姓网的员工都离开学校不久,如果能用讲座的方式给现在还在学校的学弟学妹们一些帮助,是我们最愿意做的事情。

这一系列的活动的主题是:百姓网-灯塔沙龙.

这个沙龙主要目的是为热爱互联网行业、正要走向工作岗位的优秀在校大学生解答就业路上遇到的困惑,希望从过来人的角度给大家支支招。现在正是各大公司在学校里面开招聘会,宣讲会的季节。如果听了几个宣讲会,希望找人聊一聊,了解些行业和职业发展的情况的同学,可以过来。

这一期就在今晚(2010年11月3日,周三晚上)。本期主题为

牛人师兄分享在精英公司的“疯狂”成长经历

具体时间地点如下:

【时间】 :2010年11月03日(周三) 晚7:00-9:00
【地点】 :复旦南区 大家沙龙(国权路、政肃路路口 复旦南区教育超市旁)

今天的四位百姓网的员工,全是从复旦大学交通大学毕业的师兄,有趣的是他们多样的背景。我们的运营经理5年前来百姓网做实习生的时候,志向是HR;我们的市场经理在交大读的是心理学;我们的架构师和技术专家曾经是复旦FTP站的站长,而复旦信息办的老师在几年后成为了百姓网的系统管理大拿。。。或许这些经历对正在找方向的同学们有帮助。

今天晚上我们会有四位嘉宾和一位主持人,超过百姓网六分之一的同事都会在台上,加上我这样当酱油的,估计我们这个公司有一半的人都会在现场了。如果大家感兴趣,欢迎晚上参加我们的活动。

后注:

这是一系列活动的第三场。第一张的嘉宾是来自Google的Lois,微软的王晨,和百姓网的王奕;第二场是来自Google的David,微软庆胜,腾讯的邹蓉和百姓网的玉苏。现场的气氛相当的好,大家问了很好的问题,回答也相当精彩。这是两周前的活动的照片。

道路的编号

在新加坡,发现一个有趣的现象:在一个人口只有4百多万,面积只有720平方公里的地方,邮政编码居然多达6位,而且看起来还用不像中国的200030这样空荡荡的样子。比如:

Orchard Hotel Singapore
442 Orchard Road
Singapore 238879

这一百万种可能性等于每720平方米就有一个邮政编码。这是不是有点多了?后来一打听才知道,新加坡把每一个幢建筑都编了一个号码。在新加坡的GPS或者Google Maps上,只要输入238879,就可以唯一的表示一个目的地了。

与此相似的美国道路也有这种感觉。有一次从西雅图打车去如下地址:

15600 NE24th St

出租车司机一路狂奔,直接拉到。我说,你怎么知道一万六千多号怎么找?他说很简单呀,15600就是地156路和24街的交界口。西雅图从1道往西,一路遍号过去,到156道,158,159, 160,161, 162这样编过去,只要知道了门牌号,就知道了在哪个街和那条路附近了。同样的2400, 156 Ave也是同样的位置。

P.S. 今年的月饼节,就在新加坡过了。没有月亮。

高速公路编号的学问

道路的标号是一门有趣的学问,把繁杂的物理世界变成井然有序的数字,需要花一点心思。顺便把中国和美国解决同样的问题的方法比较一下。

主干道的编号

中国刚刚诞生的高速公路体系在编号上面,和美国50年代开始修建的艾森豪威尔高速体系基本上是一致的。奇数表示南北方向,比如上海附近的G15(沈海高速), G25(长深高速),洛阳附近的G55(二广高速)等,偶数表示东西方向,比如上海附近的G40(沪陕高速), G50(沪渝高速), G60(沪昆高速)等。美国一样,西雅图那里的东西的I-90,南北的I-5;旧金山那里东西的I-80和南北的I-5等等。。。总体说来,本着5结尾就是南北骨干,0结尾就是东西骨干的方式,中美一致。中国特色的是从北京开出来的几条一位数字的放射线,比如G1京哈, G2京沪 – G7京乌的7条线。

和主干道相连的高速

考虑到和主干线相交的地区干线,中国采纳了和美国不同的编号方式。中国使用四位编号,和主干线相交的环线,在主干线后面加一个0(好似一个环的样子),然后再加一个数字编号。比如上海的郊环线(A30)就因此编成了G1501,过了杭州湾跨海大桥以后,在宁波画了第二个圈,就是G1502。G25在南京画的一个圈就是G2501等等。如果是和主干线平行,第三位就是一个1,好像一条线。比如G15在经过山东时候的G1511,在宁波附近的G1512。。。

美国则所有的主干线的支线都用3位数表示,后两位是主干道的编号,第一位如果是偶数,表示平行线,就是沿着这个枝杈还可以回到主干线的那种,如果第一位是奇数,就是垂直线,离开了就再也回不来的意思。比如在硅谷,主要的高速全是80结尾,比如I-80, I-380, I-280, I-680, I-880. I-80是从西海岸的旧金山到东海岸的新泽西一条笔直的跨越北美大陆的高速,也是那么多n80的命名之源。I-280, I-680, I-880组成了一组围绕湾区有重新回到I-80的旁接线。在洛杉矶,因为城市里面交错着I-10和I-5两条大路,结果就有了和I-10垂直的I-110, I-710(都是南北线),和它平行的I-210(东西向),还有和I-5这条南北线垂直的I-105(东西),和平行的I-405(南北)。

和老系统兼容

中国和美国除了新生的高速公路体系,都有一套已有的国道体系。美国的就是US开头,比如硅谷形成依赖的US-101,以及被称为美国的母亲路的US-66(《汽车总动员》所描述的那条)。中国则是国道,比如上海到西藏的318国道,上海到新疆的312国道等。

两套数字编号系统,很容易发生标号的混乱。中国避免这种问题的方法是采用了不同的位数。一位,两位,四位数字,就给新的高速公路体系,而三位数字,留给了老的国道。

美国则用另外的办法。他们的US国道体系是两位到三位之间,顺序增加,而高速公路体系也是两位到三位之间。如何在一个命名空间里面和平共处呢?为了分开,新的高速体系从东南角,就是圣地亚哥开始,向北,向东逐渐增加,而老的系统从东南角开始,向南,向西逐渐增加。这样保证了在一个区域,不会有两条名字相同,却属于不同体系的道路。比如硅谷的US-101和I-80和稍远一点的I-5,就一大一小。为了避免在美国中部(东西的中部,和南北方向的中部),都会编到5左右,他们的新高速彻底跳掉了50号和60号以及之间的编号。这下大家就不会碰到了。比如在亚利桑那州里面,碰在一起的两条路分别是US-66和I-40。

出口编号

除了大的编号以外,中国的新的高速公路体系的出口开始采用了里程编号体系,就是从开始处的公里数的整数命名这一段上的出口,比如从北京出发,在上海段的203出口就到上海了,也就是1203公里的地方(超过1000,只取后三位)。美国的高速也大抵如此,却没有全国的规范。

虽然韩寒对于编号的必要性进行了有理有据的质疑,我依然喜欢新的全国编号系统。开在延安路高架上,看到G60,好似前方就是昆明,到了G15的交界口,左转是海口,右转是沈阳。编号的统一,的确为全国的出行提供了方便。当然,我这里讨论的仅仅是编号。如果考虑到出行的成本,那又是另外一篇文章了。比如上上个月,从洛杉矶两个人飞到Las Vegas,机票要300多美元,如果开车过去,5个小时,30块钱美金油钱就到了,没有任何路上的费用。之后我们一口气开了2000多公里,经过大峡谷,Sedona,凤凰城,墨西哥边境,到圣地亚哥,再回到洛杉矶,就是200美元。油便宜和路便宜当然是一个重要的因素。在上海,去一趟南通回来,油加过路费就已经六七百块钱了。。。

我们不喜欢注释

今天下午的乐高,讨论了代码规范中注释的部分。做为实用主义者,我们不喜欢过多的注释。“让代码的速度跟得上思考的速度”是我们一直提倡和追求的,也就是代码要写得入如注释般清晰,简洁,让人可以如读英文文章一样的读代码,而不是读注释。

我们干掉了所有PHPDoc才认识的东西,就是/** @param这样的东西,,另外注释统一了用两个斜杠(//),而不用斜杠星号(/*…*/),以强化就算有,也要短到一行的意思。

当我们强调注释或者文档的时候,或许是在解决错误的问题。越长的注释,就意味着越过期的注释。

我们反对过度文档,而尽量用最简洁的代码来取代它。与其在注释上花功夫,不如在函数和变量的命名上多推敲,花时间多做重构,把分层和封装做好,把抽象做好。

“没有比提高一个没有必要的事情的效率更没有效率的事情了。”一次一次在开发过程中被验证。

说到底,写代码如同写文章,有十几种不同的写法,无非在“推”和“敲”两个都不错的字中寻求最佳的那一个,或者在一个恶心的A和一个恶心的B之间徘徊,绞尽脑汁寻找一个不是那么恶心的C。说到底,没有绝对的对和错,只有合适与不合适。一群人,在一起磨合出来一种共同的思路,才是有力量的开发团队,否则只是乌合之众。

IMG_0071
2010年9月的一次乐高日

后注:看看我们刚刚做好的一个页面

Blog的头8年

要不是我的好心读者提醒,我都忘了今天是我写blog的八周年纪念日。从2002年9月11日到2010年9月11日这2922天中间,我总共写了2805篇英文blog,338篇中文blog,合计3143篇,平均每天1.08篇文章,可以说,在过去的八年里面,我还是坚持了每天一篇文章的频度。在8年前写第一篇blog的时候,真的没有想到写blog,会占据我生命的十分之一的时间。既然是第九年的第一篇blog,总要总结些什么,才对得起这特殊的日子。

写blog的意义

写blog的意义,远不不仅仅是分享,而在于自省。记录是为了更好的观察和思考。我们以为自己知道,或者以为自己想清楚了,若非用语言清晰的表达出来,远不及自己想象的那样。所以有了blog,写的过程是思考的过程。在文章写完,点击发布按钮之前的那一刻,blog的作用其实已经达到了。关于这点,可以参照以前和阮一峰的对话

每天不超过一篇

一件事情可以坚持每天做,连续八年,要说是挺不容易的,尤其对于绝大多数东西都没有常性的我。要说其中的秘诀,可能源于一个早期的原则:绝不在一天写超过一篇blog。这个原则看似和绝大多数人相反,它可以保证自己有一个小小的想写的文章的队列,不至于轻易断掉。所谓要想长流,必要用细水。这条自己的规矩在6年前废除了,但在初期的两年,对于养成一个习惯非常重要。唐诗(或者twitter)对于字数的限制,反而促进了创造是同样的道理。

上海

blog的8年,是上海巨变的八年,也是中国社会发生深刻变革的八年。我很高兴可以从一个普通人的视角,记录上海这个城市的生活,希望过了一个世纪以后,就算从报纸上已经看不到的细节可以在无数blogger的记录上找到。我从来不敢说我在记录中国,因为按照盲人摸象的道理,我仅仅对于上海徐家汇到浦东一线的一小部分有所涉及,我也仅仅认识这个城市几十万分之一的人。与其通过自己摸到的象腿揣测大象也必然像柱子,不如认真的记录这条腿是什么样子的。也只有一个个数据点的真实,才有可能在合适的时间,拼出完整的图景。这种记录方法,和美国现代艺术馆里面《Here is New York》展览中,用无数的业余摄像机记录911时间的方法类似。

中国和世界

在过去的8年里,Wangjianshuo’s blog这个英文的blog忠实的通过记录日常小事的方式,帮助了一些希望了解中国的老外。其中,34412篇对于我写的东西的回复,像上万个人热情的老师教育着一个学生,就是我。可以想见一个人在一字不落的阅读了针对自己观点的三万多条回复之后会在对这个世界的认知上有什么样的影响。这个blog也记录了十几次的美国之旅,以及每次的感想,如何从表面上了解这个不同与中国的社会,到和从政治到普通美国人的上百次聊天中慢慢了解到的更深的东西。经历这件事情之所以宝贵,是因为它只可体验呢,无法传递,却可记录。

盲人摸象和小马过河

如果用两个成语来形容我在这八年和几万对着交互的过程中学到的东西,基本上就是这两个成语。用心的体会这两个成语,可以让我们更加安静和坦然的面对观点的不一致。我们必须接受这个世界对于任何一个问题,都有可能有超过一种相互相反的正确答案的事实。或许,我们仅仅看到了同一个事物的不同部分,或者对同一事物的相同部分有不同的衡量标准而已。一个事物,可以同时是柱子也是扇子,既深又浅。。。

未来

最近的一年,是写blog最累的一年。当生活的重心因为逸凡而偏向日常的琐事,当百姓网的业务不可避免的越来越复杂,或许没有前些年的心境来弯下腰来,观察蚂蚁并且饶有兴致的写写东西,脑子里的思绪,也越来越难于用blog来梳理,但blog作为我自己成为一个更好的自己的工具,依然非常的有效。我希望在我写blog第十年的时候,可以有一个小小的几个人的庆祝仪式,然后迈入我写blog的第二个十年。

在这里感谢阅读我的blog的各位,还有留言的各位。

如果我有时间,我会写更短的代码

eBay的代码量已经比Windows+Linux更多了。从我看来,这绝不是一种恭维,而是彻彻底底的技术人员的失败。从代码的角度,越短的代码,就越有力量。

Mark Twin曾经在给一个朋友的信中说道:

我亲爱的朋友,如果我有更多的时间, 我就能给你写更短的信了。

文字是这样,代码更是这样。

有了面向对象的方式和一些简单的设计模式加一些重构,代码可以变得非常的简单,明了,易读,却依然保持灵活和强大。在百姓网,我们曾经把2000行代码重构为250行(迷你朝歌),然后又把另外几千行代码重构为250行(迷你荆州)。我觉得250行代码是一个神奇的数量,很多的功能模块,就算用PHP这样并不是完全面向对象的语言,也应该控制在250行之内。我个人的编程习惯和目标是,把每个函数控制在7行代码之内,把函数的数量控制到最小,用最短的代码完成功能。我个人用的简化代码最有效的方式,就是写一段代码,彻底删掉,重写,然后再删掉。在如此十几遍之后所得到的代码,通常比第一次要好得多。

百姓网在过去的一年里面,每周四下午的乐高日,就是定期的重新审视已经写好的代码,并且进行重构的固定时间。取名为乐高,寓意就是,我们希望产生的代码就像乐高的小积木块一样,足够小,足够灵活,却可以以此组合成各种东西。我们的代码,就应该是那些小乐高的积木。

乐高日每次重构竞赛的优胜者,会得到一个乐高积木。我们发的第一块是乐高最经典的红色3001号模块,然后是3002,3003。。。希望我们的代码可以像乐高一样经典。

对于小和短的追求,是为什么百姓网的每个技术人员的第一周一定可以在250行代码之内,一个小时之中,把百姓网的基本功能完成一遍的原因。

为了更好的代码,每天上线前,产品的所有人员(10个人)都会收到所有代码总行数邮件。代码量的增加,对于我们来说不是件好事。我们用拉锯战的方式在功能增加的同时,把代码量牢牢地卡在原地,并且不断减少。我们希望有一天,网站运营的PHP代码会被压缩到5000行之内。

就像对于代码的数量的追求一样,我们追求代码的质量,我们追求最实用的解决方案(我们是彻彻底底的实用主义者,希望用最小的代价解决问题),我们也追求网站的速度,内容的质量。。。技术人员,就应该有些技术人员的样子。毕竟,无论做什么,都要有些追求的。。。

baixing.in.sand.jpg
百姓网在威海海滩。沙滩上的字是:weihai.baixing.com

百姓网在威海

公司这次出游经过集体投票,选在了海滨城市威海。这里是全体参加的同事的合影。

数一数,在过去的几年中,我们已经一起去过了龙王山,青岛,柬埔寨,宁海,嵊泗,厦门,成都,三亚,各个小团队出差也已经分头去过美国的旧金山,加拿大的多伦多,荷兰的阿姆斯特丹了。这就是作为精干的小团队的一员的好处。百姓网要做一个轻公司,每个人都真正可以施展才华的公司。

对了,如果现在投简历过来(我们有从实习生,助理程序员到架构师的职位),或许可以赶上百姓网的下一次出游,初步计划是游轮往韩国,日本方向进发。希望那艘大船上面有你。