e人谷龙门阵之代码猴

按:上次写了twitter.com的创业史,读者反映还不错。本来准备了资料,打算继续写其他一些网站或创业公司,今天看到登高CSDN个人空间推荐歌曲,突然想起一事,就打个岔先。和本系列其他文章不同,这篇要写一首歌,以及和它相关的事情。好奇吗?现在开始。

2007年3月份,我去硅谷Santa Clara参加CMP的SD West 2007大会,着意听了几场演讲或课程。最令人兴奋的是Robert C. Martin (Uncle Bob)的演讲“Craftsmanship and the Problem of Productivity: Secrets for Going Fast without Making a Mess”。甫一上台,Bob大叔就手舞足蹈唱起歌来,像极了一只焦躁的猴子。当然这只是个暖场的手段,演讲本身之精彩,自不待言,但Bob大叔那夸张到走调的演绎,让我对他唱的歌产生了兴趣。可惜闪念之间,还是觉得听后面的课程要紧,也就抛诸脑后了。

今天想起来,Uncle Bob的歌声仿佛还在耳边回响,趁着中午有点空闲,查了一下。原来那首歌叫做Code Monkey(代码猴子),作者是Jonathan Coulton。此人住在纽约布鲁克林,是个独立音乐人。在相当一段时间(大约两年)里,他每周创作、演唱并在网上循CC版权协议发布一首新歌。拜新科技所赐,从配乐演奏到主唱,Jonathan可以独力完成。Code Monkey就是这些歌曲中较为成功的一首。因为创作歌曲数量之庞大,Jonathan被外间叫做“写歌机器”。

千万别以为做音乐的都是文盲,人家Jonathan Coulton可是正经毕业于耶鲁大学,而且还当过一段时间的程序员,这首Code Monkey,灵感大概也来自当年做程序员的生活。

所谓code monkey,是一个英文习语,粗略而论有两层意思:其一,低水平的编码人员;其二,程序员自嘲。Uncle Bob在演讲中奉劝听众不要做code monkey,是为了提升听众的编程水平;而Jonathan在歌中唱的,可就用了“自嘲”那层含义了。且来看看歌词——

Code Monkey get up get coffee(代码猴子起身喝咖啡)
Code Monkey go to job(代码猴子上班去)
Code Monkey have boring meeting(代码猴子开了个无聊的会)
With boring manager Rob(一起开会的上司Rob也够无聊)
Rob say Code Monkey very diligent(Rob说代码猴子很勤奋)
But his output stink(但做的东西却不行)
His code not “functional” or “elegant”(他的代码“用不了”或“不够好”)
What do Code Monkey think?(代码猴子在想什么?)
Code Monkey think maybe manager want to write god damned login page himself(代码猴子想,上司可能想干脆自己来写那个TMD登录页)
Code Monkey not say it out loud(代码猴子没大声说出来)
Code Monkey not crazy, just proud(代码猴子可没疯,只是有点得意)

Code Monkey like Fritos(代码猴子喜欢吃Fritos薯片)
Code Monkey like Tab and Mountain Dew(代码猴子喜欢喝Tab和Mountain Dew)
Code Monkey very simple man(代码猴子是个直爽人)
With big warm fuzzy secret heart:(心里藏着点温暖的秘密:)
Code Monkey like you(2X) (代码猴子喜欢你)

Code Monkey hang around at front desk(代码猴子在前台混着)
Tell you sweater look nice(说你的毛线衣真好看)
Code Monkey offer buy you soda(代码猴子给你买苏打水)
Bring you cup, bring you ice(还送上杯子和冰块)
You say no thank you for the soda cause(你说谢谢,不用了)
Soda make you fat(因为喝苏打水会变胖)
Anyway you busy with the telephone(你得忙着接电话)
No time for chat(没时间闲聊)
Code Monkey have long walk back to cubicle he sit down pretend to work(代码猴子走回小隔间,坐下假装工作)
Code Monkey not thinking so straight(代码猴子没想通)
Code Monkey not feeling so great(代码猴子感觉不太好)

