2007-12-30

印度数字?

都说阿拉伯数字,原来却是印度人发明的,这世界就是不公平啊,谁喊得声音大传播得远就有话语权,即使只是复述一遍而已。韩国人最近几年老是说些无耻之言,比如“中国黄河以北是高句丽领土(言下之意应由他们继承)”、“孔子、周公是韩国人祖先”、“中秋、端午是韩国的传统节日”……估计他们是坚信一句话:“谎言重复千遍就成了真理”,可谓狼子野心。

印度数字这一说法是昨天晚上的一个科普节目介绍的,介绍了人类对于数字的发明创造历程,discovery系列节目,拍的很有趣味性。其实印度人共享最大的可能是对0的创造与使用,将“我没有”、“我不知道”这些虚无的概念用一个0来表达,并且将0作为1、2、3等普通数字的延伸,以相同规则处理,使“无”作为“有”的一种并不特殊的特例,解决了以前的难题,对世界的数学描述更进一层,的确是很了不起的发明。

知识大多来自于对现实的抽象,抽象必然有个度的问题,如果抽象程度太低,则描述能力不够,导致“白马非马”,抽象程度过高又容易太虚空,出现“永远推不翻”的“无用”真理。因此,这个度的掌握就是关键问题。

软件设计也是如此。哪些需求算是一类问题?哪些feature可以共同实现?哪些对象可以抽象成一个类?哪些类可以抽取出一个父类?哪些函数之间是over-ride或over-write?……诸如此类的问题没有统一的机械化公式来处理,没有统一标准,所能找到只能是在一些原则上的指导,真正地掌握需要经验的积累,而非简单地对照书本所能学会的。因此,优秀的设计者很难得,靠工厂生产不出来软件,更生产不出来优秀的软件工程师。

其实在写程序中和0的发明较类似的是null对象的概念,以前看过一个设计模式,将null用具体的null对象代替,如用NullBloger代替Bloger类的null值,这样可以避免很多null引起的问题,如NullPointerException等。但这种方法也有代价,那就是对几乎所有类都要有其Null对象,实现其中的方法等。是否值得做,这就是对“度”的权衡问题。

2007-12-23

一将功成万骨枯!

在电影院看了《集结号》,好看度超出了预期,值得去电影院看。目前中国的导演中看来冯小刚算是最会讲故事的,场面也比较逼真血腥,但并不止于血腥,主要的看点在于故事本身,而非让所谓的场面、大牌演员等喧宾夺主。

前半部分和《撒哈拉沙漠阻击战》一样,也是一个以少量人来阻击大规模来犯之敌的悲壮战斗过程。顽强拼搏,为了整体利益坚决执行命令不怕牺牲是这部分故事的主旋律。之所以能以少胜多是因为执行命令的决心,而敌人在试图突破阻击受阻后就没有这个决心,导致每次都在将要成功的时候放弃,而等下次再来的时候前一次的流血付出又得重新来过,可以说败就败在那最后“一哆嗦”,败在了“坚持”。

后半部分就是《撒哈拉沙漠阻击战》所没有的了。由于在战斗中除了连长谷子地之外其他47人全部战死,尸体被埋在矿窑中无法找到,大部队也撤出并被改编,谷子地本人由于穿着敌人的服装而被误认为是敌人而俘虏,彻底丢失了身份,虽然还能上前线打仗,但一直没能恢复身份。并且由于无人能对这次战争说出所以然,所以这47人在解放后一直被算作失踪,而不能进入烈士名录,尸骨更是不知何处。多次大难不死的谷子地在自己身份丢失的困扰的同时,更放不下的是47个兄弟的“委屈”,明明为了国家而壮烈牺牲,却得不到国家的认可,家属还得备受各种待遇等歧视。让人寒心,让活人寒心,更让死人寒心,谷子地决心讨回公道。历经千辛万苦与挫折,最终证明了这个连和这些兄弟们的英勇事迹,作为“贺岁片”终于让观众可以舒一口气了。

然而正是这后半部让人思考,电影中的47勇士固然最终得到了应有的认可,历次战争中的其他无名英雄呢?他们有这么幸运吗?这些人数量有多少?没有人能知道这些,但可以肯定的是很多人就这样悄悄“失踪”了,在为整体的胜利付出生命后被人遗忘了,在庆功宴上大碗喝酒大块吃肉的是那些活下来的人,而他们连一杯祭酒也没有,因为他们献出生命后就“失踪”了,没有人替他们上报事迹替他们说话。

