随笔-72  评论-20  文章-0  trackbacks-1
金山软件事业部的技术总监许式伟常常称自己是一个计算机的狂热爱好者。对于他深厚的软件开发经历,他只简单的分成了桌面开发阶段、服务器开发阶段。但我想这每一个阶段中都蕴涵了很多关于他奋斗故事。

许式伟将他的2个开发阶段分成了4个时期,第一个时期是WPS Office旧版本的开发,包括WPS Office,WPS Office 2002。第二个时期是WPS Office V6也就是WPS Office 2005的开发,这一开发过程也是许式伟到现在都非常难望的一段经历。整个开发历时3年,完全是从零开始重新编写全新的WPS Office。

许式伟在这个项目中负责了整个系统的架构,许式伟是这样描述这一段的“这段时间是辛苦的,但也是个人觉得能力提升最迅速的阶段。没有比做一个Office还要复杂的系统了,这段经历使我从关注“设计/编码的技巧”上,转到了关注“设计的可实施性、可检验(测试)性”上。”

走过了最难忘也是最辛苦的第二个时期,已经从当初蜕变了的许式伟开始了对互联网的探究,这构成他的第三个时期,也就是主攻搜索引擎技术和协同推荐。

今年,在公司的支持下,许式伟在年初时决定成立“金山实验室”,这不仅仅对公司是一件很好的事情,对许式伟来说,有了能够让他将更多的想法变成现实和探索更多事情的平台,基于此,许式伟的技术生涯正式迈进了第四个时期。许式伟说其实他曾经最引以为豪的是做了一个世上速度最快的Word文档生成模块,“我认为它比微软的还要快”许式伟这样说,“它依赖了我写的一个内存管理组件(AutoFreeAlloc),关于最袖珍的垃圾回收器——AutoFreeAlloc在互联网上现在不少转载,大家的关注度也很高,我收到的网友来信有半数是关于它的。”现在他希望“金山实验室”的建立将会超过他之前的成就,成为他最自豪的事情。

许式伟曾被称作是金山最年轻的架构师,针对于现在软件业对架构师这一概念理解的混淆,许式伟认为架构师从定义上来讲,是对系统进行分析,并确定如何划分系统、定义各个子系统规格的人。

某个子系统如果比较关键或者很复杂,那么还需要子系统架构师继续细化这个系统。架构师的设计对后续的开发是决定性的。如果架构师的设计出现了问题,例如架构的可实施性不高,系统耦合很强,那么很容易出现代码需要大量重构的情况,最糟糕的情况是,有时候某个模块稍微的改动将会牵连到整个系统,令你想改都改不了。

那么要成长为一名合格的架构师,许式伟总结了几个原则,希望能对即将承担架构师职责的技术开发者有所启发:
1、必须要对产品的需求有透彻的理解。
GOF有这样一句话: “设计应该支持变化” ——获得最大限度复用的关键在于对新需求和已有需求发生变化时的预见性,要求你的系统设计要能够相应地改进。"程序能力尤其是框架能力并不是天生的,而是取决于程序架构师对需求的理解程度。如果在不了解系统需求的前提下,就开始进行设计,那么即使是天才,也不能设计出完美的框架。
 
2、丰富的编码经验。
软件开发是实践科学,是不可能有人天生就有很强的设计能力的。只有大量的经验后,才能够深刻体会"设计的可实施性远远重要过灵巧的设计"这句话,并且知道如何做才能够使得设计易被实施。

上面的这两点是你想成长为一名架构师所必须具备的能力,那么如何能成为一名好的架构师呢?是不是你有了丰富的编码经验就能成为一名架构师呢?答案当然是否定的,丰富的编码经验,是成为好的架构师的必要条件,但绝对不是充要条件。

这也是为什么现在架构师仍然属于白金级的技术价值最高的人群,要成长为一名好的架构师,还有以下的三点需要做好:
1、理解需求。
2、编码。
3、反思。

有回顾才有进步。架构师往往是个完美主义者。一个模块做了之后,总会不断去想是否还可以做得更好。总是自我承认,自我欣赏是绝不会成为一名好的架构师的。通过许式伟对架构师的这一番讲解,是不是也会引起你的一番反思呢?

在采访许式伟的过程中,我不仅体会到了一个软件开发人员踏实的进取之路,他对“金山实验室”定位的理解,对WPS有不同于大家的更深刻的认识,所以,在下篇我们会详细讲述到底“金山实验室”是怎样的定位?WPS的前景在哪里?而Winx又是怎样的一个项目?请继续关注明天的专访许式伟:技术狂热分子的蜕变经历