Code Monkey like Fritos(代码猴子喜欢吃Fritos薯片)
Code Monkey like Tab and Mountain Dew(代码猴子喜欢喝Tab和Mountain Dew)
Code Monkey very simple man(代码猴子是个爽直人)
With big warm fuzzy secret heart:(心里藏着点温暖的秘密)
Code Monkey like you(代码猴子喜欢你)
Code Monkey like you a lot (代码猴子很喜欢你)

Code Monkey have every reason(代码猴子有理由)
To get out this place(离开这个地方)
Code Monkey just keep on working(代码猴子还是留下来工作)
See your soft pretty face(看着你可爱柔软的脸)
Much rather wake up, eat a coffee cake(醒来,咖啡蛋糕做早餐)
Take bath, take nap(洗澡,睡觉)
This job “fulfilling in creative way”(这工作“创意无穷”)
Such a load of crap(真是废话一堆)
Code Monkey think someday he have everything even pretty girl like you(代码猴子以为总有一天会得到一切,包括像你一般好的女孩)
Code Monkey just waiting for now(代码猴子在等待)
Code Monkey say someday, somehow(代码猴子说,总有一天,总会实现)

Code Monkey like Fritos(代码猴子喜欢吃Fritos薯片)
Code Monkey like Tab and Mountain Dew(代码猴子喜欢喝Tab和Mountain Dew)
Code Monkey very simple man(代码猴子是个爽直人)
With big warm fuzzy secret heart:(心里藏着点温暖的秘密)
Code Monkey like you(2X)(代码猴子喜欢你)

上面的歌词,我只是随手译出中文,可能有一些不准确的地方,请方家指正。其中的Tab和Mountain Dew,分别是百事可乐及可口可乐推出的减肥饮料。

嗯,那就是典型的Code Monkey了……朝九晚五干着毫无激情的工作,巴望着能认识个好姑娘,可惜落花有意、流水无情,风流总被雨打风吹去。他每天做这白日梦:坏日子总会过去,我将拥有一切。这首歌在美国软件技术人群中流行一时。虽然许多中国程序员不喝Mountain Dew,但我相信他们听这首歌也会感同身受——这样的生活,什么时候才能熬到头呢?

再咀嚼咀嚼歌词,还是觉得自嘲的意味多过哀叹的意味。这首歌以Creative Common授权发行,有很多人拿来做成MV。最有趣的是一位Adobe程序员做的MV,他用魔兽世界的人物来演绎Code Monkey,既邪恶又幽默。

Jonathan Coulton弹吉他演唱的不插电版本也很有意思,有兴趣的读者可访问http://technorati.com/videos/youtube.com%2Fwatch%3Fv%3D7s8S7QxpjeY。

e人谷龙门阵之twitter.com

开篇

去年8月21日,我去techweb和大度咨询合办的“IT龙门阵”参加了一次关于类twitter应用的活动。在那次活动中,我讲了一些关于twitter.com创始和发展的故事,没想到颇受欢迎。大家非要板着面孔来讨论“类twitter应用在中国有没有发展空间”,实在无趣,倒不如放下架子听听花絮来得轻松而有借鉴意义——须知外行看热闹、内行看门道,花絮里面自有精彩呢。

在活动结束、打车回家的路上,我就在想,没准可以按这个套路,写一系列IT界创新项目的故事,总的名称不妨叫做“e人谷”,取“恶人谷”的谐音,又表示与“电子世界”相关。我这人向来有虎头蛇尾的毛病,这事光想了一想就放下了。今年做完《梦断代码(Dreaming in Code)》中文版,有次跟和菜头聊天,他说,《梦断代码》这样的书太专业化,应该写点通俗的东西,又牵起我写“e人谷”系列的念头。

这个系列看似轻松,实则不太好写。我讲twitter那次,花了大量时间查资料,甚至打电话到美国去证实一些细节。真要下笔写一系列故事,这个功夫就费大了。想想还是不敢太过托大,还是先把上次讲的内容重新整理一下,先写一篇twitter.com龙门阵吧。是为开篇。

e人谷龙门阵之twitter.com

2007年以来,一句问话响彻互联网:What are you doing?这句话就是twitter.com的口号。Twitter这个英文词的意思,就是像鸟叫一样喋喋不休、没完没了。至少在这一年里面,外间说这个词的也是没完没了。来自Technorati的数据表明,从2007年二月开始,twitter这个词就陡然成为互联网最热门的话题之一,每天都有几百上千篇Blog文章提到它。

