巴别塔上的雇工


门户的作用
11月 30, 2008, 12:01 下午
Filed under: 八卦杂谈

Blogger应该定时察看自己博客访问统计,知道哪些文章最近常被访问,访问是从什么渠道来的,这样的feedback的价值不比博客上的评论小。刚才我在巡察访问记录的时候,发现大量的访问都是来源于http://blogsearch.google.cn

image

看了http://blogsearch.google.cn,我下午的post“007电影成为电视电影”居然位列第二条。

image

按照Google的说法,blogsearch.google.cn上的内容也应该是由程序自动选择出来的,哈,能选择上我的文章实在是荣幸。如果这样的大访问量网页上有一个对你的Blog的连接,对这个Blog的访问量在几分钟之内就会飙升。我跟踪了一会,发现访问量没有继续增长,再看看http://blogsearch.google.cn,我的文章已经不出现在第一页了,但是依然是“娱乐”频道的头条。

image

这个现象也可以理解,我想大多数用户访问http://blogsearch.google.cn是准备去“搜索”感兴趣的blog内容,并不准备利用其“频道”功能来寻找blog内容,所以一般不会去点击左侧的“娱乐”进入娱乐频道。所以,只有当连接出现在首页上的时候,才能让用户看到。



007电影成为电视电影
11月 30, 2008, 8:06 上午
Filed under: 电影电视

看了最新一部007电影《量子危机》,感觉就像是《反恐24小时》+《伯恩的身份》。作为有史以来身手最好的007,这个James Bond做事是相当的勇猛,佛挡杀佛,神挡杀神,而且每次把相关人证干掉留下一片狼藉后还总能找到线索继续追查,这不就是《24》中的鲍小强吗?自上一部《皇家赌场》开始,电影似乎是为了讲述007的成长故事,所以007不再可以保持风度翩翩的绅士形象,打完架一样是灰头土脸头破血流,这次也一样,而且James Bond可以在组织不帮忙反而帮倒忙得情况下活动,很像伯恩。

s3314353

要说动作场面此片不确,开场就是追车戏,然后是城市追逐站,接着是海战,这时候我想要是再来一个空战就齐活了,果然,没有让我失望,结尾处来了一场运输机对战斗机的空战。要说场面效果,比较差,快节奏的短镜头切换,让观众没法明白发生了什么事情。

最重要的是,情节很烂,没人指望007电影讲一个深刻的道理,但应该讲一个完整的故事,此片似乎很想讲个深刻道理,却没有把故事讲好,也许制作方想留下一些悬念,在下一部中解释什么是真正的“量子危机”,但是这样007电影真的就成为电视类型的电影了。就我个人偏好,我希望一个电影就是一个独立完整的故事,可以和上下部有些关联,但是别让人只看一部看不懂。



做Presentation不是写Spec
11月 27, 2008, 9:50 上午
Filed under: 八卦杂谈

最近参加了一些大的会议,会议上肯定有人要做Presentation,不是所有的人都能做好,当时我就用手机拍了一些认为是糟糕的Presentation的例子,可惜会场里光线一般都比较暗,用手机拍效果不是很好。

在“二十一世纪计算”论坛上,我看到这样的PowerPoint页面,Oh, My God!

图像294 

标题就有两行,内容有15行,就算坐在前排也未必能够看清楚,难道指望观众去一行一行读吗?

在前天的EE & TwC论坛上,看到类似的Slide,这个比上面的好一点,至少有一个醒目的"How?",让观众一下知道这个Slide的主体是要讲“如何…….”,但是下面的的分项太多,光数量就让人打不起精神听了。而且,这个Presentation出现在限时88秒的竞赛环节,这样没有明确重点的Slide太不应该出现了。

图像301

做Presentation主要靠说,Slide上字越少越好,像下面的Slide,直接上图片,这就比较靠谱。

图像304

前天的EE & TwC论坛上有众多人士做Presentation,明显看得出来,PM的Presentation Skill比Developer和Tester要好一些,但是所有PM/Dev/Test的水平又比做UI设计的要差一大截。主要差别就是,做UI设计的同仁们知道让每一个Slide只有一个主题,往往只有一句话和一幅图;而我们做技术的同志们,似乎觉得做Presentation就是写Spec,每一页都是一个标题然后跟着一二三四五好几个段落,恨不得把所有的细节都写下来,这样做Presentation不会有人感兴趣的。

