• 进化式设计思路2 - [web]

    2008-07-17

    软件工程的目的在于平衡资源、效率与质量之间的平衡,应用到架构与细节设计的层面就会集中在开发效率与质量上。传统的工程哲学认为,在设计开发之初明确需求,在设计开发与维护的全程随时跟踪质量。而对于需求变更的情况,要么让客户为变更的需求支付额外的成本,要么在原有的的架构上做一些拙劣的修补。这两种应对措施一个是阻碍问题,一个是掩盖问题,这种不合作的态度多少显示出传统软件工程在应对变化时的无能。

    是什么造成了这种不合作的态度?是设计。软件工程虽然没有对架构与细节设计做过多的干预,但是对效率和质量却有硬性要求。大多数设计者脑袋里不停回响的三个词就是“效率,效率,效率”,而作为coder出身的他们也更倾向于向coding的过程要效率,于是,层出不穷的快速开发工具、框架,各种名目繁多的设计架构,几乎都不外乎是为了减少开发人员的敲代码的工作量。它们有时习惯于把一段看似复杂的逻辑包装成简单的接口,有时又会为一些简单的任务设计出庞大华丽而又臃肿笨拙的结构。

    我刚刚看过一篇ASP.NET的技术文章,作者仅仅为了生成一段HTML,华丽而又炫技的使用了user control, customized HttpHandler, IIS ISAPI Mapping以及JavaScript的prototype Ajax framework.这个方案的唯一目的是避免页面刷新,唯一优点是提高user control的复用性,却引入了client id conflict的问题(更不用说这样的user control无法支持postback)。这个时候,一个回复者又创造性的提出了“自己维护控件树”的修补方案——我的亲娘啊,这就是我们现在软件工业的设计者和开发者们。

    除此以外,我还亲眼见过那种用xsl来包装JavaScript框架,然后用自定义的server control来生成xsl,然后在user control中进行xslt,然后用Altas框架加载这些user control,最后还用JavaScript去填补Atlas的设计方案。对了,我忘了说作为xml的数据源是怎么来的:将xml数据插入Diesel Engine,然后创建一个web service来query这些数据,接着用一个模块将query来数据插入数据库,然后再从数据库中读取这些数据,然后再将这些数据转换成xml——由于这些不同的工作都由不同的team开发,所以大家都尽可能的发挥的主观能动性来增加系统复杂度:设计web service的人使用了最新的.NET SOA框架,设计读取数据库的人使用了Nhibernate框架。你也许觉得眼熟,这套设计方案非常像那些胎死腹中的“大项目”,实际上,它不仅仅是胎死腹中而已,它甚至把整个公司都拖下了水——因为难以快速响应客户的需求变更,公司错过了最重要的几个订单,接下来几个关键的项目负责人因为缺乏维护的信心或者要做替罪羊而离开公司,最后项目难以为继,公司被兼并,故事结束。

    我觉得那些客户肯定会一头雾水,他们只是想要一个普通的电子商务网站而已,能罗列商品信息,能让客户订购商品,只是这么简单的需求,竟然需要长达近2年的开发周期——他们当然不会知道,他们需要的功能其实在最初的2个月内就开发完成了,剩下的时间就是在将这个项目变得足够大,足够复杂,足够难以维护。

    (待续)

  • 多点触摸之二 - [web]

    2008-06-01

    多点触摸

    半年前写了一篇关于多点触摸技术的短文,刚刚看到新的消息,4个月后微软就将推出Windows 7触摸技术SDK。我虽然不属狗,不过貌似嗅觉还过得去,文中预言2年内多点触摸会成为主流,现在看来差不离了。虽然Windows 7很可能会在3年后才正式面世,但是在此之前微软很可能会推出一款多点触摸版本的Vista,这样做至少有几个好处:

    1、微软为了抢占数字电视市场,原计划跟着Vista推出的Media Center就曾提前于Vista在XP上面世

    2、Iphone的成功说明Apple已经做好了准备,搞不好连支持多点触摸的样机都有了,所以微软恐怕等不了3年了

    3、 为了刺激Vista的销售,微软也很有理由像当时推出XP-MCE一样推出一款支持多点触摸的Vista版本

    至于这个版本的名字,也许是Vista Surface,也许是Vista-MPTE(Multi-Point Touch Edition),谁知道呢。关于OS暂时就说到这里,下面谈硬件。

     

    根据Engadget的投票结果来看,用户似乎并不会马上对支持多点触摸的屏幕产生太大的兴趣,一方面是指纹会把屏幕弄得很脏,另一方面,恐怕也是最主要的问题,就是成本。估计支持多点触摸的屏幕一开始的主流市场会是商用领域。而民用领域能成为主流的很可能会是笔记本上的那块触摸板,在一块触摸板上做多点触摸显然比在屏幕上做容易的多,笔记本可以直接更新换代,台式机则可能推出一个usb接口的触摸板外设。

    OS和硬件都说完了,剩下软件方面——等4个月后拿到微软的SDK再说吧。

  • 进化式设计思路 - [web]

    2008-05-30

    开始的框架要尽可能简单,简洁,甚至简陋。

    接下来在增加功能的过程中不断重构,将重复的部分整合,同时维持不相关功能之间的独立性。

    新功能的设计目标应当是能植入任何简陋的框架,否则就不是好的设计。

  • 一、百度——没有人比搜索引擎更了解网络上流行什么

    2007年,百度十大上升最快关键字:嫦娥一号、陈晓旭、奥运门票、死了都不卖、猪肉涨价、物权法、重庆最牛钉子户、加息、石靖、杨惠妍。其中国家大事包括嫦娥一号、物权法都能在主流媒体及门户上看到相关报道;死了都不卖、猪肉涨价以及加息属于财经问题,用户大都了解现状,但是需要看到一些专家评论,这方面有的门户做的好,有的做的一般;陈晓旭、重庆最牛钉子户、石靖与杨惠妍可以算的上是年度人物(居然都是女人=3=),所以除了媒体提供的信息,用户们也需要了解一些来龙去脉(主要是八卦和图片之类),这方面也不是门户所长。当然,这还只是“上升最快”的十大,还有个“十大热门”更能说明问题,前两年的十大热门关键字中九个都是娱乐,今年还好,少了一个,剩下两个——十七大、和谐社会。

    百度很敏锐的从这些关键字中找到了门户的短板,以贴吧、知道和百科三管齐下,形成了这类内容的“门户”。当然,百度贯彻这个策略已经很多年,这里只是拿2007年的排名做论据而已,如果把前几年的数据翻出来也相差不到哪里去。

    二、谷歌——除了搜索,你还能剩下些什么?

    Google风靡世界的时候,到了中国本土却成了桔生淮北,不妨继续从十大关键字中找找原因吧。2007年,Google全球增长最快的十大搜索关键字:iphone、badoo(多语种社交网站,可根据IP判断用户来源然后分配相应语种)、facebook(美国第二大社交网站)、dailymotion(视频共享网站)、webkinz(“网娃”儿童社区)、youtube(Google旗下视频共享网站)、eBuddy(即时通信工具)、second life(社交网站)、hi5(社交网站)、club penguin(“企鹅俱乐部”儿童社区)——好家伙,10个关键字7个是和“社交”相关的,剩下的包括2个视频网站和一个iphone,可见欧美人和我们中国人使用搜索引擎的目的那是大大的不同啊。当然,美国地区的排名略有不同,扣掉badoo、dailymotion、ebuddy、second life和hi5,多了tmz(一个名人新闻网站,以率先报道社交名媛帕丽斯·希尔顿入狱事件而闻名)、transformers(《变形金刚》)、myspace(美国第一大社交网站)、heroes(美剧《英雄》)、Anna Nicole Smith(安娜-尼可·史密斯,美国艳星,今年2月因滥用药物猝死)——美国人看来更娱乐一些。

    有一点毋庸置疑的是,欧美互联网的发展较之东亚快的多,除了起步较早之外,英语的广泛传播也是最重要的因素之一。所以英语内容无论从广度还是深度来说,都大大超出了汉语、日语和韩国语。Google的设计初衷是挖掘和储存海量数据,实际上他们的互联网也达到了海量的水平,至少就八卦娱乐和交友来说是如此。相对来说,中国的互联网还处在一种“干旱”的状态,特别是八卦娱乐和交友(这类内容也许庸俗,但至少健康)。所以门户这种以人工组织内容的方式可以活的很好,而QQ这种社交平台(主要针对24岁一下用户群体)也能超越MSN成为国内IM的霸主。至于百度,可以说是西学(搜索)为体,中学(娱乐资讯)为用,走出了一条有中国特色的搜索引擎之路。

    说到这里,回首看看谷歌,它真的是在国门外原地踏步啊。

    三、搜索引擎的生态圈

    国外的生态圈是这样的,搜索引擎专心做索引工作,具体的内容交给各个垂直网站,包括新闻、娱乐、财经、IT、体育等等,各自都有各自的龙头站点,而且决不跨领域搞扩张。

    国内的生态圈是这样的,搜索引擎不能专心做索引工作,因为大部分关键字都没什么有价值的内容,做的好的垂直网站屈指可数,大多数情况下都是相似的网站之间激烈竞争,而且抄袭严重(不信你搜搜“法师的2.3.2版本PVP天赋解析”,诸如新浪、猫扑、QQ、17173、duowan、PCGames……全都“转载”,而且tnnd署名都不是我)所以搜索引擎就不得不参与到内容的生产中去,哪怕有朝一日批上“门户”的外衣。

    不妨这样说吧,如果把网站自己提供内容定义为Web 1.0,把用户提供内容定义为Web 2.0,那么搜索引擎就是介于两者之间的Web 1.5——机器提供内容。1.0为1.5提供了内容基础,1.5为2.0培养了用户基础,现在中国是三步并两步的追赶欧美速度,基础打不牢,后面的排兵布阵自然也要有一点变化才行。

    三点五、垂直搜索引擎——在沙漠里卖的矿泉水

    你再有技术含量,什么十七层过滤,什么富含矿物质维生素——产能有限,一切都是白搭。一句话,现阶段不能自己生产内容的垂直网站都活不长。 

  • 做了一个粗略的表格,将三大公司在Web各个领域的产品进行了一下对比,红色的表示在该领域占有龙头位置。

    一、短板。在与Google的Web之战中,Microsoft的短板是门户、搜索、图片和视频服务。(当然有人也许知道比尔盖茨自己有一个叫做Corbis的图片网站在商业图片领域已经做到了行业老二的位置,那是比尔自己的玩具,并不算是MS的资产)环顾当今互联网巨头,没有任何一个公司能同时在这四个领域做到头把交椅,Google拥有了最好的搜索和视频服务,Yahoo!拥有了最好的门户和图片服务。如果要和Google争夺今后5年的Web市场,Yahoo!是最优的合并目标。

    二、垄断。幸好及时启动Live战略,将MSN,Hotmail合并,这才使Microsoft在激烈的竞争中仍保有一块一亩三分地——但这并不值得庆幸。首先,他的Live并没有在Email、IM和Blog服务的市场上达到垄断地位;其次,Yahoo!和Google不仅分别独占了他所不擅长的4个市场,还在他擅长的3个市场中同他瓜分份额。对于习惯了“独占”战略的Microsoft来说,游戏玩到这个地步实在是糟透了。

    三、门户与搜索。2006年,美国互联网广告的市场规模达到170亿美元,年增长幅度35%,其中搜索引擎广告占到40%,67亿美元。可以说搜索与门户仍然是互联网最大的两块蛋糕。比起Yahoo!的门户来说,Live门户像个扶不起的阿斗;比起Google来说,Live Search所占的份额只有1/6不到,而且是稳中有降;而Mail,Messenger与Live Space所能投放广告的空间太少,毕竟Microsoft不能学QQ那样弄出个Q币,把大把大把的用户直接换算成大把大把的票子。所以互联网商业价值的大头仍然在广告领域,门户与搜索才是王道。

    四、成本。Yahoo!有最好的门户和图片服务,在搜索领域也有20-25%的市场份额,照理说吃香的喝辣的,应该不会有生存危机。但尾大难调,不要说他找不到新的增长点,就是找到了也难以付诸实施——过去做的到,但是现在困难,因为这点市场份额支撑不了这个成本。同样,对于Microsoft来说处境也差不多。有意思的是,两家公司在Web的同一个战场上角逐,花很多钱在做着一模一样的事情,这在Google看来是最开心不过的事,坐山观虎斗嘛。如果M和Y能花一份钱买到两个市场,这样的游戏才有玩下去的可能。也是因为如此,Google第一个跳出来说反对。现在事情终于黄了,Yahoo!的高层太昏了,我打赌Larry和Sergey肯定开心的开香槟庆祝去了。

    五、国内。 国内的格局也可以作出这样一个表格,上面会有新浪、搜狐、网易、腾讯、百度和千橡,当然这种格局难以同上面三家巨头类比,因为其中有太多的不同,太多的中国特色。也是因为这个原因,在中国做互联网真的很有意思,让人欲罢不能。