任何一个热门词(buzzword),都有其突然蹿红的缘由。Twitter之所以成为众人口中喋喋不休的话题,是因为有个网站采用了它作为域名,那个网站就是twitter.com。2007年初以来,该网站流量暴涨、排名急升,克隆者众。在中国就有饭否、做啥、忙否、叽歪等许多追随者。

Twitter.com的服务说来极其简单,就是让你可以通过网页、手机、电子邮件、或即时通讯工具,发布一条不超过140个字符的短讯息,从而让关注你的人了解你的动态。如此简单的服务,受到如此热烈的追捧,到底为什么?互联网上人才辈出,创业者无数,但出类拔萃、打出一片天地的却是凤毛麟角。这主意又是哪位天才想出来、哪位高手做出来的呢?

当我开始关注twitter.com时,第一件事就是习惯性地去查找它的创始人。看看人家是何方神圣。这一查,倒查出个名堂来了。有趣的是,四个创始人中,为什么CEO Jack Dorsey排在第二位呢?外国人虽然不如中国人这么喜欢排名,但该守的规矩还是要守的。原来,排第一位的这位Evan Williams,才是公司的大老板。这名字听来耳熟,他是何许人也?

这位Evan Williams可是大名鼎鼎的人物。他就是blogger.com的创始人之一。经营blogger.com的公司叫做Pyra Labs。在Pyra Labs之前,Evan Williams还在家乡做过另外一家公司,之后又为O’Reilly、Intel、HP工作过。Pyra Labs的本业是做PIM和项目管理工具,blogger.com可以说是成功的副产品。Blogger.com不是第一个提供blog托管服务的网站,但却是最有名的一个,因为它在2003年被Google重金收购了。说起来,Google收购的好多公司都没什么特别大的发展,blogger.com也算其中一个。

2002年,Evan还在为Blogger.com的未来苦苦奋斗。他有时会坐在旧金山Noe Valley自家屋后用笔记本工作。住在对过的一个年轻人偶尔路过,总会大声打招呼,问“哥们,最近怎样?”Evan也不以为忤,反而有这样友好的邻居而高兴。

又过了一段时间,Fortune杂志上登出一篇关于Evan的文章。Evan一看,总觉得上面的相片是在附近拍的。越看越不对,琢磨半天明白了,就是从那邻居的阳台拍的。这位“友好的”邻居不但未经允许拍了Evan的相片,居然还跑过来自我介绍,而Evan也和他相谈甚欢。这位莽撞的年轻人就是twitter.com的另一创始人Noah Glass。

Noah找到Evan,说自己有个好主意——让用户打电话到一个号码,录音,然后自动发布到自己的Blog上。Evan觉得这主意不错,于是两人合作做了AudioBlogger.com,向blogger.com的用户提供语音Blog服务。这个功能虽然好,可一直没有火起来。

这事让Evan很苦恼,经常和朋友讨论怎么办。有一回,他跟同事Biz Stone一起开车回家,路上讨论说,用户不怎么喜欢在blogger.com上听语音post,但却花钱去下载网上的东西、放到iPod里面。Biz提出,何不做一个网站,让用户同步有意思的语音到iPod里面。其实这概念就是后来风行的podcasting(播客)目录服务。

他们俩找到Noah一说,原来Noah早有此意。三人一拍即合,创立了Odeo.com。不过twitter.com能够推出,还要靠另一位高手出马。这位高手叫做Jack Dorsey,也就是twitter.com公司的现任CEO了。

Jack Dorsey在美国密苏里州的圣路易斯市出生和长大。14岁的时候,他突然迷上了自行车送信员路线安排问题。路线安排问题有点像拓扑学里面的“推销员问题”,但具有相当的实用性。举例来说,出租车公司调度的士接乘客,如何能最省时间和其他成本,就是一种路线安排问题。其实圣路易斯市根本就没有自行车送信员,不过他还是一心一意写了个开源软件来安排路线调度。结果就是到现在还有很多出租车公司用他的软件做车辆调度。

