2008年8月21日星期四

雨夜

几场雨下来,北京已有初秋的味道。昨晚睡至半夜,冷风卷着雨点扑至床前,醒来听着漫天悠长的雨声,身下的竹席幽凉如水,不禁睡意全消。潇潇雨声中,仿佛就自己一个人、一张床漂浮在宇宙。想起来,悠忽之间,人生已将近过半。搜罗记忆中的听雨,能想起的却只有寥寥几次。

一次是小学二年级的课堂上,我坐在靠近前门的位置,听雨水无休止地打在窗户的塑料布上。墙角堆放着同学们的雨伞斗笠,我不断地向屋外湿透的泡桐树望去,宽阔的大叶子滴着水,远处是几张水泥乒乓球台,孤独地淋着雨。红鼻子校长撑一把油布伞经过,吓得我赶紧收回目光。偶尔一只淋湿的麻雀飞过房梁,引起一阵骚动。寒意从门口一阵阵涌入,吹向课桌下的双腿。

再有就是前2个月回老家那次了。两位老友也驱车数千里从深圳赶回老家,到达已是晚上12点。我们约着到街边夜市吃火锅。都是无话不谈的老友,在一起非常亲切和放松。约摸坐了半个钟头,就下起了瓢泼大雨。老板也算早有准备,把篷布四周放下,如同一个帐篷。我们继续饮酒作乐,高谈阔论。雨声之大简直盖过了我们的声音。隔一会儿就要起来捅捅帐篷顶,把积水排开。我听他们两个斗嘴,微笑着,一杯杯喝啤酒,一边想着家中床上放下的那位小家伙。

蒋捷有首虞美人很有味道:少年听雨歌楼上。红烛昏罗帐。壮年听雨客舟中,江阔云低、断雁叫西风。而今听雨僧庐下,鬓已星星也。悲欢离合总无情,一任阶前点滴到天明

人生如转篷,东奔西走,总会遇到一些人,一些雨。十分钟年华老去,焉知我没有听雨僧庐的一天?呵呵,不知那时会是何种心境。

2008年8月8日星期五

如何订阅我的博客?


呵呵,倒不是说我的博客有什么订阅价值。主要是我发现很多IT从业人员居然也不知道使用这项很有用的功能,在此拿我的博客举例演示一下,做点Web 2.0的普及工作。

首先你要有一个阅读器了,我们拿google reader来说好了,常用的还有抓虾、鲜果之类,应该是大同小异。访问http://www.google.com/reader
就可以看到一个登录界面,如果您没有google帐号,那就需要先注册一个,就不多说了。登录进去,就可以看到您订阅的文章了。比如您订阅了拉非客同学的博客,俺这边如果发了新文章,reader就会告诉你,您只需轻轻一点就能看到。如此就可以把您感兴趣的网上资源都集中起来,从此以后您再也不需要到各个站点奔波就可以及时了解哪里有什么新帖子了。很爽吧?

那么,如何订阅感兴趣的网站呢?请看拉非克的博客,工具栏右半部分有一个图标,上面是一个1/4的同心圆图案,如果它是红色,表明这个网站支持RSS订阅。灰色呢,您就没法订阅了。点一下它,在地址栏中就会出来它的订阅源。把它拷贝下来,然后到您的reader中点击“增加订阅”,随后把那个地址拷贝到输入框中,选“添加”就搞定了。推荐常上网的同学一定要试一试。您会离不开它的。

持续集成之一 概念篇

从前对软件的集成与发布没有关注,近期研究了下持续集成,觉得这一块儿很重要,甚至可以说是支持软件开发得以工程化、工业化最重要的一个部分。

软件的核心是编写代码,但软件开发的目的还是要把软件发布出来给用户使用。前面的所有环节,包括需求、分析、设计、开发、测试,还有其他项目管理辅助措施如QA、配置管理等,都指向同一个目标——软件发布。所以如果不在上面的环节都一致地为最后目标做准备,那么结局就不会太美好。比如我们公司,有一两百人的开发队伍,近十年的开发经验,但这些年来一直没有很好地解决系统更新的问题。最近一两年几乎到了每次更新必出错、回退的地步。甚至造成了开发与运维部门的对立。一个部门希望尽快把新开发的特性发布出来给用户使用,另一个部门希望尽量避免更新,保持系统的稳定性。这样形成了一个恶性循环:更新周期长,手续繁,导致版本管理困难,版本混乱又导致更新失败次数多,更新失败导致更严格的手续,更长的更新周期。特别是运维部门内心中对更新的抵制,他不管你业务是否重要,发现一点问题就要求回退。

这其中当然有多方面的原因。有体制的原因,有技术的原因,也有个人观念、作风的问题,甚至有具体操作人的责任心等等。但如果在集成和发布环节采取更规范的做法,甚至在整个项目过程中使用持续集成,情况可能会大幅改善。

