2010年9月3日 星期五 晴
上午,例行去医院打疫苗。中国人多,不管是在世博还是在地铁还是医院,去晚了都得排半天队。吸取以往教训 ,我还是早早就出门。很可惜,排了半天,才知道这个月的疫苗是计划外的,决定不打。本来想拿着水电煤单子去让医院的工作人员也给建个卡片,没想到他们不愿意。唉,我要是上海户口并且就是这个区域的就可以,是纯外地户口也可以,可惜我偏偏两者都不是。要是在美国,我估计可能就找律师告他们歧视了,可惜这里是中国。
早早回来休息了两个多小时才去上班,下午主要是协调指派bug,处理请假同事的Java问题,下午开了两个小时的会议,讨论如何改进目前研发测试上的问题。我不太懂这里的各种阶段的英文缩写,我只是觉得这里讨论的问题,我很多年前就参与讨论过了。但是,我觉得我在这里没有领导过一个项目,没有经历过一个完整的项目过程,所以,我在这里没有发言权,我一声也不吭。
下面就一些问题,自问自答一下。
1、为什么这里的项目总是有这么多bug呢?很多项目都是10~20个人参与,最后出现上千甚至几千个bug。
—— 我一直很难想象这是为什么。从我2009年到现在还不太明白。我大体认为,首先是人员素质,其次是代码管理,其次是测试方法了。
2、为什么在不同项目上总是出现相同的问题呢?
—— 原因很简单,这里的代码管理有问题。不同客户项目有不同的分支,就算是同一客户项目都有不同的分支,A项目上出现一个bug,B项目、C项目等也会相继提出同样的bug的。而修改这个bug,A项目修改号了,B项目、C项目等也还要同步一下。
这个分支问题,就跟进化论里的物种分支一样,时间越长,那么各个项目的进化就不一样。修复一个基因的bug,则随着时间的推移,成本会变得越来越大。
在现在的这个部门里,可能只有一位同事在会议上提出过跟我类似的观点,不过我没表态。这里的人的思维太根深蒂固了,他们还是喜欢各个项目单拉出来,我知道我说出来也没啥用。有时候,说服别人或者改变别人的想法,是最困难的事情。
我只管理好我能控制的范围,别的我就不管了。
3、如果项目不单列出来,你会如何去处理?
——
一直沿用着的,不一定就是最好的最合适的。看不到需要变革,那只是习惯或者视野狭窄了。
我2009年4月来这里应聘的时侯,他们问我一个题外话,你是否会搭建服务器?我那时候只做GAE,只用到Google的服务器,所以我说不会。后来我才知道,他们想换一个管理代码的服务器。
唉,当我2010年3月中旬再来这里上班的时侯,这里依然沿用着VSS,我有点无语。我就奉命建立SVN服务器了,用过的人都说比VSS好,呵呵。
根据我的个人经验,我觉得首先需要一个具备SCM思维的人去管理代码。
(1)一个平台(比如07B,08B,09B等)有一条主干,任意时刻都可以从主干上拉一项目分支或者特性出去开发。
(2)在分支开发成熟到一定阶段,要合并到主干上。分支可以继续独自发展个性上的东西,但与平台相关度 修改,一定要回归到主干上。
(3)尽量共用一套代码开发,由宏来控制代码走不同的分支。
mak文件对应着不同项目的文件,编译时使用不同的mak文件即可编译出不同的版本。
不同项目的资源(比如驱动、硬件配置、图片目录、铃音目录、主题、皮肤、项目开关、菜单等)都是可以在mak文件或者代码里指定的。
驱动尽量做成兼容的,比如LCD、Flash等。
不要担心文件庞大,担心太庞大的话,首先请把图片文件压缩回来。
独立功能的宏开关在主干上体现,在不同项目开关文件里打开或者关闭。
—— 这些东西,一个平台最好只由出版本的人修改,可惜我觉得这里大部分人都不知道怎么修改的。
(4)自定义宏开关非常重要,如果错了,要么别的项目编译会报错,要么可能会引出别的项目出现问题。
—— 这两个问题,我都见这里的人犯过,还不止一个人,不止两三次。
4、如何测出或者减少bug?
——我一直认为,编程其实就是逻辑题,编程、改bug、发现bug都是一种逻辑推理的过程。
我觉得黑盒测试的话,主要还是靠测试用例,如果测试用例完善的话,按照测试用例一条条来测试来做就好了,不用担心到后面会不会出现其他问题。
5、如何完善测试用例?
测试部的每个人每个月抽空写若干个模块的测试用例,最好一个模块有两个人写,这样可能可以互相弥补想不到的用例。在几个月内完善起来,把在自由测试、客户测试发现的bug都追加在原有用例里,这样用例会越来越完善。
6、如何提高研发速度?
——现在的做法是项目立项了,等到整机来的时侯才开始修改代码,可能在整机来之前的一两天才开始制作图片。
我认为一个比较快速的研发流程是这样的:
(1)平时准备若干图片库,若干套UI,如果客户不提供UI,那就引导他们使用我们的。在项目立项的时侯拍板决定。
(2) 去投版的时侯,就可以开始准备软件了。比如键盘要配好、LCD驱动要选对(总要点亮屏吧)、根据原理图进行硬件配置(比如中断、GPIO口之类的),根据项目立项时已确定的UI、和功能需求来编译出相应的软件。我觉得一个熟练工最多两三天就可以搞定这些事情了。
(3)板子回来之后,就可以验证各种东西了,然后不对的修改一下。花1~3天应该能搞定。其他没有开发的,赶紧完善一下,可以在板子上(翻盖的、滑盖的给个磁铁就可以模拟了)、模拟器上、别的已有机器上解决。
等客户的好机器,就慢了。。
夜很晚了,不想写下去了,以上都是夜深的胡言乱语。我想,归根结底还是研发流程的问题,想起了战国时孙武训练宫女的故事。我能做些什么呢?我不能做些什么,我只能在这样的制度下随波逐流了,正如我生活在这个房价高涨、物价飞涨的国度里。
上班的第117个工作日
上班的第117个工作日
...