(发表于《麻省理工科技创业》2011年6月刊)

“黑客(hacker)”一词已被误解特指为专门攻击别人网络以获私利的坏家伙,虽然这些人的准确指称应当是“骇客(cracker)”。在如此语境下,一本名为“黑客与画家”的书显得有些怪异。即便回归“黑客”的本来含义——专家级程序员,书名似乎也纯属哗众取宠:计算机高手和画匠,难道不是风马牛不相及的两个概念吗?

然而软件开发确乎是一种近乎于(如果不是的话)艺术的工作。软件常被冠以“工程”之名,但所有将软件工程化的努力都归于失败。编写代码,始终是一件极度依赖于开发者技术能力和职业素养的手艺活。“人”的因素,在整个软件生产和维护过程中,实在占有最显要的地位。搞掂了参与软件生产的人,就搞掂了软件,反之亦成立。

非技术出身的科技公司老板,经常发现自己站在技术人员的对立面。程序员好像永远在拖延时间,总在以种种理由反对商业决策。桔子酒店CEO吴海在微博上回复我说,“到elong和携程工作悟出的道理是:干计算机的老骗业务部门和老板,一骗一个准。”又说,“我是学计算出身的,一般骗不了我。携程梁建章是干计算机出身的,也骗不了他。在elong的时候我刚去的时候有人也张嘴说要20个人天干某事,我大怒曰把表结构给我,我15分钟搞定。”而以黑客自诩的技术人员,也会将非技术出身的经理视为IT漫画《呆伯特》中梳着双尖发的邪恶老板——只知道坐在办公室里,靠拍脑袋做决策,整日怒吼着:进度,进度,进度。Paul Graham说,“我偶尔会读到一些文章,讲述如何管理程序员。说实话,其实只要两篇文章就够了。一篇是如果你本人就是程序员,应该如何去管理其他程序员;另一篇则是你本人不是程序员的情况。后一篇文章也许可以浓缩为两个字:放弃。”

哦,我不是在挑拨你和你的CTO的良好合作关系。重点在于,如果你们之间互相不了解对方在做什么以及为什么这么做,合作就未必像表面看起来那样融洽。非技术出身的创业者不能以“我不懂”为理由来拒绝与技术部门深入交流,这么做的唯一结果就是所谓“被骗”。通畅交流的前提是你必须理解技术人员的思维。而在技术人员这一方,则既应当具备正确的软件开发思维,也应当具备有关业务、产品和经营的思维。