所谓持续集成,简单地说,就是在整个项目开发阶段,不停地(一天数次)对项目作Build(构建),把每个人开发的代码集中在一起做编译连接、单元测试、代码审查和自动部署。这个概念来自于XP编程的每日构建和冒烟测试。我们知道,XP编程崇尚敏捷方法,要不停的迭代、测试,所谓的一次前进一小步。为了这个目的,96年就有人提出了每日构建的概念。而持续集成则更推进一步,要求一天多次构建。从2000年Martin Flower提出持续集成的概念,现在已经产生了很多种工具支持这一实践。

持续集成的内涵主要有:整个项目组共享一个代码库,每个人都可以很容易得到所有的程序;及时提交代码,每个开发人员每天至少向代码库提交一次代码,当然提交前最好在本地作私有构建;提交代码自动触发构建,构建包含编译、连接、运行单元测试、作代码检查、编译结果打包部署等过程;生成构建报告,并把构建结果及时反馈相关人员;

持续集成能带来哪些收益呢?首先,可以在项目开发阶段随时得到可部署、可测试的版本。这对领导和客户来讲可是个非常大的好处,你可以向他演示你现在有了怎样的功能,使项目的可见性大为提高,也为项目及时调整、纠偏提供了可能性;其次,对开发过程中向项目中引入的各种缺陷,可以更快地发现和修复。由于每天都在做集成和构建,你不必等到到所有功能都实现,最后集成阶段在集中发现问题,解决问题。要知道,发现缺陷的时间越早,修复它的成本也就越小。避免在发布起陷入集成的深潭;再者,及时反馈可给项目团队更多的信心。人们有个通性,喜欢看到变化,特别是这变化由自己引发,并朝着自己预定的方向演进。据说这也是一些人沉迷于电子游戏的原因。如果集成服务器不断地告诉开发人员你这一步做对了,那一步有什么什么问题,那么开发者会觉得开发过程有更多的乐趣。第四,对测试人员、项目管理者来说,也很有好处。对测试人员来说,可以更早地介入,并且每次提交给他测试的版本经过了构建阶段的自动化单元测试和逐轮的验证过程,测试的范围小且质量有相当的保证。对管理人员而言,通过构建报告可以清楚地了解项目进度,而不仅仅靠项目组报项目进度报告来了解。最后,持续集成采用一系列的自动化技术,可以有效避免重复劳动以及手工劳动有可能带来的偏差、人员之间的沟通成本,使开发人员可以把精力集中到真正需要智慧的设计、编码环节,而不是被那些环境不一致、提交编译申请等问题所困扰。

下一篇,我会介绍如何实现持续集成,及有关的工具和技术。

2008年7月25日星期五

我看公司系列之踩刹车者

从前在公司内部论坛上曾经当过一段"我看公司"的版主,目的不过是想借此推动员工对公司的管理和发展进行一些思考和交流。不料领导却颇不以为然,甚至认为这些言论对公司是一种伤害,禁止我做这个版主。现在,干脆以奥运的名义把论坛整个关掉。所以我只能自己到这里独语了。
要说公司这几年的主题词,应该要算“调整”、“交接”和“切换”了。大老板是一个精力旺盛、想法丛生、刚愎自用的人。五年来,基本上每年都会有一次大的组织调整。当然,每次调整都有势在必行的理由,甚至可能会有充分民主的讨论会,然而,当老板摆出一幅成竹在胸,预备舌战群儒的姿态后,大家基本上都会识相地欢呼赞同了,会场沉浸在领导意气风发的挥斥方遒中。
我其实是深深怀疑这种形式的调整的。愚钝如我,比较相信一动不如一静、治大国如烹小鲜之类的信念。形成一个具备战斗力的团队需要时间,团队目标的确认,工作流程的固化,大家价值观之趋同,工作方式的优化,核心领导层的形成,无不需要时间。而不断的打碎、重组无疑会一次次中断这一过程。从个体上会让员工迷失乃至流失,从组织上会导致业务停滞乃至中断,更不要说因职责调整引起的交接带来的额外成本。
在此我不想多探讨调整是否应当,频度该如何掌握,我只想谈谈如何从机制上避免这种现象。
我认为我们公司之所以如此,是因为我们缺少一个踩刹车者。一个组织,大到一个国家,小到一个公司,其实都会设有这样的角色。一个国家的管理者通常是宰相或者总理,而他并不是老大。真正的老大是皇上和总书记们,但他们不直接参与管理,而是通过选任、监视和考评宰相来实现对国家的管理。对一个公司,董事长就是皇帝的角色,总经理是宰相的角色。当宰相们实施一个举措时,皇帝们就可以较为客观地评价其效果,当不满达到设定的阈值时就会断然踩下刹车。
而在我们公司由于大老板亲自下场,就导致了踩刹车者失位。这样的好处是决策环节少,当老板决策英明时,实施力度大,见效快。坏处呢?明明前面是悬崖,却没有人敢吭声,更没有人够得着刹车。