对于他们来说,这样的待遇当然非常不公平,他们付出的是宝贵的生命、每个人只有一次的生存机会,他们也珍惜,但为了组织的利益他们献出了,没有怨言,没有退缩。而对组织来说,像他们那样付出的个体的确又太多了,多到“无法”统计,并且组织的成功正是靠着他们的付出,很多个体的付出,对组织来说这已习以为常,本来的设计就是如此。因此想让国家像谷子地那样重视这47个孤魂野鬼实在是太难了,这也是为什么要历经那么多艰辛才能达到本应该很容易达到的目标:追认烈士,如此而已,相较于他们付出的宝贵生命,烈士称号和一座纪念碑算什么呢?!如此地不成比例,而又如此地难!

所有的组织,不仅仅是国家,是否该认真反思对个体的牺牲和奉献的回报呢?一辈子的时光和衣食之用是否成比例呢?这是个问题,一个需要认真思考和对待的问题。

里面还有一个细节比较有意思,团长在向谷子地连长说明了任务后,临了又让谷子地复述了一遍,这个细节可能是让观众更明白任务的内容,但这对于命令下达者确认命令接收者完全明白任务也很重要,是重要的信息传递确认过程。

2007-12-21

Yes Or No

“落枕”了,应该是肌肉拉伤,左右摇头没事,向上抬头疼痛。老天为啥让我这么郁闷?难道是最近点头太少,摇头太多导致?点头太少也就是缺少上下方向的运动,导致僵化,看来是有意警告我:多听取别人的意见,敞开思想,多接受,少排斥!

本周和人“大战”两次,一次电话会议,一次email,电话上没能控制自己情绪,还是反应太快,没办法。不过总不能窝窝囊囊,遇到挑战绝不挂免战牌,迎头痛击,痛快!不过事后对情绪影响还是有一些,感觉不值得,别人愚蠢总不能自己也要跟上。email的回复上也有考虑不周,某些言辞上没有考虑对方感受,中国人面子很重要!总之,心态要平和,否则上天会有报应,比如落枕。

今天下午参加了另外两个team的Architecture介绍,还是有所收获的。从ISG组的讨论中增强了对我们正在做的产品的前途和方向的信心,对之前做的vision更加自信。对SMPP Stack实现架构的了解基本确认了为目前产品设计的新构架的可行性,基本思想不谋而合。

2007-12-18

战略的时空拓展

考虑战略时,如果局限于特定的时空,可能没有优势,但如果能将时空拓展则可能获得优势。如一个产品的竞争,在此时此地可能无法和竞争对手相比,是否要放弃呢?坚持一年会怎样?长期会有什么影响?如果将战场开辟到海外或农村市场会怎样?

项羽垓下突围,被追至东城后对着最后的二十八个弟兄的感叹:“吾起兵至今八岁矣,身七十余战,所当者破,所击者服,未尝败北,遂伯有天下。然今卒困于此,此天亡我,非战之罪也……”,最终在一番表演战之后于乌江自刎,可悲可叹!虽然其最后的自我评价有执迷不悟的成分,但大体上也是没有错的,“时空”就是“天”,虽然百战百胜,但没有把握战略的时空因素,在大局上失败,最终的结局和百战百败是一样的。因此,亡项羽的的确是“天”,只是这个“天”本也是可以控制和影响的而他没有注意到,这个责任是推脱不了的。

2007-12-16

战争,血,暴力

不知怎的,居然喜欢看《大刀》,并且对那些砍杀场面尤其感兴趣,甚至看这个电视本身就是等待那些手起刀落人头落地血柱上喷的表演,看着很过瘾。我怎么了?为了看这些暴力镜头而看一部电视剧,不可思议。

昨天晚上,电影频道演的《决战斯大林格勒》,德国拍的。本来对于这类二战题材的电影没有什么好感,但一看是德国拍的,很好奇德国人怎么来说这样的故事。

影片拍得还是不错的,本来以为纳粹德国的士兵都是杀人机器,冷酷无情、杀人如麻、意志坚定,这些既有想像在电影中得到了纠正,影片主要强调这群人也有感情,也是普通人,在阵地上恐惧,怕死,具有怜悯之心。故事的主角最后还因为对战争的失望而试图逃兵,最终没有随“将军”投降苏联,而是选择穿越雪原想回到祖国,结局是悲惨的,他和同伴最终没有能战胜雪地,最终倒在了俄罗斯的雪地上,任凭风雪吹打,再也无法回到那个他们“跑到两千多公里之外的他国”保卫的祖国。

作为德国拍这样的电影,可能从人性上来讲故事是最恰当的了,他们不能也没有资格拍英雄、爱国之类的题材,但这反而是这部电影的优点,从人性上反思战争带来的伤害,远比一味地反映英勇杀敌要震撼人心,给人以反思。如果你把对方也看成和自己一样的人,有感情有思想有道德的人,而不是妖魔或低级动物,还能下得了手吗?很多的厮杀来自于对对方作为人的不认可,而这正是纳粹德国和日本发动战争的燃料。如果他们认同犹太人中国人和他们具有同样品质,怎么会忍心屠杀?人养宠物时间长了都会因为对情感可交流的认同而产生感情,何况同为人类?!

