第三章 根除低下的效率
第二节 2002年6月1日:“闲置人手”
作者注:我的上述观点同样适用于“重构”(Refactoring),尽管我很讨厌提到它。哪怕重构是在你毫无察觉的情况下由电脑自动完成的。这并不是说你不应该进行定期的代码重构或重写,而是说,你不应该随意地做这些事情。做不做都应该由团队来做决定,直到测试人员将新Bug确定在最低程度,然后再重构或重写。
在编码风格上争论不休。谈到最消耗开发团队时间的事情,在空格、括号、匈牙利命名法等问题上的争论必定在前5名之列。请记住:使用一种一致的编码风格对你代码库的质量和可维护性大有裨益,而你的团队具体使用哪种风格一点都不重要。你是开发经理,你来选一个并坚持使用它。谁说这也需要民主!
告诉我该做什么
关于闲散时间不好的一面我已经说得够多了。在这个清静时期,你的开发团队可以做些什么有建设性的事情呢?
很自然,测试团队会坚持说,在产品发布给制造商之前的这段时间里,开发人员应该帮着找Bug。但是大多数开发人员会感到找Bug是件很恐怖的事,即使在别人的代码里找。而项目管理团队会坚持说,在产品发布给制造商之后,开发人员应该花时间去阅读和复审规范书。不过,开发团队不会很乐意,也不会有激情与心思干这样的事。
那么,开发人员在“工作淡季”到底可以做些什么呢?下面是我的一些想法:
分析Bug。分析团队在过去的一个产品开发周期中修复过的所有Bug,找出其中的规律。哪些是个人常犯的错误?哪些是团队犯的错误?团队中的每个成员下次需要注意点什么,才能开发出更好的产品?
为部门开发一些工具。尽管开发人员通常不擅长发现Bug,但他们在开发用于帮助发现Bug的工具方面的能力却是超强的。他们还能开发一些工具用于使过程更加顺畅,比如源代码签入、安装、构建和支持。给源代码插桩或者开发一个好的测试用具,能够大大地促进开发与测试团队之间的关系。当然,你应该先到工具箱网站上去查一查,看看满足你需要的工具是否早已存在了。
讨好项目经理,把他们的设计思想变成原型程序。开发原型程序是个好主意,只是不要在常规代码库上去做。尝试用另一种语言来写,或者至少要有独立的构建。在常规代码库上开发原型程序的最大问题是,项目经理和高层管理者会很自然地认为,代码已经到了差不多可以发布的程度,而事实上,原型程序通常存在着本地化、平台依赖、徽标、漫游、性能、安全、兼容性等各种各样的问题。混淆原型程序和产品代码会把产品计划和期望混为一谈。相反,用另一种语言来开发原型程序却是一个极好的学习机会。再说还能……
作者注:虽然以前已经说过了,但我还要再强调一下,“不要把原型程序当做产品来发布。”这么做不会节省时间,而只会花更多的时间。千万不要这么做!原型程序是用于学习和沟通的,它的用途就是这么单纯。除了用另一种语言开发原型程序外,我以前常常把Esc按键处理为异常结束。这样的话,如果我的上司在观看演示时表现得异常兴奋,我会按下Esc键,让程序崩溃,然后解释说,“很显然,我们的程序还没到发布的时候。”关于原型的更多内容,参见第6章的“我的试验成功了!(原型开发)”。
学习新技术或技能。人们总是抱怨他们没有足够的时间去学习新技术或技能,抱怨得不到培训机会使他们自身得到提高。好吧,为什么不好好利用项目的这个清静时期呢?不要让机会在你身边溜走!
跟研究人员交谈。在零Bug反弹之后是跟研究团队交谈的最好时机。这时候你有足够的时间去采用某个新技术,花时间去学习它,并且了解你能用到哪些东西。到你的产品发布并且开始计划下一个版本的时候,你可能已经把原型程序准备好了,并且解决了所有的风险,这着实让你的团队惊喜不已。另外,你和研究人员也可以为未来的产品策划新的研究领域。这非常有价值,而且做起来很容易。
撰写专利申明或白皮书。还有剩余时间用来反思和记录你已经做过的事情吗?如果你团队中的一位开发人员在项目过程中想出了一个新颖的点子,产品因此增加了不错甚至是重大的价值,那么务必叫他撰写一个专利申明。这做起来很容易,很快,还能极大地鼓舞士气。请访问专利组织的网站,以便了解更多的细节。如果你想把一些信息文档化,或者与其他团队分享某个想法,那就写一个白皮书。相对来说,这做起来也很容易,但能给作者和你的团队带来尊敬和影响力。
反思职业生涯。最后但并非最不重要的一点,项目的这个清静时期是你审视职业生涯现状的最理想时机。你现在处在你理想中的位置吗?你的职业生涯在向正确的方向前进吗?你准备好迎接新的挑战了吗?你需要做些什么,以使自己能够专注并能富有激情?如果通过上述反思,你觉得必须改变一下,那么,越早采取行动越好。
俭则不匮
这种情况差不多已经司空见惯了:两个版本之间的空闲时间白白地浪费了。而实际在这段时间内做的事情常常还是有害的。其实,只要稍加思量,就可以提升自身能力,提高产品质量,拓宽视野,并增强整个团队的水平,而不至自陷囹圄。为你的“停工期”好好计划一下吧,开足马力勇往直前!