这个爱好让他对最短路径问题非常着迷。一切都要最短,人与人之间的沟通渠道也要最短。在Odeo工作的时候,他想到一个让人与人之间能缩短沟通距离的点子——让别人知道我现在的状态,但又不用非到blog上写篇文章不可。大伙一合计,嗯,用手机短信做这个最合适。

Jack只用了两个星期就写出程序原型。联系运营商获得短信特服号的时间都比这长得多。当时的功能很简单,就是可以用手机发布一条短消息,然后你的朋友能收到通知。

这套短信状态通知系统很快在Odeo内部流行起来。不过这只是Odeo的副产品,Jack也没打算很快发布出去。可是这时有个著名的blogger来捣乱,在自己的blog上爆料,说Odeo的人在搞一个叫做twitter的地下项目,逼得Odeo只好向公众推出。

Odeo的人都是技术高手,自然也有点old-school的奇客风范。他们最初给这个服务申请的域名是twttr.com,除了后缀外,一个元音都没有。还好互联网上不分大小写,否则这帮仁兄多半会把它写作tWttR之类。没有元音i和e的域名twttr,酷是够酷,可惜不便传播推广,还是叫twitter比较靠谱。眼看有外人来访问,只好花钱在这两个元音上,从别人手里把twitter.com域名买下来了。

Twitter.com初入市场,并未造成很大的反响,毕竟它仍然不是Odeo公司主推的产品。2007年3月,twitter.com获得一个机会,陡然成为互联网的宠儿。

每年在美国德克萨斯州奥斯丁市都举办全美最大的音乐节South by Southwest,“西南偏南”。这个音乐节后来又增加了电影和互动的颁奖环节。在2007年3月的音乐节上,好些人用twitter.com发布现场信息,旁边的人也跟着用,结果twitter获得了当年的互动大奖,一下子火了起来。

Twitter团队用极具twitter风格的句子发表了获奖致辞:We’d like to thank you in 140 characters or less. And we just did!,中文意思是:我们想在140个字符内表示感谢。我们做到了!140个字符,正是用户在twitter上的每次发布信息长度限制。

实际上twitter.com是一个匆忙推出的服务,直至在SS音乐节上火爆之时,它仍不具备面向大量用户开展服务的条件——毕竟它只是Jack Dorsey花两个星期业余时间做的。因此,技术团队不断地优化程序及配置架构,在优化上投入的资源,要远远大于在开发新功能上投入的资源。到去年8月份,twitter.com已经能承受10000次以上的连接,这个数字还在不断增长中。而twitter.com也获得资本青睐,从Odeo公司剥离出来,成立了独立公司。

Twitter为什么成功?在我看来,就是它直指人心的这句口号:What are you doing?我们都想告诉别人自己在干什么,也都想看看别人在干什么。表达与窥视,是人类的本能所在。Twitter的可贵之处在于,坚守了这个口号,没有胡乱往上加功能。至于什么micro-blogging,都是别人给扣的帽子,对于Jack Dorsey们,只有What are you doing这一句话而已。

对于twitter的克隆者们,有几个障碍是他们要面对的。第一是盲目的模仿。我看过几个克隆网站,做得很像twitter。Twitter没有搜索框,他们也没有,惟妙惟肖,或许在克隆别人的时候,还真费了一番心思琢磨到底为什么人家不放搜索框呢。其实twitter.com不放搜索框的原因很简单。页面上原来是有搜索框的,因为负荷太大,只好撤下来了。所以这又牵涉到另一个障碍,就是技术瓶颈。Twitter长期只有3名开发人员,但他们对高负荷网站的研究非常到位。看起来简单的互联网服务,背后不一定那么简单。

最大的障碍,是心障,内心的障碍,徒得其型,不得其魂。去年在IT龙门阵上和几位“中国twitter”的创始人聊天,当时他们都没考虑到未来能怎么挣钱。到今年,至少我已经看到叽歪网在商务会展应用之路上取得了可贵的进步。抄没问题,只要你抄出自己的特色,结合中国互联网的特点,走出自己的路来,我敬佩这样的抄袭。希望中国互联网多一点创新,少一点浮躁。希望互联网创业者多一分自信,少一分自负。在做任何一件事之前,都问自己一句话:What are you doing?