许式伟现在是“金山实验室”的负责人。谈到成立实验室的原因,许式伟说:“我看到了一个事实,在普通项目中,我们往往为了迫于进度的压力,容易放弃或者简化对某些关键技术(通常很难规划详细的时间线)的要求。成立实验室的初衷,在于去做一些普通项目组想做但不敢做的事情。”

其次,这也是一种另外形式的细分工,实验室的研究成果会反作用于项目,提高产品的竞争力。许式伟说:“我们意识到开源社区蕴含无比的能量,我们希望实验室是可以研究开源社区的成果”,所以“金山实验室”是很开放的,我们改进这些项目成果,并会继续将这些成果反馈到开源社区。

谈到中国应用软件开发史上里程碑式的产品WPS,许式伟认为人们对WPS的认识并不充足,因此,每次当许式伟有机会,就会向大家介绍WPS Office。为了实现“一样的Office”,从2002年开始,研发的WPS Office 2005及其后的版本的所有代码都是推倒全部重写的,这样做的重点就是要与MS Office做到“文件格式兼容

这项工作虽然多数办公软件厂商都在做,但是没有像许式伟他们那样是从内核的数据组织、排版引擎的排版算法来兼容MS Office,因此,得到的效果也都无法象他们做得那样彻底,包括了“用户习惯兼容”和“二次开发接口兼容”。

这样做的目的也很明确:减少用户从MS Office迁移到WPS Office的代价。而另外很重要的一点是,这样的产品只有20M大小,非常方便网上下载。 这些努力也获得了回报,WPS Office的用户现在飞速上扬。许式伟说:“我以前机器上都习惯同时安装WPS Office和MS Office的,但是这种情况从WPS Office 2005之后得到了改变。我的机器现在已经只需要安装WPS Office了”。

针对WPS以后的发展走向?他为我们列出了以下的几点规划。一是走国际化路线,支持多种语言,让WPS在世界各地开花结果;二是根据用户的多元化需求不断推出更好的产品。这两条线并行前行,WPS会有更加广阔的前景。

其实谈到开源社区,许式伟最响亮的当属作为Winx的第一作者了。关于Winx,许式伟有一个精辟的概括“MOST SIMPLE BUT EFFECTIVE(简单而高效)”。WINX目前来说是一个Windows平台的界面库。由于基于WTL,因此WINX可以认为是WTL的扩展,完成度还是挺高的。它有这样的一些特点:
1、卓越的消息分派机制。正是因为有这个核心支撑,使得WINX成为迄今为止最高效的界面库。
2、简单易用(SIMPLE)是第一目标,尽量使可视化(WYSIWYG)界面开发成为可能。
3、开放。WINX代码是可以和WTL、MFC等界面库的代码共存的。
4、兼容。尽管有更简洁的方法,但WINX还是提供了MFC程序员熟悉的调用界面,并尽量使得MFC代码可以轻松移植到WINX下。
5、不重复制造轮子。在没有一个卓越的解决方案以区别于现有系统之前,先沿用现有的。WINX建立于WTL之上,重用了多数的WTL组件。

关于这个项目的未来发展,许式伟希望WINX可以向手机平台发展。也希望WINX是可视化的界面开发方式。虽然这些目前还在探索阶段。但是有不少人都表示过希望参与WINX的工作,这也让许式伟感到很欣慰。对于想参与这个项目的人,许式伟一般都会推荐他们先了解一下WINX,并先写一些WINX的文档,或者实际去用WINX做些东西。

因为只有你理解了它,才可以去做它的进一步开发。目前Winx的团队成员不多,但虽然不是WINX的团队成员,大家仍然还是可以为它做贡献的。对于现在很多技术人员对不知道该如何参与开源项目的困惑,许式伟说:“在我把WINX开源前,我也觉得开源离我很遥远,尽管我接触了不少开源项目。但是我把WINX开源后,我才真正地感受到开源社区的呼吸,才为它蕴含的超强能量而感到惊叹不已。后来我向WTL之父提出了加入WTL团队的请求。这不止因为WINX是和WTL血脉相连,也因为我从没有象现在那样渴望为开源社区贡献自己的力量。 ”(全文完)
posted on 2008-02-16 21:48 前方的路 阅读(647) 评论(0)  编辑  收藏 所属分类: 感悟

只有注册用户登录后才能发表评论。


网站导航: