-
2008-06-18
苍天作弄
当意大利顶着世界冠军的头衔来到欧洲杯的赛场,没人会怀疑它会从小组顺利出线,尽管它所在的是所谓的死亡之组,毕竟失去齐达内的法国如同失去了灵魂的人,巴斯腾的荷兰总是给人激情有余、实力不足的感觉,而罗马尼亚,它的辉煌可能还停留在哈吉的年代。
小组赛前两轮,似乎一切一切都在朝着不利于意大利的方向发展。荷兰一下子成熟起来,3:0斩意大利于马下,4:1横扫法国,对世界杯冠亚军的一视同仁让荷兰一下子成了欧洲杯冠军的头号候选。而首轮0:0沉闷战平法国的罗马尼亚,面对意大利的时候,突然被激发出无穷的活力,与意大利打了一场激情四溢的比赛。在这场比赛里,裁判似乎对世界冠军并不友好,上半场让托尼的进球化为乌有,下半场又判给了罗马尼亚一个点球。
意大利是一支奇怪的球队,每当站到悬崖边上,它总能爆发出惊人的能量,82年的足球丑闻和06年的电话门为意大利带回了两座世界杯。这一次,意大利又一次站到悬崖边上。这一次,布冯发挥“失常”了,作为队长的他,扑出了穆图的点球,让意大利保留住出线的最后一线希望。
两轮战罢,没有人看好意大利,有人在替荷兰谋划着败给罗马尼亚,挤掉世界杯冠亚军。
当世界杯冠亚军再次站到一起,早已没有了06年的光环,多少还有一丝的苍凉。毕竟他们为之而战的不再是金杯,而仅仅是一个小组出线名额,甚至胜利者都无法掌控自己的命运。
老天在作弄意大利未果的情况下,于是,选择了作弄法国队。
开赛不久,新一代法国攻击核心——里贝里便在一次拼抢中受伤下场。如果说这只是作弄的序章的话,那么,头两场表现可以用失常形容的皮尔洛开始把这场作弄推向高潮。第25分钟,皮尔洛用他最擅长传球方式,将皮球送到禁区里面那个守门员无法出击而又在后卫身后的位置,托尼恰到好处的挺球,让客串中后卫的阿比达尔只有在背后犯规。点球、红牌!在AC米兰已将头号点球手位置让给卡卡的皮尔洛,又一次站到了点球面前。事实证明,复活的皮尔洛是无可阻挡的,1:0。如果说还有比被红牌罚下的阿比达尔更郁闷的话,也许就是纳斯里,这个开场替换里贝里出场的法国小将,还没来得及把身体跑热,就因为这次犯规带来的人员调整,被一个中后卫换下。
在这场比赛中,复活的不仅仅是皮尔洛,还有米兰的新后卫赞布罗塔。于是,两个复活之人,开始在法国后防线面前一次次送出威胁球。如果不是德甲今年的头号射手——托尼忘记带来得分能力,也许意大利早早就会大比分领先。与之形成鲜明对比的是,赛场的另一端,法国前锋亨利和本泽马,两个人只留下孤独而无奈的身影。
下半场开始不久,换下9个主力的荷兰队打进罗马尼亚一个球,意大利人看到了出线的曙光。巴里混小子卡萨诺的盘带为意大利队赢得了一个禁区正面的任意球。这时,头号任意球手皮尔洛已经离场。站在任意球面前的是罗马新贵——德罗西,他也是意大利的新10号。当他的重炮轰出,亨利——没能将足球送入意大利球门的法国前锋,无意中用脚尖改变了足球的方向,法国门将回天无力,2:0。
当荷兰队攻入第二球的时候,意大利人开始庆祝了,他们抓住了救命稻草,成功上岸! -
2008-05-26
职业的程序员
有人问我,在目前这个项目中,和外国同事一起工作的感觉如何,我答曰,他们更职业。
这里说的职业,并不是说他们写出的程序本身有多么神奇,恰恰相反,他们写出来的程序和我们写出来的程序,看上去并没有多大的差别。之所以,他们给我留下更职业的感觉,主要是日常工作的一些细节。
刚开始进入项目的时候,我们几个中国同事对项目完全是一头雾水,甚至Rails开发都很少,所以,在和他们一起工作的过程之中,就需要他们为我们做大量的解释,而这种时候,他们总是表现得非常耐心。有时候,语言上的障碍让我们不能一下子抓住他们说的重点,他们就会不厌其烦的一遍遍解释着,直到我们表示自己真正的理解了。
刚刚入门的人难免会问一些愚蠢的问题,他们并不会嘲笑,反而会认真的给你讲解,这会给人以极大的信心,不会因为问题的愚蠢而被打击了积极性。回顾自己之前在工作中的表现,在这一点上,我做得总是很不够,我愿意给人解释一些问题,但对于简单的问题,我有时会表现得不屑一顾。实际上,谁没有从笨笨的初学阶段走过来呢!对于初学者,鼓励的作用更大一些。最近一段时间,我会和几个新近加入项目的同事一起工作,自己刻意在这个方面注意了一下。
前些天,有一些来自产品环境的任务,要对产品数据做一些修改。这些外国同事对这种问题的想法是,写个脚本解决它,即便数量不是很大。所以,那几天几乎每天都是在写脚本。其实,对于数据量不大的一些修改,手工修改可能来更快,但是,每次都用脚本解决问题,一来可以锻炼一个用脚本解决问题的好习惯,二来可以避免做一些让自己头疼手工操作,将其转化为编程问题,解决起来更有乐趣,再有,以后遇到类似的问题,有之前的脚本可以参考。这里不得不说一下用Ruby写脚本还是很方便的,Rails项目的开发和维护都用Ruby,很大程度将二者统一起来。
项目进行性能测试,一个外国同事将测试结果放到了一个电子表格中,做成了动画效果,很高兴的给秀给我们看。因为在他看来,那是一件有乐趣的事,尤其是一群人乐呵呵的围绕在他身边看他的工作成果。
我们的开发平台是Mac,基本上就是一个Unix平台。所以,我们的外国同事经常会给我们展现他们良好的运用Unix命令的能力。他们经常将一些Unix命令组合起来,完成一些辅助开发的工作,很大程度的提高了工作效率。
在我们项目的Mingle里面,有一个Dev Standup的页面。在日常的开发中,一些解决起来会有些困难部分或者影响会比较大的部分,就会记录在这个页面里面。一方面,分布在中国和美国的同事都有机会知道对方做了些什么影响比较大的部分,另一方面,双方也可以协作解决一些对方觉得头疼的问题。
在ThoughtWorks做程序员,幽默感是不可缺少的一环。所以,经常会出现这样画面:“你能帮我一下吗?”,“不”,然后,一个人过去问什么事;“一个问题”,“一个答案”;两个人正在讨论,有一个人过来说“我觉得有道理”,另一个过来说“我不这样认为”…… -
2008-05-19
哀悼,逝去的生命
这是一个全国哀悼的日子,为那些在地震中逝去的生命。
关于地震,我一直想写点什么,又不知从何下手,因为我着实不是一个愿意记录悲伤的人。但我还是决定写一些东西,让思绪飘散一下。
这注定不是一个平静的年景:雪灾,火车相撞,地震。国难让中国人空前的团结起来。
对我而言,今天也是姥姥过世三周年的纪念日。我是姥姥一手带大的,对姥姥有着深厚的感情。所以,我深知亲人离开的痛苦。地震让那么多人失去了亲人,对于活着的人,那是一种折磨,无论你怎样的坚强。
和老妈通电话,她对于地震的记忆要比我深刻,因为75年的海城地震和76年的唐山地震,对于家里都是有影响的。因为曾经离地震很近,所以,她更知道今天的地震意味着什么。
地震时,我以为自己眩晕,后来,才意识到不对,但也并没有往心里去,因为念高中时,学校离矿区很近,矿里放炮的时候,就会感到楼在晃。当我得知地震发生在四川,北京可以感到明显的震动,我知道这会是一场灾难。
其实,最近一段时间,我有意无意在回避关于地震的消息,因为我知道,那些消息会让自己心痛。
有人以为,有些公司或个人捐款是在作秀。如果真是这样,我希望这样的秀越多越好,只要是对灾区有益的。
默哀那一刻,站在办公室里,耳边是响亮的喇叭声和警报声,思绪是混乱的。
自然面前,人很渺小。这是我写在自己饭否上的一句话。渺小的一方,价值何在?在抗震救灾的过程中,一个个感人的故事给了我们答案:人性的光辉。 -
2008-05-15
ThoughtWorks的开源土壤
今天到CSDN参加了一个关于开源的讨论,谈到了自己参加开源项目的感受,也谈到了公司的一些情况。关于自己的部分,前前后后在blog里提到了不少。这里稍微整理一下自己对公司开源情况的一些理解,不见得完全正确,只是基于自己看到的和理解的,如果哪位同事觉得不对或不足,不妨站出来纠正或补充我。
ThoughtWorks是一个咨询公司,这意味着我们有很多机会参与到不同领域的开发之中,也就让我们的经验可以得到不断丰富,更重要的是,我们有机会知道哪些经验是可以复用的。一些可以被复用的知识就在开发过程中被识别出来。ThoughtWorker们是一群愿意不断把事情做得更好的人,于是,就会有一些人把这些可以复用的部分提炼出来,将其开源,把这些知识分享到给社区。据说,CruiseControl、RubyWorks就是诞生自ThoughtWorks的实际项目。
ThoughtWorks最有价值的部分是人。和这样一群人一起工作,只要你把自己的想法抛出来,就会有人愿意与你讨论。相信大家都有类似的经验,很多时候,自己想一个问题很容易走进一个误区,而和别人稍微讨论一下,即便这个人的言论本身并不能给你带来太多的价值,但这个讨论的过程会让自己的思路逐渐清晰起来。ThoughtWorker们是一个巨大的思想来源,这样一群人之间的讨论经常会激荡出各种各样的火花。一个业余的例子是上周五下班之后,一群人玩编故事的游戏,其结果是包括周边的人在内,大家都已经乐得直不起腰了。
开源,需要一个环境。如果周围的人都在做开源,自己就会以为开源是一件理所当然的事情。列在公司开源网站上的项目,其实那只是一些比较知名的项目,也是冰山一角。平时,不经意间和某个人聊天,你就发现,原来身边的这个人正在做一个开源的东西。大家在一起讨论的时候,也经常可以听到这样的话,那就不妨开源一下试试。陶公子最近发起了一个关于Domain Model的讨论,我就对他说了类似的话。
公司内部有一个Innovation Community,也就是说,公司是鼓励大家进行创新的。经常会收到公司内部关于Innovation的邮件,介绍一些最近一段时间有人做的一些事情。其中很重要的一环就是一些ThoughtWorker新近发起的一些开源项目。gigix最近就在一次Innovation Community活动上,介绍了fluorida。
如果一些开源项目能够证明自身的价值,公司也是愿意投入一些精力将它完善。Selenium和CruiseControl就是这样在ThoughtWorks的协助下,得到了快速的成长。当然,不只是公司员工的项目,对于一些其它有价值的项目,公司也会投入一定精力去做,比如Ruby和JRuby。
有了这样的土壤,开源也就变得自然而然。 -
2008-05-05
最佳雇主
谁是最受程序员欢迎的雇主?
一篇关于最佳雇主的帖子,很高兴在里面看到了ThoughtWorks的名字。
很快,成为ThoughtWorker就要满一年了,这一年时间里,我一直享受着在ThoughtWorks工作的乐趣。确实,它和我之前工作的环境差别很大:开放的工作环境、没大没小的工作关系、不利于保持身材的零食、需要排队的游戏机等等。这段时间一直在考虑一个问题,对我而言,ThoughtWorks到底好在哪里。思来想去,我的答案是人文环境。
依然记得当年,我在当时的部门里发邮件尝试与大家讨论技术,应者寥寥;
依然记得当年,有人劝我放弃所谓新鲜想法,老老实实走在原来的道路上;
依然记得当年,有人对我说,只有做管理才有更大的价值,怎么你对管理一点兴趣都没有;
依然记得当年,我们把“以人为本”作为笑话来听;
……
我也依然记得,当年选择软件开发作为职业是因为热爱;
我也依然记得,当初遇到Darwin点燃了我对技术的热情;
我也依然记得,在本应完成一个功能的时间里完成整个系统重写的快感;
我也依然记得,修改别人留下的bug缠身的程序直至深夜;
……
用了自己职业发展的最初几年,我逐渐清晰了自己在职业发展路上的追求。我会努力走在自己预期的路上,如果环境不能再给予我所需要的,我会寻觅其它的环境。
在这里,我得以继续走在技术的路上;
在这里,身边有一群有想法的人,让讨论可以深入下去;
在这里,总有人能在不同的角度给你一些新鲜的东西,让我不得不偷偷去补各种各样的新知;
在这里,可以和有很多年的工作经验的人一起工作,学习他们解决问题的思路;
在这里,完成功能绝对不是开发的终点,大家总是竭尽所能让程序看上去更清晰;
在这里,关注用户价值会成为程序员也要思考的问题;
在这里,我有机会体验不同的角色;
在这里,我终于弄清楚了leadship和management不是一回事;
……幸运的是,我坚持了自己的选择;幸运的是,我成为了ThoughtWorker。