影片结尾字幕显示的是斯大林格勒保卫战中双方伤亡人数100万,故事中的德军的一个军团26万人被包围,9万人投降,6000人战后回到德国,其他人永远地长眠在异国他乡。正可谓:可怜无定河边骨,犹是春归梦里人。《大刀》的结局也一样,剧中能叫上名字的人基本死光了,主角也不例外,中国人这样,日本人也一样。

战争是残酷的,和平来之不易。但人类是健忘的,甚至像日本人那样,根本就没有学到,没有反思和忏悔,谁敢说刚刚过去的那场大战是人类的最后一场大战呢?!恐怕自人类进入“文明”以来的每场战争过后都会有人认为或希望那将是最后一场,但那并不是。

秦人不暇自哀,而后人哀之;后人哀之而不鉴之,亦使后人而复哀后人也……

2007-12-12

jaybaz [MS] WebLog : Parting words for dear friends

鸟之将死,其鸣也哀;人之将死,其言也善。

话说微软的一个开发主管将要离开微软,回想往日峥嵘岁月,情随事迁,感慨系之,于是有如下博客一篇,作为临别善言。

jaybaz [MS] WebLog : Parting words for dear friends

他希望同仁们注意五点:

  1. Clearest code wins:让代码简单点,让人能读懂,重构是个好工具。
  2. OO isn't a fad:面向对象也是个好东西,不要因为不熟悉而抵制,不要用C的习惯来写C++程序,虽然编译起来没有问题。这应该是个共性的问题,当遇到新技术不熟悉时,总是有抵制的欲望。学习吧,不断地学习,并且要学得地道。
  3. It's OK to use someone else's code:嗯,放弃自己动手丰衣足食的冲动,树叶有砖攻嘛。Bits copy是不用花钱的,所以这是省钱或赢利的好方法。但是如何能在公司范围建立一个共享库也是需要花精力的,如何让别人知道能重用什么,怎么重用,这需要好方法和管理。
  4. Design your problems away:发现问题后不要case by case地救火,而是要找出root cause,做出防范,尤其是设计上改进。《第五项修炼》中称之为找出结构性问题,找出杠杆点。
  5. We can do better!:很多事情看起来没有更好的方法了,实际情况当然是有,有改进的空间。人类文明是否到达顶点了?当然没有。所以我们可以做得更好!

这些话很中肯,问题也是普遍存在的,不光对微软。

只是,为什么要等到离开前才说呢?甚至只是在blog上喃喃自语。之前做出改进这些的努力了吗?也许有其不得已之处。

心有戚戚焉……

2007-12-04

撒哈拉沙漠阻击战

前晚电视上演的一部老电影,没有大场面,没有美景,只有沙漠,却挺好看。讲述的是几名盟军士兵在撒哈拉沙漠中大战几百德国士兵的故事,充分体现了美国人的英雄观。从中间开始看的,因此不知道为什么就这几名盟军士兵,他们又为什么在沙漠中晃荡以至于口渴难耐,寻找水源。他们的运气不赖,找到了。相较之下一小队德国士兵的运气就差多了,来晚了一步,受到先到者的阻击,结果被消灭,两人被活捉,其中一人在凉水的引诱下说出了德军大部队的位置以及缺水的“商业”秘密,让他们来正是为了寻找水源。

获知这个商业秘密让那个领头的美国中士乐坏了,向那个德国俘虏提出用水换他们的食物,为了达成交易,就放了那两个士兵回去把大部队带过来。当然如果就是这个故事,美国人是不会去拍成电影全世界丢人现眼的,这和美国人救世界的高大形象不符。那个中士使用的是诱敌深入之计,实际上想把德军大部队在此拖住,为盟军大部队的行动赢得时间。当然这个想法很好,可是他们只有七八个人,将要面对的是四五百个渴疯了的德军,因此风险极大,照他对其他几个兄弟的说法是成功率1%,另外,这可不是炒股,失败了就是几个钱嘛,这可是拼命,当时的情形就是拿鸡蛋要碰石头。值不值得?这个多国部队能否听这个中士的?

值不值得这个不好判断,尤其不能由观众判断。中士的理由就是只要能拖住敌人一段时间,对于盟军的部署是有利的,也许就能对战局有决定性作用,因此是值得的。他这个想法是和一个有着上校军衔的军医商量的,看起来是那个上校委托他带队的,可能看中了他的“技术”才能,虽然没有军衔,但在沙漠中这不重要,重要的是能将这几个人带出沙漠,军医上校的“授权”是很合适的。上校一开始是反对的,原因很简单,这是送死,而他让中士带队的本意是安全地将这些人带出沙漠,阻击德军不符合目标。中士坚持的理由是这几个人是士兵,士兵的职责是打击敌人取得胜利,而不是走出沙漠,好比软件开发者的职责是开发出高质量的软件,而不是走流程或每天按时上下班。

