相关文章
开发一个软件平台的一些心得体会
一.研发人员如何分工?
在以前我就设想一种较为合理的开发模式是:研发人员划分为三拨人:平台底层开发人员+平台功能开发人员+项目二次开发人员。这三拨人形成两种需求关系:平台功能开发人员为开发平台功能而向平台底层开发人员提出接口需求,平台底层开发人员为满足这些需求而实现接口;项目二次开发人员为满足二次开发需要而向平台开发人员提出功能需求,平台开发人员为满足这个需求而开发功能。这样划分的好处是使得软件开发不再是一种闭门造车的活动,而是一种需求带动的活动。在这种需求关系的驱动下,每个人都可能成为某个领域的专家。
二.最大的差距之一是产品设计
除开算法等软件因素,国产软件和外国软件的最大差距是什么?我认为是产品设计。因为缺乏专业的设计人员,界面大多是开发人员和测试人员商量着设计的。这种设计往往有着三大弊端:一是说法不准确,比如有一次我就看到帮助菜单栏上有一项叫“关于对话框”,就对一个同事说:“你去翻翻Microsoft Word,看看它的帮助菜单栏上是否有关于对话框这一项,它的是关于Microsoft Office Word,因为用户不明白对话框是何物”;二是缺乏人性化的交互设计,这个很好理解,因为开发人员不是一线用户,开发人员一般实现功能了事,没想着怎么把软件做得更人性化。如果同一个功能由他成千上百次地操作,或许他会想到要做得更人性化些:三是缺乏美感,这个源于我们接受的教育。我们从小到大就没接受过美学教育,设计出来的东西很难有美感。
三.API的演化
有没有一个开发高手一开始就能把底层库的API都设计好?我相信我们大多是凡人,不具备这样的功力。照这样说,API自然要经历一个从不完善到比较完善的历程。那么问题来了,如何缩短这个历程,如何降低API演化过程中的成本?我想到的有两点:一是软件设计人员应尽可能阅读你所开发平台的开源代码,吸收其中设计方面的精髓;二是就底层API的设计应尽量发扬技术民主,在内部就API的设计展开充分的讨论,这样设计出来的API被大家接受的程度也会大些。
四.需要分支版本吗?
开始我设想应尽可能加快产品的迭代,尽量在项目检验API,在项目中应用主干版本的SDK进行二次开发。一些同事不同意我的激进做法。他们主张应设立分支版本SDK,用它做项目的二次开发,三个月或半年再从主干版本中更新。实践说明,同事的意见是对的,这样做兼顾了项目的快速开发和产品的开发,避免因接口变动而影响项目。
五.工具集合的作用
开发一个软件平台,需要很多工具。这些工具一般由脚本语言编写,比如设置环境变量的批处理,遍历一个文件夹的所有工程将其都加到一个新建的解决方案,二次开发工程向导等等。这些工具短小精悍,却往往能有效提高开发效率。这时你会感觉掌握一门脚本语言是多么有用!
在以前我就设想一种较为合理的开发模式是:研发人员划分为三拨人:平台底层开发人员+平台功能开发人员+项目二次开发人员。这三拨人形成两种需求关系:平台功能开发人员为开发平台功能而向平台底层开发人员提出接口需求,平台底层开发人员为满足这些需求而实现接口;项目二次开发人员为满足二次开发需要而向平台开发人员提出功能需求,平台开发人员为满足这个需求而开发功能。这样划分的好处是使得软件开发不再是一种闭门造车的活动,而是一种需求带动的活动。在这种需求关系的驱动下,每个人都可能成为某个领域的专家。
二.最大的差距之一是产品设计
除开算法等软件因素,国产软件和外国软件的最大差距是什么?我认为是产品设计。因为缺乏专业的设计人员,界面大多是开发人员和测试人员商量着设计的。这种设计往往有着三大弊端:一是说法不准确,比如有一次我就看到帮助菜单栏上有一项叫“关于对话框”,就对一个同事说:“你去翻翻Microsoft Word,看看它的帮助菜单栏上是否有关于对话框这一项,它的是关于Microsoft Office Word,因为用户不明白对话框是何物”;二是缺乏人性化的交互设计,这个很好理解,因为开发人员不是一线用户,开发人员一般实现功能了事,没想着怎么把软件做得更人性化。如果同一个功能由他成千上百次地操作,或许他会想到要做得更人性化些:三是缺乏美感,这个源于我们接受的教育。我们从小到大就没接受过美学教育,设计出来的东西很难有美感。
三.API的演化
有没有一个开发高手一开始就能把底层库的API都设计好?我相信我们大多是凡人,不具备这样的功力。照这样说,API自然要经历一个从不完善到比较完善的历程。那么问题来了,如何缩短这个历程,如何降低API演化过程中的成本?我想到的有两点:一是软件设计人员应尽可能阅读你所开发平台的开源代码,吸收其中设计方面的精髓;二是就底层API的设计应尽量发扬技术民主,在内部就API的设计展开充分的讨论,这样设计出来的API被大家接受的程度也会大些。
四.需要分支版本吗?
开始我设想应尽可能加快产品的迭代,尽量在项目检验API,在项目中应用主干版本的SDK进行二次开发。一些同事不同意我的激进做法。他们主张应设立分支版本SDK,用它做项目的二次开发,三个月或半年再从主干版本中更新。实践说明,同事的意见是对的,这样做兼顾了项目的快速开发和产品的开发,避免因接口变动而影响项目。
五.工具集合的作用
开发一个软件平台,需要很多工具。这些工具一般由脚本语言编写,比如设置环境变量的批处理,遍历一个文件夹的所有工程将其都加到一个新建的解决方案,二次开发工程向导等等。这些工具短小精悍,却往往能有效提高开发效率。这时你会感觉掌握一门脚本语言是多么有用!
说点什么吧
- 全部评论(0)
还没有评论,快来抢沙发吧!