为什么强调公司内部
公司内部共享模块的开发与外部是不大相同的:
- 环境不同,包括硬件环境和软件环境。可能开始开发的时候硬件设计或其他软件模块的实现已完成,那么,本着最小修改的原则,就只能是新开发的共享模块尽量适配已完成的工作。
- 客户不同,客户都是低头不见抬头见的兄弟姐妹,so,一切都可以商量。
- 周期不同,发布和维护的周期比较随意。由于,一切都可以商量,so,大多是“抽风式”的。
开发
开发阶段可能是最舒服的一段时间了:
- 有最初的稳定的基本需求;
- 有确定的硬件方案;
- 有经过评审的设计方案;
- 有专用的开发时间和开发计划。
所以,在这段时间里,可以安心的攻克技术问题。当然,对于有绩效考核的公司,这段时间的工作肯定也是计入绩效的_。
测试
测试是发布之前的必要步骤。测试不能保证软件没有 bug,但是,在可以覆盖到的执行路径上能够有效减少弱智 bug,从而保证所发布版本的质量。
并且,硬件版本在产品开发的很长一段时间里甚至是产品发布之后都有可能会升级、更新,所以,每当拿到一个新的硬件版本,在硬件冒烟测试之后,软件的首要任务也是进行冒烟测试。那么,软件怎样进行冒烟测试呢?如果曾经编写了完备的测试程序,直接执行测试工程,通过测试可以很容易的检查硬件连线及芯片是否符合设计要求,进而检查软件功能是否仍然符合设计要求。
发布
发布其实是一种简单而重复的“体力劳动”,一般地,按照公司要求的发布流程将准备好的共享库及说明文档发布即可。
需要注意的是,虽然是公司内部共享模块,但必须要求使用该模块的产品或项目通过发布途径获取代码,以简化后期的维护途径。
维护
悲剧人生越来越近了。当然,是否悲剧跟不同公司的具体游戏规则密切相关。敝公司的游戏规则如下:
- 谁开发谁维护;
- 仅开发人员拥有源码权限;
- 维护时间属于挤挤可以有的时间;
- 看说明文档不如直接找开发人员来调试。
所以,在敝公司,这就是悲剧的开始。
软件的 bug 是不可能不存在的,只可能没发现。那么,由于共享模块的使用者没有源码权限而只能使用库,一旦使用者发现了 bug,很自然的就会直接反馈给开发人员,同时,该产品开发的一部分压力也就随之转嫁给了共享模块开发人员。可以想象,当多个产品或项目同时使用这个共享模块的时候,模块开发者承受了多大的转嫁压力!!
与此同时,由于源码的封闭以及不好的开发习惯,使用者会直接召唤开发者进行移植调试(针对不同项目的不同硬件)。而模块的开发者,此时可能已经处于另外模块开发中了,所以开发者只能是挤出维护时间,进行“免费”服务。为什么是“免费”的?因为,这个维护时间本应该是属于当前项目的开发时间,当将其移用于维护时,相当于减少了当前项目的有效开发时间,即这段时间在当前项目的开发计划中“消失”了。
追根究底,个人认为罪魁祸首是源码的封闭和开发者在维护期的角色定义错误。
也许,我们参照开源项目的管理方式重新定义游戏规则可以消除以上悲剧:
- 谁开发谁管理;
- 所有人员拥有源码下载权限,但仅开发者拥有上传权限;
- 使用者有维护的义务,开发者此时扮演“顾问”的角色;
- 开发者没有移植义务,移植步骤及使用文档的完善需要所有参与人员的努力;
- 使用者在发布产品或项目时必须使用开发者的正式发布版本。
这样制定游戏规则,当然是有缺点的:
- 使用者需要学习共享模块的设计思路(占用使用者的时间);
- 使用者需要补全在其特性硬件平台上的移植步骤(占用使用者时间);
- 使用者需要在文档中添加其移植过程中遇到的问题、或完善使用方法(占用使用者时间)。
即,所有的缺点都是需要占用使用者时间,可是,即使不这么玩儿,也是需要占用使用者时间的,并且同时还需要占用开发者时间。在这种情境中,“1 + 1 > 2”大多数时候都是成立的。
接下来,我们再来看看优点:
- 越来越多的人搞懂了设计思路,不但降低了开发者离职对公司造成的影响,同时也有利于发现设计中存在的问题;
- 越来越多在不同平台的移植经验,为在新平台的移植提供有效参考;
- 文档的完善靠大家显然比仅靠某个人要靠谱;
- 源码的开放可以提高发现 bug 的概率及修复 bug 的速度;
- 开发者仅需要审阅使用者的修改并负责提交,在维护过程中扮演“管理员”角色,在移植过程中扮演“顾问”角色,可以有效减少开发者的参与度,节省开发者时间;
- 开发者不再需要背负由使用者转嫁过来的产品或项目压力;
- 开发者不再需要从当前项目中挤走部分时间用于移植(维护)共享模块,有利于保证有效开发时间,进而提高绩效。
可能还有其他的一些隐含的优点,但,最根本的是杜绝使用者寻找借口的途径,使用者不能再简单的因为不能看到源码而纯粹依靠开发者进行调试。
另外,必须注意的是:由于开放了源码,每一个使用该共享模块的产品或项目在发布时使用的版本必须为该共享模块的发布版本,而不能是自行修改的版本。这一要求由产品或项目负责人负责。
诸多不满,但还是要被生活所强暴。。。。