怎样做一个像样的Presentation? 看看专家怎么说的吧



I’m APC
11月 24, 2008, 9:43 上午
Filed under: 工作心情

不久前,我意识到一个巧合,微软有一个广告叫I’m a PC",而我们部门的缩写也是APC( Ad Platform China ),那为什么不用同样的形式拍一个类似的广告宣传片"I’m APC"呢?每个人都对这镜头说一句"I’m APC, and ____“,这句话的后半部分由每个人自己决定,应该能充分体现自己的个性,最后把所有的镜头串在一起,可以清楚地看到这个团队的多样性。有了这个想法,觉得不去实现就太可惜了,于是发了一封email给大家推动一下。有趣的是,虽然email应者寥寥,但是到拍摄的那一天,却有很多人参与,最后拍摄了31个镜头。

拍摄花了很长时间,但是剪出来只有一分钟多的内容。由于拍摄计划不充足,有一些镜头效果不是很好,拍摄的时候也没有重拍,最后剪辑的时候也没有了选择。我的那个DV自带的录音设备实在不怎么样,现场录音声音太小,所以上个周末花了大力气去调整声音,用软件区过滤杂音效果并不是很好,最简单有效的方法其实就是用背景音乐去掩盖杂音。这次的制作水平实在很山寨,但是这是一次有益的尝试,积累了宝贵的经验教训 🙂

我在片中没有露脸,仅贡献了声音,就是上面Youtube自动探测出来的Thumbnail,给短腿的Foosball小人配音“I’m APC. I hate foosball"。也许Youtube探测最有代表性画面的算法里面给声音的权重比较高,所以我配音的场景被选中了 🙂

片中所有台词里,我最喜欢的是"I facilitate people",给大家一个机会展示自己,不需要告诉他们怎么表演,只需要facilitate,他们自己能够找到表达自我的最佳方式,拍video这样,其他任何团队活动都是这样。

制作这个Video是一个美妙的过程!



Love what you do
11月 22, 2008, 2:31 上午
Filed under: 八卦杂谈

 

今天才看到Steve Jobs于2005年在Stanford的演讲,Steve讲了三个自己的故事,值得我们仔细体会。

用Critical一点的思维,我们先思考一下,Steve Jobs的人生经验真的适合我们吗?我知道有一本书介绍了Steve Jobs的黑暗面,如果之前不知道Steve是谁,看了这本书的简介都会认定Steve Jobs就是一个专横跋扈、毫无人情、排挤人才的大混球。做过这些混球事的大有人在,为什么只有Steve Jobs才有幸被人用写一本书的工夫来批判,我想首先事Steve获得了一些成就,别人才会去这么批判他,如果他就是一个无名小辈,这本书也不会问世。所以,我们必须承认Steve Jobs首先还是一个有成就的人,如果你也想获得一些成就,听听他的故事没有坏处。

我们知道Steve是一个有成就的人,但是他是一个成功的人吗?有成就和成功还是有区别的,听了下面的话,你就应该相信他也是一个成功的人。

“…sometimes life is going to hit you in the head with a brick, don’t lose faith. I’m convinced that the only thing that kept me going was that I loved what I did. You’ve got to find what you love, and that is as true for work as it is for your lovers. Your work is going to fill a large part of your life, and the only way to be truly satisfied, is to do what you believe is great work. And the only way to do great work is to love what you do. If you haven’t found it yet, keep looking, and don’t settle. As with all matters of the heart, you’ll know it when you find it. And like any great relationship it just get’s better and better, as the years roll on. So keep looking. Don’t settle.”

正在看这篇Blog的你,请你扪心自问,你现在做的工作事你热爱的吗?

成功的关键一步就是深刻的反省(Deep Self-Reflection),认识自己到底是要过什么样的生活,从事什么样的工作,存在于什么样的环境,什么是你真正想要的。如果你不能认识到你自己的真正需要,你就很难获得真正的心灵满足。