2008年7月20日星期日

赤壁

近者奉辞伐罪,旄麾南指,刘琮束手。今治水军八十万众,方与将军会猎于吴。

昨晚看了吴宇森的赤壁,又想起这封著名的战书。长度不及一条短信,却叙事清晰,霸气十足,偏偏还有一点点礼貌和幽默感。以古文的简洁典雅,如果当时有手机,这边阿瞒一个群发,那壁厢东吴群臣捧着手机或小灵通“莫不响震失色”,该是多么可爱的场景 。可惜手机只能在当代罗罗嗦嗦地干些小李子你丫到底爱不爱我之类简单应用,时不我予,惜乎!

整部片子还是颇有大片的风采,就最后的八卦阵太假,曹军傻了吧叽地配合敌军转圈子。关羽同学扮相形似无神韵,并且像个武术表演家般爱摆pose,张飞大哥赤手空拳地向敌军的长矛撞去简直鲁莽得像李逵,并且速度之慢完全没有“势如奔马”的气势。还有一个bug,曹操给孙权下的战书是竹简,而孙的回书却是纸卷,莫非一千八百年前南方就已经比北方发达鸟?

2008年7月9日星期三

自行车

从去年7月开始,改为骑车上下班,已经一年了,每天37公里,那么大概骑行了7000公里吧。听起来很不少呢。但好像也没什么锻炼效果,除了皮肤更加黄黑一些。回家乘电梯上楼时,看镜子中的脸分明就是一个中年民工。

一开始就是想试试,乘小孟放暑假,骑她的车走了两回。感觉挺好,就去自己买了辆。一开始选了个公路车。骑起来很轻快,一路超人无数。然而很快就发现骑公路车需要一条强韧的脖子,时时抬起来看路,不然哈腰低背视野太窄。另外,它的闸位置靠前,使用不便。在一次控制不住撞上轿车后,我换了一辆兼具公路车和山地车的优点的旅行车,它的蝴蝶把有点特色,一年下来大概为我引来了大约15位搭讪者,可惜以中老年男性为主。

骑车上下班的好处是自由和时间可控。从位于西北四环的家到金宝街(最近又变成了位于王府井的东方广场),有不少风景优美的街道。上班我一般会选择沿着昆玉河的蓝靛厂南路,这是一条号称目前北京最通畅的道路。路面干净整洁,行人稀少,有专门的自行车道。路左是美丽的昆玉河,右边则有玲珑塔公园。沿着这条路骑行大约25分钟至翠微西路东转走玉渊潭南路,路过世纪坛、军博,向南转向长安街,向东大约30分钟就可以到公司。走长安街的好处是能看到不少装备专业的骑友,特别是一位骑小轮车的女孩,线路和时间几乎和我一样,可以尾随着看她那用粘绒条扎起来上下翻飞的右裤管。

另一个路径是走西三环至花园桥向东拐到车公庄路,一直向东直到东四,再向南,穿过史家胡同、东石槽胡同就到了公司。车公庄路绿化很好,自行车道两边一边是榆树,一边是银杏。榆树是北京的市树,很适合北京似的,细密的叶撑起一大片浓荫。榆树枝条形状也好看,疏朗有致,又不很高大,像年轻几岁的陈道明。7-8月份更是结满了白色的小花,地上也落了薄薄一层,细细碎碎的,车驶过,卷起一片花雨。如果从三里河路南行,走钓鱼台至木樨地那条路更漂亮,路边的松树、银杏、白杨组成高低几层的走廊,几乎有些森林的气势。行人道旁还有宽阔凄迷的绿化带,围墙高大斑驳,富贵景象确实不是树小墙新的新富可比。

回家的路差不多,不过心情更舒缓些。缓缓蹬着车经由北河沿大街向北走。单行道左边是皇城根公园,高大的梧桐、柳树闪耀着明亮的新绿,低处的冬青、合欢则明暗不定,到处都是郁郁葱葱,一派盛夏的繁华。2-3个老太持宝剑起舞,有恋人在并肩呢喃,路右边是一些小店和老宅,光着膀子的大汉,奶孩子的小媳妇,仿佛世外桃源。北行到平安大道转向西,这条路车水马龙,特别是荷花市场、南锣鼓巷,最是美女出没之地。每天都能看到一两个令人惆怅的美女,惊鸿一瞥,便各奔东西。

2008年7月6日星期日

明媚夏日

这个blog开始不久,就登录不上。今天偶尔试一下,居然又能用了。不管有话没话,还是说上几句。做事就要坚持到底嘛,甭管它有意义还是没意义。练练估计就顺手了。
雨后初晴,天空格外明媚。知了开始叫了。上午在家无事,看了几位朋友的日志,呵呵,多是自怜自恋。应该彪悍一些,关注的更多一些。其实人大都如此,都是我、我、我,除我以外,哪管洪水滔天。戒之。