从去年到今年,开放这个词也在互联网上炒得火热,自己一年多的工作也让自己对开放这个词有了自己的一些理解和认识。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
开放的平台
去年到今年自己的工作也随着公司的战略改变不断的发生着变化。最早公司定位致力于为中小企业提供商务管理软件,让中小企业能够通过使用在线软件轻松搞定电子商务贸易管理。随后公司又致力于提供开放的在线软件运营平台,为众多ISV和中小企业建立一个软件交易平台,中小企业可以随需定制管理软件。到今年年初,提出了服务集成平台,ISV的应用开发不再是封闭的开发模式,可以基于ISP提供的服务定制出更加丰富的应用。其实这种转变也是对平台的开放的思想不断成熟的一个过程。
独自实现在线管理软件和传统软件其实没有太大的差别,唯一的差别就是把应用由客户的机器拉到了软件提供商的服务器上,对于维护,更新和商业模式可能有部分的变化,但是根本上来说软件的封闭性还是和传统软件一样。互联网软件的最大特点就是个性化需求强烈以及需求变更周期短,要适应行业客户的需求,仅仅靠一个公司的几杆枪几号人的创意远远不够。Web2.0的热潮其实能够给开发人员最大的启示就是参与才是力量的源泉,其实软件开发也是一样,如果能够集合互联网上众多ISV的思想和创意,那么满足用户需求并不是一件难事,同时及时响应用户需求也不再是火烧屁股的事情。同时,看看互联网应用开发的今天,国外Open API前几年就已经兴起,Amazon,Google,Yahoo,FaceBook,MySpace等等,将自己的数据,存储,计算通过API的方式提供给第三方,让第三方开发者能够通过使用这些服务有机会实践自己的创新和创意,互联网应用的开发也有了新的开放式开发模式。服务集成平台其实就是为ISV提供了创建应用的一个资源平台,ISV可以通过服务集成平台获取到各个ISP(例如淘宝)的API,在其基础上开发出在线应用,然后直接挂接到应用运营平台为终端用户提供应用服务。这很类似于传统行业的产业链,服务集成平台就好比原料交易市场,应用运营平台就好比商品交易市场。回过头来看,阿里系的各个子公司,其实都是在以这种思路做事,从加入公司到现在,给我印象最深刻的一句话就是:“凡事不要先想着如何赚到别人的钱,让别人先赚到钱,别人自然很乐意的和你分享”,这种双赢的思想在开放中能够得到最好的实践。
开放的框架
一个公司技术是需要积累的,如果纯粹让每一个开发人员根据自己的能力去合作开发企业的产品和平台,对于企业,对于产品都是不利的。Java吸引人就在于它的开源世界,每一个开发人员可以去获得自己想要的,或者去贡献给他人自己创造的。现在很多公司应聘的过程就是一个开源知识问答,其实是否用过能说明什么问题呢,关键是没用过如何去学习和了解并且快速上手,如果能力再强一点,那就知道如何定制和扩展,我想这样的才可以叫做企业需要的人才。
从公司成立那时起,内部就有一个应用开发框架,作用就是为了快速开发应用,尽最大可能降低开发者对于开发技术的学习,集中精力致力于业务开发。(当然看到这里估计98%的开发人员都会皱起眉头)。我也为此贡献了自己2个Q的工作时间,当时我主要负责后台重构,需要建立起一个服务框架,开始参考了OSGI(因为它的模块化和动态载入机制),发现并不是很合适,然后接触了SCA框架(可扩展,模块化,SOA的支持),最后决定在开源项目Tuscany0.91版本的基础上再次开发和封装,实现了内部的ASF(应用服务框架),ASF作为我们开发框架的后台基础框架被广泛使用在了我们的多条产品线以及基础平台上,但是ASF的质疑就一直没有停过,性能,学习成本,调试困难度等等。虽然自己竭力去写了厚厚的一套文档,一组单元测试工具,一系列的问题查找工具,作了多次的压力测试,学习普及,但是还是得不到一些架构师的支持。
其实,自己在后面也做过一些思考,其实对于ASF来说,它的可扩展性没有什么好怀疑,他不像其他开源项目,我可以封装Hessian组件,REST组件等等,随需载入,开发者只需要配置一下标签,即可使用,因此这样的框架下,不会随着技术的发展和自己的封闭而腐烂。但是,有一点就导致推广产生了那么多问题,那就是参与。我记忆很深的就是我们的首席架构师在今年招开会议评估ASF的问题时地邮件中说的:“ASF不是岑文初一个人的ASF,也不是平台一部的ASF,而是大家的ASF”。其实那时候我已经不再专职负责ASF,当今年因为一个项目进度由于开发受到影响时再次提出ASF的质疑地时候,我自己真的觉得比较沮丧,很多架构师和开发者从来就没有看过文档,没有用过调试工具,没有看过Q&A,一出问题就觉得无所适从,要找人解决框架问题,我曾经说是否Spring用的时候出现问题,第一想法就是去找Spring的开发者,还是先会看看文档,调试一下。我想这应该是两方面的原因,但如果能够让每个人都参与进来,那么就不会是今天一人独挡的局面。
因此未来自己的工作中,不论是内部的基础组件还是基础平台都会多邀请一些参与者,毕竟自己的肩膀有限,蚂蚁就算在大力也需要有伙伴的支持。
开放的心态
这点其实是做人的基本要素,有一个宽阔的胸怀才会有更多的机会,才会成长的更快。但是自己这点的却做得很不够。开发人员都有一个相同的特点就是热衷于技术钻研,今天搞一个东西比你快一点,明天做一个东西比他功能多一点,总是在技术方面去寻找满足。其实老大一直和我们也在说,现在公司内部的架构师并不是一个“全专”,也不一定是一个写代码高手,但是在某一个领域会有深入的研究,同时接触其他领域也能够胜任。没有什么技术人员是绝对的高手,其实随着工作重心的不断变化,所接触的领域也会不断发生变化,因此不可能有所谓的“全才”。
有时候自己也会用技术的眼光去看待人或者事,其实这样只会让自己看不到自己的不足,也忽略了别人的优点,更重要的就是失去了一次进步的机会。其实经常给自己换换思路会对自己有很大的帮助,就好比最近忙于写了一阵子代码,那么就给自己一个机会去看看一些关于搜索领域的知识。开发了一个阶段的服务集成平台,去了解一下所有的国外网站Open API的风格,结构,流程。用惯了Java后,去学习学习Php,Ruby等等。这样换换脑子对自己来说会有新的收获。
开放的心态理解容易,但是要让他不仅仅写在MSN的title中,而写在心里却需要不断地督促和付出。不过知道自己有问题好过觉得自己没有问题。
写了那么些,其实思路比较乱,我想从随笔里面也看得出来,但是还是想记录一下自己的一些思考,起码以后回过头来可以看到自己成长的过程。