别人的成功标准未必是你的成功标准,没有必要去按照别人的成功标准去要求自己,这样你实现的是别人的梦,不是自己的。

Self-Reflection会是一个长期的过程,所以,从今天就应改开始。



Microsoft放弃OneCare,Google放弃Lively
11月 20, 2008, 12:19 下午
Filed under: 八卦杂谈

今天看到两个新闻,一条是Microsoft放弃了安全产品OneCare,另一条是Google放弃了在线虚拟人生产品Lively,这两条新闻算不上轰动,因为这两个产品本身就不占多少市场份额,读者朋友,你知道Microsoft有个产品叫OneCare吗,或者你是否知道Google有个域名lively.com?

我不敢说两家公司的这个决定是绝对正确,但是我个人是比较赞同公司在必要的情况下放弃一些产品,尤其在目前经济不佳的情况下。对于有些市场,必须要放弃,以集中力量在更有把握更需要扩张的市场上获胜。

地形有通者、有挂者、有支者、有隘者、有险者、有远者。我可以往,彼可以来,曰通。通形者,先居高阳,利粮道,以战则利。可以往,难以返,曰挂。挂形者,敌无备,出而胜之,敌若有备,出而不胜,难以返,不利。我出而不利,彼出而不利,曰支。支形者,敌虽利我,我无出也,引而去之,令敌半出而击之利。隘形者,我先居之,必盈之以待敌。若敌先居之,盈而勿从,不盈而从之。险形者,我先居之,必居高阳以待敌;若敌先居之,引而去之,勿从也。远形者,势均难以挑战,战而不利。凡此六者,地之道也,将之至任,不可不察也。

——《孙子兵法 • 地形篇》

老祖宗们已经总结出这些取舍的原则,我们可以将《孙子兵法》应用于商战。

山寨版《孙子兵法• 市场篇》:

市场有发展的、成熟的、新兴的、狭窄的、动荡的、边缘的六种。

我们和竞争对手都可以方便地进入的市场,是发展的市场,对于发展中的的市场,我们要获得核心竞争力,保证资金流的通畅,这样才市场竞争中就可以获得很大的优势。

成熟的市场,我们可以进入,但是一旦进入就难以退出的市场,如果竞争对手没有进入成熟的市场,我们就应该抢先进入,如果已经被对手抢先占领了,我们进入也不大可能获胜,又很难退出,这样就对自己很不利。

新兴的市场,敌我双方抢先进入都不会有好处,在这种市场上,即使已经获得了优势,也不要轻易出击,要吸引对手进入这个市场,等他们投资一半的时候,我们再发挥优势占领市场,才能给与对手最大的打击。

客户群少但是利润高的市场是狭窄的市场(Niche Market),如果我们先进入,就要建立自己的竞争优势,争取稳定的客户,让对手无法获胜,如果对手先于我们进入市场,我们就要看他们时候具有竞争优势和稳定的客户,如果有,就不要去硬碰硬,如果没有,我们可以去争夺一把。

动荡的市场,我们抢先进入的话一定要获得稳定的客户群,如果对手抢先做到这一点,我们就不要和他们在这个市场上纠缠了。

边缘的市场中,所有竞争者的优势都差不多,在这样的市场上争夺没有好处。

对这六种市场的区分和战略决策,是CEO Executive Manager的责任(更正,这不只是CEO的责任),不得不仔细研究。

现在我们逐个举例:

搜索市场,使发展的市场,有的观点认为搜索技术已发展到头,市场也不会有什么变化,但是实际上这个战场还有得打。Microsoft不遗余力地投入这个战场,就是坚信这个市场还在发展。

成熟的市场的最好例子就是桌面操作系统市场,虽然各种桌面环境叫嚣了很多年,但是Microsoft的Windows还是占垄断地位,对于Google来说,他就不适合进入这个市场,首先不大可能获胜,而且桌面系统不像在线产品,要进行持续的维护,进入了想脱身很难。

我觉得中国IT市场就是一个新兴市场的例子,各IT外企都知道中国未来将是巨大市场,但是就是不着急进入,等着别人来开拓市场,就等着这市场发展起来之后再来抢夺胜利果实,这招也许成也许不成,拭目以待吧。

比如说医疗(Healthcare)软件市场就是狭窄的市场,这行进入得早就是有优势,首先有实力来竞争的对手就不多,其次抢先进入获得的经验积累是后来者难以超越的。

动荡的市场的例子,最好的就是社交网络服务(SNS)了,先是myspace火了一把,然后是facebook风光无限,但是这么久也没找到合适的盈利模式,这个市场不稳定,不适合过多纠缠。

边缘性的市场,比如手机铃声下载,搞一个服务每年也许能赚几个M,但是在大公司里实在无关痛痒,没有什么值得投入的。

话说回来,OneCare和Lively属于什么样的市场?

安全软件市场是成熟的市场,已经有积累很深的厂商了,干了好几年也没竞争过人家,干脆最后再阴他们一把,OneCare之后的Microsoft安全产品将免费,这个消息直接导致赛门泰克等安全软件厂商股票下跌。

Lively所属的虚拟人生服务,我觉可以说是新兴市场,也可以说是边缘市场,不管怎么样,Google是发现目前没有必要投入,决定收手了。



《保持通话》:这次是香港电影人没翻拍好
11月 17, 2008, 12:24 下午
Filed under: 电影电视

因为面临片荒,周末的时候把《保持通话》看了,这个电影是翻拍美国的一个电影Cellular,让我感觉奇怪的是,这个Cellular在中国公映过,那为什么电影大佬们愿意投资拍这样一个翻拍片呢?他们有信心翻拍可以超过原片吗?

据说美国翻拍他国的电影,原因是照顾到美国观众不愿意看字幕也不喜欢听配音。而香港翻拍美国的电影,我觉得主要是手头上没有精彩剧本,只好拿现成的熟米炒剩饭。当然,时至今日,港片不港,多是合拍片,出品人里面除了向华强or杨受成还要往往要加一个韩三平,这就更让我难以理解为什么这几个大佬会投资这样一部反拍电影了。

纵观全片,除了元素的替换之外全无新意,故事背景从美国换成了香港,女主角职业从医生换成工程师,男主角从花花公子换成单身父亲,反派腐败警察从扫毒警察换成了国际刑警(不这么换估计没法上映),正派警察从警察局报案接待员换成了落魄的交警,惹祸的主从女主角的老公换成了女主角的弟弟,手机赞助商从Nokia换成了Motorola……且慢,啊,也许这就是为什么这个电影被翻拍的原因,也许大佬们也估计到票房也高不到哪去,但是反正有Motorola提供补贴,何乐而不为。

这些钱的事情仅我个人猜测,说不准,还是说说此片的质量,谈不上粗制滥造,但是也算不上精心制作。原作Cellular中男主角开始被女友指责“没有责任感”,决心证明自己,所以在接到女主角的救命电话的时候被“我相信你是一个有责任心的人”这句话触动,投身一场生死追逐;在《保持通话》中,古天乐扮演的男主角是一个单身父亲,他需要证明给他儿子看他“说到做到”,所以接到救命电话的时候也豁出去了,但是……这有点牵强,没让人感觉男主角投身怒海有什么必然原因,编导在这个重要的情节点上控制不足。片子的剪辑也有点问题,一个镜头中古天乐因为车祸已经被撞得晕晕的,下一个镜头又精神抖擞,状态跳跃性太大。总的说来,此片也还凑合,没看过原作Cellular而且也不想看字幕的观众可以去看看,要是看过原作就不用看了。



每一个员工都首先是一个人,然后才是一个员工
11月 15, 2008, 7:48 上午
Filed under: 工作心情

每一个员工都首先是一个人,然后才是一个员工。

每一个Engineer首先是一个人,然后才是一个Engineer。

每一个Manager首先是一个人,然后才是一个Manager。

这个道理是为人处世的根本,先要了解员工作为人的需求和情感,把员工当作正常人对待,然后才能用人,不然不管桌面上的话说得多么天衣无缝,还是无法弥补员工作心里的裂痕。时局不佳,据说连Google都开始要裁人了,Google一向对内部消息封锁得很严,所以我也很怀疑这个消息中提到“(被要求离职员工)拥有一周的时间与同事告别,以及自己想出离职的原因”的真实性,如果是真的话,我觉得Google这种做法真是相当粗鲁和不尽人情。

