我曾经去给OSCHINA做过一期有关“软件工程实践”的有奖高手问答 (奖是给提问者的,哈哈),现在来看,许多问题仍然可读之处,因此整理成文字,以为众赏。
原贴在这里:http://www.oschina.net/question/12_78459
本篇的问题:小作坊如何实施所谓的软件工程?
答:
作坊式的,小公司,或需求变化太频繁等等,都不是不做软件工程的理由。往往的,我们一谈工程就“很大”,“很学术”,或者看起来谈种种“敏捷”,但实际去做的时候就成了条条框框。大家在第一认识上要知道,大多数实践中谈及的“工程”,都是工程方法而已。
既是方法,也就需要因事、因人而宜。无论某种工程方法打着怎样的旗号,说怎样漂亮的话,给你展示怎样的数据,落到你的“具体工程”的实处,都是要调适的。具体来说,要先看人,先培训整体一致的工程认识;然后再规划事,形成较简洁适用的过程方法,以及核查的机制。有了这两点作为底子,工程才可能从0到1,走过“没有工程”的阶段。
一个团队总是要从小到大的,如果在小规模的时候都没有工程素质,那到大规模的时候来补,也是很痛苦的。同样的,个体开发人员也是如此,不对自己加以职业化的要求,换公司换团队换做法的时候,也是很痛苦的。因此在这个问题上,我认为个人培养与团队培养一样重要,知道有些事在哪种情况下要做、该做,以及该做到何种程度,对一些问题有着基本的、工程化的认识,是每个程序员应有的素质。如果你的团队达不到这一点,那么,请培训他们。我建议培训要自己来做,既是让自己认识清楚,也是了解大家的一个过程。
最后再说到细节,即是“如何做”的问题。这方面我很久以前就有公开的资料了,请至如下地址:
https://skydrive.live.com/?cid=F9303C43D5CEAFB3&id=F9303C43D5CEAFB3%21805
下载Chapter2,有两个part。这个实战过程讲了一个两个人的团队,一个完整的项目过程,以及将它工程化的全程。我不是说这个示例就做得很好很完美,我只建议大家关注这件事的做法:我们应该这样来因事因人(亦即是因项目、因团队)地“定制”我们的工程方法。