上校同意了,下面还得说服整个团队。按说这好办,军人的职责是服从命令,但不同情况下也需要不同处理。这几个人的组成很复杂,有美国人、英国人、法国老弟、非洲兄弟等等,显然是个临时团队,并且这是要去完成不可能完成的任务,简单的命令可能会引起相反的作用。美国中士很清楚这点,于是没有直接下命令,而是说清楚了本项目的意义,艰苦性,直接说明了成功率只有1%,并且有极大可能葬身于此。对于团队来说,这是一次透明的沟通,去留自便,很民主的样子。上校通知首先表态愿意留下来共同作战。接下来最不怕死的也表态留下来,于是要面子的哪好意思走?!最终全部自愿留下来。这是取胜的第一步,很关键,大家都是在知情情况下自愿的,有很强的内在激励。这里的技巧就是首先说法上校同志,有个强力盟友支持,带动其他人就容易了。

由于人太少了,要对付的敌人太多,因此军医上校也不得不赤膊上阵,端起机枪现学现卖。还甭说,经过简单培训,效果很好,能独挡一面,起到很大作用。看来只要是善于利用,看似闲人的人是可以不闲的,当然这要求培训成本很低才划算,如果敌人来了上校同志还没有学会,还要拽个人继续讲解,那就算帮倒忙了。另外可见,面对艰巨、紧急的任务,小团队需要的是能真正干活、直接出成果的人,不需要“闲杂人等”。军医在大规模战争中可以拿手术刀,在这次面对不可能完成的任务时就必须拿起大砍刀,需要直接贡献杀敌,而非救死扶伤,因为这里除了死不会有伤,至少在打退敌人之前不会有“伤员”。紧急开发中的项目何尝不是如此?!

最终怎样?当然赢了!击退两次疯狂进攻之后,快要渴死的德军士兵在带头大哥被法国老弟“斩首”(利用谈判之机,果断实施“擒贼擒王”之战术,杀掉德军上校之后牺牲)之后失去信心,向仅剩的两个人投降,这两个人坚持到了最终的胜利,顺利对几百名士兵缴械,等来了援军,完成了自定义的任务。

谁说小团队不能完成“巨型”任务?只要有1%的可能,试一下总比不试好,尤其是在没有其他更重要的事可做的时候。只有对组织有利的,职业人士是有责任去为之努力的,即使没有上级的命令必须做!所谓:苟利国家生死以,岂因祸福避趋之?!

这是一个自主型团队的故事,自己发现机会,发起项目,打造团队,培训,战斗,坚持战斗,谈判,最终完成了看似不可完成的任务。

精彩的故事,精彩的案例。

2007-12-01

同居一周年,请勒紧裤腰带

嗯,是的,勒紧裤腰带。这是同居一周年纪念活动的一部分。

为什么?勒紧裤腰带就是少吃点,节省点,目前的情况你们是知道的,我们又亏损了,投资者又没有耐心或者说贼精,股票比去年的今天,刚同居时跌了三分之一。唉,日子并没有因为傍大款而好过啊!

大家甭嚷嚷了,这同时也是好事嘛,每餐减量一半对减肥效果好极了,从执行到现在效果很明显,这是有目共睹的。另外,我们已经将这个减肥方法申请专利了,其他人要使用这个方法必须将那半餐上缴给我们。

为什么Google这些暴发户们可以放开裤腰带?这个还用问吗?!因为他们是爆发户,最先发现并抢占了一个金矿,所以他们现在可以敞开裤腰带。但要相信总有一天更多的人会发现这个秘密,用尽一切手段去抢夺。参与争抢的土匪会越来越多,直到大家能抢到的金子只够在旁边地摊买水喝的程度,新土匪才会死了分杯羹的想法。这时Google们就会考虑勒紧敞开着的裤腰带了,否则就面临着没钱买水喝的困境了。到这个阶段,淘金产业算是进入成熟期了。处于成熟产业的土匪们必须从牙缝里省钱维持生存,这就是我们的生存状况,从古至今大部分人的生存状况,必须要活下去,所以必须勒紧裤腰带。

不要抱怨,这是历史的必然,是自然的规律。曾经年少时我们也阔过,和Google一样阔过,但那是过去了,现在我们长大了,回不到从前了。

你问要勒多长时间?嗯……一百年不变……也许永远,直到这里的金子被淘尽,我们被迫找到下一个金矿……

OK,我们现在就出发吧,边走边勒,只为那遥远的金矿……

 

BTW:在朗讯三周年,在阿朗一周年