这个世界上哪都有三六九等,有先进也有后进,这是不可改变的,我们只能接受,关键是如何处理这种差异。杰克.韦尔奇提到过,对优秀的20%员工,要激励和重用,对70%的普通表现员工,也要给予鼓励,因为他们是员工的主体,对于10%的落后人员,要给于他们帮助让他们进步,如果他们持续地属于10%,那就要用“人道的”方式请他们离开。注意,对于表现不佳的员工,首先要给他们机会,帮助他们找出问题出在哪里即使到了必须请他们走的时候,也不要只是粗暴的一脚踢开



梁念坚成为微软大中华区CEO
11月 13, 2008, 1:41 下午
Filed under: 工作心情

今天公司内部邮件宣布一个叫Simon Leung的人将成为微软大中华区CEO,我看到这个名字觉得挺眼熟的,但是一时又想不起来哪里见过,还是同事发了一个新浪上的新闻连接,我一看照片才意识到原来就是这位Simon Leung,我还在Motorola工作的时候,他就是亚太区总裁兼中国区董事长,那时候陈永正还在微软,嗬,Motorola已经给Microsoft输送了两个CEO了:-)

这倒是让我思考一个问题,为什么这些企业高层都是香港人台湾人澳门人呢?同事分析说在外企倾向于这样,因为需要一个既了解中国人,又有西方文化背景的人来主管事务,这样中西合壁的人才往往也只能出自港澳台了。



C# Explicit Implementation
11月 12, 2008, 12:23 下午
Filed under: 技术体会

前一整子研究过关于C#中Interface Implementation的问题:

Interfaces Imply "Can-Do", Not Necessarily "IS-A"

错觉:C#中一个class可以同时用implict和explicit的方法实现一个interface两次

这个话题还可以继续。

在Codeplex上面有ASP.NET MVC的源代码,随便看了看,感觉code中的注释真少:-),看到一种以前没见过的编程风格,就是某个类在实现一个interface的时候,决不用implicit implementation,都是用explicit implementation,比如MvcHandler类的实现:

public class MvcHandler : IHttpHandler, IRequiresSessionState {
    protected virtual bool IsReusable {
        get {
            return false;
        }
    }
 
    protected internal virtual void ProcessRequest(HttpContextBase httpContext) {
        ...
    }
 
    #region IHttpHandler Members
    bool IHttpHandler.IsReusable {
        get {
            return IsReusable;
        }
    }
 
    void IHttpHandler.ProcessRequest(HttpContext httpContext) {
        ProcessRequest(httpContext);
    }
    #endregion
}

有IHttpHandler的两个方法需要实现,IsReusable和ProcessRequest,都使用的是explicit implementation,然后在explicit implementation的方法中去调用同名的protected virtual方法。由于ASP.NET MVC源代码缺少文档和注释,原作者也没有留下联系方式,所以我们不可能直接得知原作者这么写的意图,但是可以分析一下这样写的好处,原作者肯定是因为有好处才这么写的。

我们都知道,使用explicit implementation的话,interface的方法就只有实现类被转化为这个interface才能被调用,就用上面的例子,下面的code是不能被编译的。

MvcHandler handler = new MvcHandler();
bool isReusable = handler.IsReusable; // compilation fail on this line

要使用IsReusable,必须让handler实例被看作一个IHttpHandler,像下面这样。

IHttpHandler handler = new MvcHandler();
bool isReusable = handler.IsReusable;

也就是说,虽然IsReusable和ProcessRequest是在MvcHandler里面实现的,但是我们不希望它有一个public方法或者属性暴露出来。

我能想象出来的原作者的初衷,是为了整个Framework的纯净,要求使用IHttpHandler方法的地方绝不关心到底是哪个类实现了它,所以使用explicit implementation,为了防止同名函数混淆,所以也不让具体做事的函数是public,但是容许其他的类继承扩展这些实现类,所以函数的modifier就是protected virtual

搜索了一下,发现专攻Framework Design Guidelines的Brad Abrams也指出了应该使用explicit implementation的情况,介绍的非常详细。