要了解技术人员(黑客)的思维,《黑客与画家》是合适的读物。作者Paul Graham在技术和创业两个领域都树立了他的地位:他开发了世界上第一个基于万维网的软件应用并成功将公司销售给Yahoo!;他创立的Y Combinator基金开创出“小额、大量、早期、深入”的投资模式,自2005年起,投资300多家创业公司,其中不乏Bump这样的新型移动互联网应用。《黑客与画家》 源自Paul Graham在个人网站(http://www.paulgraham.com)上张贴的文章,围绕黑客的成长、工作、工具和方法等话题展开阐述。

计算机、甚至互联网,已经成为基础设施的一部分。在这个时代,掌握计算和网络力量的人,是最强有力的。正如Paul Graham在前言中写到的,“我们生活中的一切,都正在成为计算机。打字机被计算机取代了,电话也变成了计算机,照相机亦是如此。很快,电视机也将变成计算机。当今小轿车所具备的计算能力比1970年占满一间屋子的大型计算机还要强。信件、百科全书、报纸,甚至本地的小店,都正在被互联网取代。所以,如果你想理解我们目前的世界以及它的未来动向,那么多了解一些黑客的想法会对你有帮助。”

可惜如果只是阅读这区区十数篇文章,并不能真正深入全面地介绍黑客的想法。而且,由于这些文章并非在一个预设的写作体系下完成,而是从网站文章中选取,定义为 Paul Graham关于黑客的文集更为恰当。文集的意思是,内容延展面较广,系统性不足。就单篇文章而言,Paul Graham的大作足够有深度,有些篇什甚至深入到太过琐碎。金句如此之多,每个读者都有可能在其中找到为自己观点背书的辞句。当你为某个句子拍案叫好时,也许只是选择性地过滤了其他部分。

Paul Graham被誉为“创业教父”,但他绝不是一个循规蹈矩的家伙,《黑客与画家》也并非如宗教经典般充斥不可违背的规条。Paul Graham告诉你他看到的黑客是什么样子,在他心目中“好的”黑客应该是什么样子。作为读者,更实际的做法是观察周边那些搞技术的怪人(也许就是你自己)是什么样子,为什么会是这样,并帮助他们(或者帮助你自己)成为应该成为的那个样子。

没有去过韩国,但从广州到北京,韩国餐厅吃了不少。曾经有那么一段时间,韩国菜在广州算是稀罕玩意,一顿烤肉所费不菲。到了北京,又见过许多“疑似”韩国馆子——其中相当部分其实应该称作朝鲜族风味餐厅吧。

吃得多了,新鲜劲一过去,还是愿意享受更简单直接的菜式。我家小区菜市场旁边,有家“金氏小吃”。以出品论,不输于我尝过的任何一家高级韩国餐厅。这里没有让人感觉拘束的服务。中国话不太灵光的金老板,和中国话很灵光的金太太,在只有四张桌面的小店里面,炮制着简单而美味的韩国风味食品。烤肉香口而多汁,酱汤浓郁而醇厚,每一味简单菜式后面,充满了对食物的敬畏和对客人的真诚。若你点了牛肉汤,居然胆敢企图把米饭倒进汤锅里捞着吃,是必然要被金老板喝止的。他会双手撑在你桌面上,告诉你,汤放这儿,饭放另一边,汤里撒上大量葱花和胡椒,这样吃才对。一切“不对”的吃法,都会遭遇老金毫不留情的纠正。

较之烤肉和酱汤,我尤爱一味“炝鱿鱼”。鱿鱼身体部分改花刀再切长形片,和鱿鱼须一并下滚水白灼。捞起摆盘,生菜垫底。这道卖30块的炝鱿鱼,一是吃新鲜,再是吃蘸酱。早时只用一种甜辣口味的酱料,今天过去,加了斩细的青椒和葱粒,口味更刺激而有层次。挟起一块,蘸了酱料送入口中,你能感觉肉的肌理与质感。

这个时候,佐以冰冻啤酒,直是不羡仙的境界矣。

炝鱿鱼

如何应对来势汹汹的新媒介大潮,是每个传统媒体关乎存亡的重大命题。拥抱并主动变革似乎已是唯一选项,问题在于如何融合新媒介并建立成功有效的模式。

广东二十一世纪传媒股份有限公司(以下简称“21世纪传媒”)现已成为国内细分市场排名第一的专业财经商业类媒体运营企业,拥有《21世纪经济报道》、《21世纪商业评论》、《理财周报》、《福布斯中文版》、《环球企业家》等多个杂志或报纸的独家运营权,同时还与南方报业传媒集团旗下的《商务旅行》和《城市画报》建立了良好的运营合作关系。早在2007年,21世纪传媒就开始尝试各类非平面媒介的传播实践。2007年,独家经营中央人民广播电台经济之声;2008年,承“做读者的商业新闻首页”的理念推出21世纪网站;2009年,推出中国移动21财经彩信报和手机WAP网站。

随着3G和移动智能计算时代的到来,21世纪传媒旗下21世纪新媒体又于2010年初陆续推出基于iPhone、iPad和Android手机平台的移动媒体应用。截至发稿时,用户已逼近30万。相对于游戏或大众媒体应用,这个数字并不十分抢眼。但21世纪基于新媒体的探索已逐步形成一套成功的业务模式,创造出令人满意的效益。近日,《程序员》对21世纪新媒体CTO韩磊进行专访,了解21世纪传媒对移动媒介的思考和实践。

《程序员》:21世纪新媒体如何看待移动互联网的发展?

韩磊: 从媒体经营的眼光来看,智能移动客户端是非常有效的传播媒介。媒介的作用是让信息能够方便、快捷、低成本地生产、复制和传播,而移动媒体正好可以达到这个目的。我认为移动媒介给传统媒体带来的最大好处在于绕过发行渠道,直接和用户对话。

纸质媒体发行很麻烦,以《21世纪经济报道》为例,一份有几十上百版,携带不便,每篇文章都是独立的,也不方便网状阅读。它的发行是通过邮政和渠道商, 每天分发70多万份,整个过程相当复杂。原子的速度比不上比特的速度。如果用移动媒介来做,信息数字化后,发行会更有效,成本可以大幅节省。

21世纪传媒非常看好智能手机的发展。移动互联网是能看到的最具发展潜力的领域。报纸的未来可以预期,网站的未来也可以预期,但移动互联网的发展还有无穷变化,机会也就蕴含其中。从2007起我们就开始布局新媒介,在2009年末开始进行移动媒体方向的探索,至去年底,在iOS、Android、Symbian和BlackBerry 4个平台上共推出10个应用,当然重点放在iOS(包括iPhone/iPad端)和Android(即将支持Android平板)平台。

《程序员》:请简单介绍21世纪新媒体在移动媒介上的产品和成绩?

韩磊:目前,我们的应用主要有三类形态。第一种是财经资讯阅读器,在手机平台上表现为“传统”的列表式应用,而在平板上则表现为具备复杂排版能力的应用。第二种是财经音频内容。基于对财经题材和读者需求的理解,21新媒体以“电台应用”形式推出财经早8点、财经看点、冬吴相对论和高端访谈4个栏目,部分内容来自与中央人民广播电台的合作栏目,部分内容来自由21世纪传媒主办、承办的各类活动。最具原创性的是“财经早8点”,由专业人员播报经编辑人员精选制作的早晨财经新闻。第三种就是平面媒体的移动客户端,主要针对平板电脑。目前我们已为21世纪传媒旗下的《21世纪商业评论》,以及21世纪传媒的合作媒体《商务旅行》和《城市画报》开发出iPad应用。

从品牌的角度看,这10个应用又可归属于三个品牌。一是21世纪财经系列;二是21电台系列;第三个是面向海外发行的收费资讯应用Business China 。其中发行量最大的是21世纪财经系列。

值得一提的是在推出伊始,我们对手机阅读器的读者行为定位是“阅读”。推出后不久,我们发现,来自手机应用的文章读者评论,数量超过了来自网页的读者评论,而且评论质量普遍较高。

目前21世纪新媒体的移动应用在移动端已有近30万用户,今年我们的目标是一百万。一些运营商和手机厂商主动找到我们,要求预装。这从一个侧面反映出优质中文应用的发展速度跟不上智能手机普及速度的现状。

《程序员》:新媒介的发展对于传统媒体业务是否有影响?

韩磊:目前新媒介和传统媒体并无太大的冲突关系。我们认为纸媒在较长时间内仍有其存在价值,新媒介和传统媒体并不是非此即彼的替代关系。

一方面,越来越多的人使用手机来阅读资讯,但并不代表他们就不买报纸杂志了。例如我爱读的《南都周刊》,一般会买一份在家里看,在外出时通过iPad上的应用阅读。

另一方面,传统媒介媒体还抱有一些重要优势,例如品牌、读者、内容和广告客户的认同。我相信这些优势都不是传统媒体能够永远占据的。未来,品牌、读者、内容和广告投放都会从传统媒介逐渐迁移到新媒介,但迁移还需要经历一段也许是相当漫长的过程。

《程序员》:21世纪新媒体是如何融合移动新媒介并建立具有成效的业务模式的?

韩磊:从需求上说,对于传统媒体,广告客户看中的是品牌和影响力,但对于新媒介,客户一定要得到实际用户的反馈,对于用户数据包括基本资料和购买行为统计的要求越来越多,但我们不能直接将数据卖给客户,而是通过策划来让用户接受要推广的内容。

新媒体带来新的读者数据收集手段。符合某个具体属性的读者人群,可以清晰地按需呈现出来。数据挖掘提供了按地域、按行业、按职位、按年龄、按性别查找,让我们得以对读者进行足够的多维度细分,从而提供符合群体个性的内容和商业服务。

通过用户数据的收集、挖掘和管理,我们建立了拥有150万高端会员的21读者俱乐部,以前,报系面向读者的服务主要集中在财经资讯传播。现在基于新媒介,21读者俱乐部就可以结合读者的地域及兴趣属性,开展各类线上或线下活动。

以为某汽车厂商策划的一次活动为例。我们组织了多位知名经济学家在全国十几个城市做巡讲,定向邀请具有购买可能性的21读者俱乐部用户参加,在会议中穿插该品牌汽车的试驾活动。厂商反馈,销售效果远超商业意向更明确的试驾会。

值得说明的是,下载和使用我们的应用,并不会主动收集用户数据。用户数据主要是通过网站和活动注册来获得。这其实是一种正向循环,用户为了获取资讯和参加活动而注册,客户因为我们能邀请到目标用户而愿意支持,我们因为客户支持而能够为用户提供资讯和活动。商业信息和用户需要并不矛盾。

目前21世纪新媒介事业部共有50多人,其中研发人员只有三名。内容人员最多,他们负责网站和移动的内容制作,其次是数据部门,负责用户数据分析和商务运营。事业部去年的业务效益令人满意,未来集团将加大这个领域的投入。

《程序员》:下一步,21世纪新媒体在移动产品方面有何计划?

韩磊:除了现有程序的更新升级,我们还想尝试更具创新的应用形态,融合移动设备的感知能力和与云端连接的能力,推出更具互动性和视觉效果的应用。目前我们的产品只是做到了大家都做到的东西,没有独特的创新之处。

 

每个产品都要放在用户需求、客户的需求以及媒体价值的交集之下进行审视,回归到媒介的价值——让有价值的资讯快速、低成本地生产、复制、和大规模传播。用户的实时反馈将完全改变传统媒介的单向传播模式。动态结合云端数据与客户端的实时操作信息将有极大潜力可挖。

用户数据挖掘是我们今后的重要工作,但我认为移动还只是媒介,最关键是本身的业务模式很扎实,然后技术架构能够支撑这个模式,根据用户的需求勇于创新,这样才能在移动互联网大潮中立于不败之地。

《程序员》:对于其他媒体进军移动互联网,您有何经验分享?

韩磊:从21世纪新媒体的经验来看,主要有几点。

1. 战略还是跟风:一个媒体投入移动媒介开发,首先要从战略上考虑是否适合移动媒介?通过移动应用来达到什么目的?如果只是随大流将内容通过手机来发放,并没有太大意义。

2. 免费还是收费:21世纪新媒体的计划是免费并在很长时间内不考虑收费。这是基于现实市场和用户习惯的考量。

3. 外包还是自己研发:一开始可以投入少量资源做外包,越往后,移动媒介与业务结合得越紧密之时,自己组建研发团队恐怕是避免不了的。

移动领域已成为传统媒体的必争之地。可以不客气地说,传统媒体几乎全都错过了网站时代,但他们不会再错过移动互联时代。印刷媒介时代成就了华光等排版技术提供商,成就了发行渠道商⋯⋯移动互联时代会成就谁? 我想,程序员朋友不必一味盯着应用商店的模式。通过应用商店销售赚大钱的永远是少数。在传统媒体拥抱移动媒介的过程中,有许多机会可供挖掘。

 

 

我们这代人,至少我自己,是“看着香港电影长大的”。这句话加上引号,因为我们长大的那些年月,其实几乎并无香港电影公映。所谓看香港电影,其实是在录像厅看香港电影的盗版录像带。许多人描写过录像厅的拥挤和浑浊的空气,这些于我都淡忘了,只有一幕幕经典镜头留下来,作一生的回忆。

2010年5月底,香港电影发展局组织20部经典港片,到广州做“香港电影回顾展”,功德一件。可惜三天的排期,只有第三天(29号)是周末,错过了大部分的排期。不过这似乎没影响上座率——我28日晚上去买次日《阿飞正传》的票,居然已售罄。影迷之踊跃,大概超出主办方的预计,所以在后来的座谈会上,冯永才会对出席人数之多微感惊讶吧。所谓“经典”,另外一层意思就是已看过无数遍。再花钱看一次的人,还是冲着“从未在大陆公映的一刀未剪版本”去的。”一刀未剪“也许是噱头,但从未在大陆公映却有十足十的意义。如同iPad并非放大版iPhone,银幕也绝非放大版的电视机,观影体验, 还是以此为佳。

却说29日早晨起来,上网查到12点在五月花影院有一场《鬼马智多星》。该片乃徐克当年名作,一改《蝶变》的诡异风格,热热闹闹做了场大戏,完全证明徐老怪有强大的商业片制作能力。遂发短信呼朋唤友,谁料朋友睡觉未醒。再等得一段时间,眼看已赶不上排期。再查网页,原来12点半还有一场《龙虎风云》。林岭东导演凭借此片声名大噪,而周润发与李修贤二人的表现也极具张力,将男人之间的情谊表现得淋漓尽致。打电话叫醒朋友,再赶到影院,电影已开始放映20多分钟。慌乱之间买错票,进了《波斯王子》的放映厅,遂重新买票进入,电影刚好渐入佳境。

该片如何经典不必再提。影毕,银幕上打出”剧终“二字时,不见许多观众离场。正感奇怪间,一戴帽男子拿着mic上台自我介绍,原来是香港电影发展局秘书处秘书长冯永。随之幕前放下一块蓝布,上写”香港电影回顾展闭幕礼暨香港电影的昨天、今天、明天座谈会”。原来还有这么一个安排,之前也没宣传过。冯永介绍座谈会主持人是文隽先生,会场气氛顿时热闹起来。文隽也算是香港电影名宿之一,兼且口条顺溜,他来主持,不出彩才怪。文隽介绍嘉宾,几乎每位上台都获得热烈掌声。可怜《魔术男》导演黄修平是刚入行的年轻人,没多少人认得,掌声也就寥寥。最可怜的是这孩子在会后一些媒体的报道上名字都被写错。另外三位嘉宾均是大牛:张同祖(开创《神勇双响炮》系列)、冼杞然(以《三人世界》开创城市浪漫轻喜剧潮流)和阮继志(《倩女幽魂》编剧)。座谈会很有意思,颇多爆料,下面摘取我在twitter上发的数条记录:

*倩女幽魂编剧阮继志说,昔年徐克找他写这部戏,以夜总会小姐为蓝本写小倩,因为女鬼和小姐一样昼伏夜出,以吸取男人血汗(钱)为业,而树妖姥姥则是当仁不让的妈妈桑。

*冼杞然说拍三人世界时只得林子祥一个明星撑场面。周慧敏是新人,郑裕玲只在电视上红。周四上画票房惨败。冼认为观众是白领和学生,遂争取放映至周六,结果大卖,创出面向中产的浪漫轻喜剧类型。

*《魔术男》导演黄修平说,年轻香港电影人够幸运,而老一辈香港电影人则够幸福。

八卦还有很多,其中有一条不是新闻,但与当天放映的电影有关,获得大量掌声:1988年香港电影金像奖,评委一致认定影帝非周润发莫属,但仍有选择的困惑,因为当年发哥以《龙虎风云》、《监狱风云》和《秋天的童话》三部片子提名最佳男主角,令评委不知该选哪部。最后,《龙虎风云》还是胜出。

座谈会结束,以“九爷鸡”盒饭和地道广州濑粉充饥,又奔赴位于天河的飞扬影城,赶下午六点的《监狱风云》。片中发哥和梁家辉的演出不必再赞,就一帮配角和龙套也极为出彩。和《龙虎风云》一样,《监狱风云》也是Maria Cordero唱的主题歌和插曲。肥妈那把沧桑而坚韧、高亢而奔放的嗓音,与电影中的场景简直是严丝合缝,契合到极。写这篇blog时,又上网找到,听来仍是那么令人感慨。

《监狱风云》过后,继续在飞扬看《倩女幽魂》。此片也看过N遍,但这次的确体验到了大银幕的魅力。当张国荣那张犹带稚气的脸出现,现场有粉丝大喊:哥哥,你好靓。像徐克(本片由徐克监制,程小东执导)的其他作品一样,这部片子也有许多借古讽今的台词。以前看时不觉如何,这次别有一番滋味。

经典一部接一部。我们一行三人,告别飞扬,赶去市一宫看《僵尸先生》。从农讲所地铁站上来,一通暴走,好在只错过十多二十分钟的片子。林正英演道士,真是似模似样。他英年早逝,就有传言说是因为演这类片子太多,于阴德有亏之故。而许冠英演的小徒弟,确也不负笑将之誉。

四部片子赶场般看罢,已是凌晨时分。大卫波德威尔用“尽皆过火,尽皆癫狂”来总结全盛时期的港片,我们如此看片,或也算得上癫狂。宵夜档口,半打生蚝、几支珠啤,谈的尽是影人影事。原来,我们从未长大过。

9月26日回到广州,宅在家里的时候为多。原因之一是交通不方便(堵车+住处周围无地铁+在广州打车巨困难),另一个原因就是这地方我已完全不熟悉,尤其是吃食,习惯的广东味道,不知去什么地方可以找了。 没想到这周连续四顿饭,让我找回了广东味道。

饭一。周二下午5点多,广东电视台做新闻的朋友打电话过来,约吃狗肉火锅。朋友告知:你坐xx路车,到老干大学下。依言为之。到得位于下塘西路的老干大学站,环顾四周,并不见到有饭馆。等了一会儿,朋友来到,带我走了1分钟,眼前赫然一间“老干大学食堂”。这类吃饭的去处,以前我是熟知的,比如四省办、体院食堂等等,所以也不诧异。

进得门内,环境简陋得很——七、八张饭桌,有大有小,且均无桌布。迎面走来操台山口音白话之大姐一枚,问:今日吃火锅还是黄鳝饭?继而又问:吃狗还是吃鸡。原来此处以火锅及黄鳝饭最为可人,惟外人不得而知、仅飨回头客而已。电磁炉,脸盆大铝锅,两斤斩件狗肉带皮上,蔬菜仅生菜一味,已是吃得齿颊留香,逸兴横飞。珠江啤酒数支下肚,也解不了一身燥热。好吃是好吃,当晚热得真盖不住被子。

P.S. 据老板娘称,位于老干大学后面的雕塑公园,有一半山头是她们家的,故而种有各类时蔬及香料植物,如金不换之类。尚待验证。

饭二。周五中午12点半,正以蛋白蛋糕一坨充饥ing,另一朋友来电,问要不要去炳胜。炳胜者,广州最有名之顺德菜馆。几年来,从一家小型大排档做到多家分店,而朋友邀我去的,就是位于冼村路的新开分店。当即弃蛋糕而衣正装,惶惶然奔下楼,打车杀向天河。

新店果然不一般,占了某大厦足三层地面,装修算得上典雅,最要紧是座位足够——以前到炳胜吃饭,若无预定,是必然要等位的。而且,人家也不提供大厅预定。闲话不提,点菜。还是经典的一虾两吃,虾身去皮开边做刺身,虾头椒盐。头大肉少的罗氏虾经此手段,俨然尊贵如吞拿。生虾肉鲜甜爽脆,虾脑为硬皮所保护,虽是油炸,尤嫩而带汁,堪称妙绝。例汤时蔬,俱是水准线以上出品。值得一提的是红豆糕,以红豆沙及淀粉制成,一块之内层层明晰,肥肥瘦瘦,看来竟像是厚切的一片好火腿,岂非广大素食馆学习的榜样乎?

饭三。周五下午,正事办完后,到时代广场等周二一起吃狗肉那位朋友,先去买碟,继往沿江路江湾酒店旁一处所在吃饭。此店名为“东海”,其实与满街的其他东海无涉。有道是:服务实在混乱,环境堪比排档;经营午晚两市,顾客俱是街坊。当晚出彩的是胡椒浸的花甲,奶白高汤,肥嫩花甲,惟有够辣的现磨粗粒胡椒才压得住那股鲜。此店的特点是菜单很坦白,绝不玩火山喷雪的把戏,极端到了会把所有主料配料连带烹制方式列出的程度。有图为证:

Menu of a Local Restaurant in Guanghzou

据说该店十年陈酿花雕不错,留待下次了。

饭四。周六去天河办事,回来时堵车,累个半死。寻思晚饭喝点粥算数,走至小区南边背街的齐富路,见有“潮兴大排档”一。想起潮州人滚粥是有名的,遂坐下开茶位不提。两个人,40元的虾粥,潮州咸菜炒某种我已经不记得名字的海鱼,椒盐濑尿虾(即天津所谓皮皮虾)一份,炒的芥蓝头或是芥菜(我对蔬菜不感冒)。聊尿虾调味不错,油炸的处理过程丝毫没有影响到虾肉的质感与多汁程度。砂锅虾粥上桌,端的是不见米粒只见虾,只只开边,真不嫌麻烦。在家门口能喝上潮州的砂锅粥,这份幸福不足为外人道也。(行笔至此,突然想起,四顿中三顿有虾,还真是跟虾干上了,罪过罪过。)

一周四顿好饭,足兹证明广东还在,生活仍有强大的意义。如此海鲜如此菜,与谁夙夜砂锅粥,罢罢罢,此生还是托付于此处了。

 

红蕊
白花瓣

那时枝头
是谁
不忍攀折

成泥
成泥
叹东风去后
碾踏作尘

从此年年
杜鹃啼不回
人似飞花

2003年12月,在一个残雪堆积的冬日下午,几位朋友从机场接到我,又一起去国展家乐福买被褥。那晚吃的是川菜。微醺,坐在铺了天蓝色床单的床边,看着地上尚未拆封的箱子,我想,北京,我来了。那年,我28岁。

2005年1月4日,CSDN从静安中心搬到兆维工业园。那是一个大雪纷飞的冬夜。在旧办公室等到最后一车物品运走,已是凌晨时分。到24小时开张的7/11买一杯热红茶,双手捂着,借那点热量独自走回租住地。雪是那么大,越堆越厚,步履维艰。那年,我30岁。

2009年9月,离开北京。那是一个北方已感风凉,南方仍如火炉的秋天。酒后,坐在朋友的车上,奔驰于夜间少车的四环路,车窗全开,我看向窗外。风直往嘴里灌着,我看见城市灯火逐一闪过。想起,今年,我34岁。

六年,有许多的人,许多的物,许多的事,也如这些灯火般流过眼前。六年,我能做的已经努力做了,而该做的却没有全做到。六年前,我带来几箱书;六年后,我还带走几箱书,还有稍明事理的一颗脑袋。我要感谢所有的朋友,是你们,给了我成长的鼓励与宽容。

北京,谢谢。再见,北京。

2007年3月,我在SD West 2007技术大会上聆听了Robert C. Martin(Uncle Bob)题为Craftsmanship and the Problem of Productivity: Secrets for Going Fast without Making a Mess的主题演讲。一身休闲打扮的Uncle Bob,以一曲嘲笑低水平编码者的Code Monkey(代码猴子)开场。

是的,我们就是一群代码猴子,上蹿下跳,自以为领略了编程的真谛。可惜,当我们抓着几个酸桃子,得意洋洋坐到树枝上,却对自己造成的胡乱熟视无睹。那堆“可以运行”的乱麻程序,就在我们的眼皮底下慢慢腐坏。

从听到那场以TDD为主题的演讲之后,我就一直关注Uncle Bob,还有他在TDD和整洁代码方面的言论。去年,人民邮电出版社计算机分社拿一本书给我看,封面上赫然写着Robert C. Martin的大名。看完原书序和前言,我已经按捺不住,接下了翻译此书的任务。这本书名为Clean Code(《整洁代码》),乃是Object Mentor(Uncle Bob开办的技术咨询和培训公司)一干大牛在编程方面的经验累积。按Uncle Bob的话来说,就是“Object Mentor整洁代码派”的说明。

正如Coplien在序中所言,宏大建筑中最细小的部分,比如关不紧的门、有点儿没铺平的地板,甚至是凌乱的桌面,都会将整个大局的魅力毁灭殆尽。这就是整洁代码之所系。Coplien列举了许多谚语,证明整洁的价值,中国也有修身齐家治国平天下之语。整洁代码的重要性毋庸置疑,问题是如何写出真正整洁的代码。

本书既是整洁代码的定义,亦是如何写出整洁代码的指南。Uncle Bob认为,“写整洁代码,需要遵循大量的小技巧,贯彻刻苦习得的‘整洁感’。这种‘代码感’就是关键所在。……它不仅让我们看到代码的优劣,还予我们以借戒规之力化劣为优的攻略。”作者们阐述了在命名、函数、注释、代码格式、对象和数据结构、错误处理、边界问题、单元测试、类、系统、并发编程等方面如何做到整洁的经验与最佳实践。长期遵照这些经验编写代码,所谓“代码感”也就自然而然滋生出来。更有价值的部分是Uncle Bob本人对三个Java项目的剖析与改进过程的实操记录。通过这多达三章的重构记录,Uncle Bob充分地证明了童子军军规在编程领域同样适用:离开时要比发现时更整洁。

接触开发技术十多年以来,特别是从事IT技术媒体工作六年以来,我见过许多对于代码整洁性缺乏足够重视的开发者。不算过分地说,这是职业素养与基本功的双重缺陷。我翻译《C#编程风格》(已由人民邮电出版社出版)和《整洁代码》,实在也是希望在这方面看到开发者重视度和实际应用的提升。

在《整洁代码》结束语中,Uncle Bob提到别人给他的一条腕带,上面的字样是Test Obsessed(沉迷测试)。Uncle Bob“发现自己无法取下腕带。不仅是因为腕带很紧,而且那也是条精神上的紧箍咒。……它一直提醒我,我做了写出整洁代码的承诺。” 有了这条腕带,代码猴子成了模范童子军。我想,每位开发者都需要这样一条腕带吧?

 

(《整洁代码》中文版一书即将由人民邮电出版社推出。)

1983年,乔布斯找到时任百事可乐公司总裁约翰•史考利(John Scully),想请他担任苹果CEO。身为大公司总裁的史考利,自然是看不上刚崭露头角的苹果公司。情急之下,乔布斯问史考利:你是想终此余生卖糖水呢,还是改变世界?史考利深为感动,决定到苹果任职。史考利治下的苹果公司过了四年好日子,随后就江河日下。直至董事会请回乔布斯,这才挽回颓势。苹果有幸东山再起,另一些公司却难逃被收购甚至倒闭的命运。改变世界是每一位技术人员、每一家技术公司的梦想,它是那么宏伟绚丽,却只有少数幸运儿才能企及。

前一段时间,和一位在加拿大做组织行为学的博士生见面。他的专业方向是研究技术在取得市场成功的过程中被哪些因素所影响。这些因素,既与产品本身有关(例如,他的同学就在调研点评网页面上标签对用户的有用程度及反馈到营收上的效果),也与企业组织管理、政策、市场环境、用户心理等等因素有关。谈了一早上,术语满天飞,我就记住一点——技术改变世界,首先要推向世界,而这正是比成功技术本身更难的部分。

6月11、12日,CSDN和Digital River主办的中国软件全球营销论坛,在某种意义上,也是试图组织一次解决将软件技术推向世界的问题的讨论。深圳万兴、珠海斑点猫、超级兔子等等意识超前的公司,早已走出国门赚美元。你可以说他们做了许多同质化产品,但不可否认的是,来自中国大量同类型产品(如音视频转换、系统优化等)形成了一种潮水兵团般的市场力量。并非只有操作系统才能改变世界,当用户使用某个DVD翻录切割软件,对昂贵的DVD光盘开刀并传到网上与他人分享时,世界也在发生着急剧的改变。姑且不论法律上的种种约束,这种破坏力对世界的影响,不可估量。

不过,难道做技术就一定要存心改变世界吗?未必。有些伟大的产品,产生于娱乐自己的初衷。李纳斯在自传中宣称,Just For Fun,谁又能说他没成功呢?退许多步说,技术有时也能做到“纯娱乐”的境界。CSDN商城(http://shop.csdn.net)销售的一款T恤,图样是用Byte Syze语言打印出“Hello World”字样。我查了一下,Byte Syze是一种esoteric programming language(编程奥语),即不以生产软件为目的,纯为试验某个疯狂的想法、故意提高编程难度,甚至只是为讲笑而存在。以其意义论,我更愿意称之为“扯淡型编程语言”。这种类型的语言有大批拥趸,语言数量上百种。它对世界毫无生产力上的贡献,却深刻地揭示了技术人员亲近机器、疏远人类的专业特质,且具有一种对程序员宛若知音的幽默感。新加坡电影《说鸟语(Talking Bird)》描述了当地的语言混杂状况,而Talking Machine正是程序员的精彩写照。

世界就在那儿,你可以去改变它,也可以躺在草地上,喃喃自语一个算法的实现,享受这一刻与编程亲近的美好。改变世界,难道不是为了娱乐自己吗?

(刊登于2009年7月刊《程序员》杂志卷首语栏目)

daf2e93c57bb8ab8

实在受不了Community Server的弱智垃圾评论处理手段,因为它不开源,自己修改也很麻烦,所以决定迁移到Word Press。由于hanlei.name原来用的数据库服务器只对内网开放,故WP提供的直接迁移手段用不了。折腾半天后,终于找到近乎完美的解决方案:

1、用Keyvan Nayyeri编写的Community Server 2.1 BlogML Converter,格式导出CommunityServer的数据(BlogML格式)。过程很简单,按压缩包中的文档指示,把文件传到CS相应目录下,到后台访问SyndicationOptions.aspx(“RSS设置”),在BlogML那个位置点“Export”,就会在新窗口打开导出后的XML文档。

2、用Aaron Lerch编写的WordPress BlogML Import工具在WP后台导入BlogML数据。Wayne John修改了这个工具,修正了一些小问题。Wayne John版本在这里下载

3、实际上Wayne John的版本也有问题,WP 2.7以上的都支持不好,而我的版本是2.8.1。我找到了这篇文章,根据文章指引,终于完成导入。

整个过程中有几点要注意:

1、CS要运行于ASP.NET 2.0平台;

2、第三步所需时间较长,Apache缺省的30秒执行时间不够,我修改了耗时最长的一个模块(plugin.php),使之支持60秒执行时间;

3、貌似对分类的支持还有问题,需要手工调整;

4、导入后页面上会给一个新旧链接对照表,可以据此做URL Rewrite,我的虚拟主机不支持编辑.htaccess,有空的时候在WP基础上写点代码实现跳转吧。

上面提到的BlogML导入工具,及修改后的plugin.php,可以在这里下载

下一页 »