时 间 记 忆
最 新 评 论
专 题 分 类
最 新 日 志
最 新 留 言
搜 索
用 户 登 录
友 情 连 接
博 客 信 息
 
有效编写软件的75条建议 (一)
[ 2007/8/7 18:02:00 | By: tomcheng711 ]
 
1. 你们的项目组使用源代码管理工具了么?
    应该用。VSS、CVS、PVCS、ClearCase、CCC/Harvest、FireFly都可以。我的选择是VSS。

   2. 你们的项目组使用缺陷管理系统了么?
    应该用。ClearQuest太复杂,我的推荐是BugZilla。

  3. 你们的测试组还在用Word写测试用例么?
    不要用Word写测试用例(Test Case)。应该用一个专门的系统,可以是Test Manager,也可以是自己开发一个ASP.NET的小网站。主要目的是Track和Browse。

  4. 你们的项目组有没有建立一个门户网站?
    要有一个门户网站,用来放Contact Info、Baselined Schedule、News等等。推荐Sharepoint Portal Server 2003来实现,15分钟就搞定。买不起SPS 2003可以用WSS (Windows Sharepoint Service)。

  5. 你们的项目组用了你能买到最好的工具么?
    应该用尽量好的工具来工作。比如,应该用VS.NET而不是Notepad来写C#。用Notepad写程序多半只是一种炫耀。但也要考虑到经费,所以说是“你能买到最好的”。

  6. 你们的程序员工作在安静的环境里么?
    需要安静环境。这点极端重要,而且要保证每个人的空间大于一定面积。

  7. 你们的员工每个人都有一部电话么?
    需要每人一部电话。而且电话最好是带留言功能的。当然,上这么一套带留言电话系统开销不小。不过至少每人一部电话要有,千万别搞得经常有人站起来喊:“某某某电话”。《人件》里面就强烈谴责这种做法。

  8. 你们每个人都知道出了问题应该找谁么?
    应该知道。任何一个Feature至少都应该有一个Owner,当然,Owner可以继续Dispatch给其他人。

  9. 你遇到过有人说“我以为…”么?
    要消灭“我以为”。Never assume anything。

  10. 你们的项目组中所有的人都坐在一起么?
    需要。我反对Virtual Team,也反对Dev在美国、Test在中国这种开发方式。能坐在一起就最好坐在一起,好处多得不得了。

  11. 你们的进度表是否反映最新开发进展情况?
    应该反映。但是,应该用Baseline的方法来管理进度表:维护一份稳定的Schedule,再维护一份最新更改。Baseline的方法也应该用于其它的Spec。Baseline是变更管理里面的一个重要手段。

  12. 你们的工作量是先由每个人自己估算的么?
    应该让每个人自己估算。要从下而上估算工作量,而不是从上往下分派。除非有其他原因,比如政治任务工期固定等。

  13. 你们的开发人员从项目一开始就加班么?
    不要这样。不要一开始就搞疲劳战。从项目一开始就加班,只能说明项目进度不合理。当然,一些对日软件外包必须天天加班,那属于剥削的范畴。

  14. 你们的项目计划中Buffer Time是加在每个小任务后面的么?
    不要。Buffer Time加在每个小任务后面,很容易轻易的就被消耗掉。Buffer Time要整段的加在一个Milestone或者checkpoint前面。

  15. 值得再多花一些时间,从95%做到100%好值得,非常值得。
    尤其当项目后期人困马乏的时候,要坚持。这会给产品带来质的区别。

  16. 登记新缺陷时,是否写清了重现步骤?
    要。这属于Dev和Test之间的沟通手段。面对面沟通需要,详细填写Repro Steps也需要。

  17. 写新代码前会把已知缺陷解决么?
    要。每个人的缺陷不能超过10个或15个,否则必须先解决老的bug才能继续写新代码。

  18. 你们对缺陷的轻重缓急有事先的约定么?
    必须有定义。Severity要分1、2、3,约定好:蓝屏和Data Lost算Sev 1,Function Error算Sev 2,界面上的算Sev 3。但这种约定可以根据产品质量现状适当进行调整。

  19. 你们对意见不一的缺陷有三国会议么?
     必须要有。要有一个明确的决策过程。这类似于CCB (Change Control Board)的概念。

  20. 所有的缺陷都是由登记的人最后关闭的么?
    Bug应该由Opener关闭。Dev不能私自关闭Bug。

  21. 你们的程序员厌恶修改老的代码么?
    厌恶是正常的。解决方法是组织Code Review,单独留出时间来。XP也是一个方法。

  22. 你们项目组有Team Morale Activity么?
    每个月都要搞一次,吃饭、唱歌、Outing、打球、开卡丁车等等,一定要有。不要剩这些钱。

  23. 你们项目组有自己的Logo么?
    要有自己的Logo。至少应该有自己的Codename。

  24. 你们的员工有印有公司Logo的T-Shirt么?
    要有。能增强归属感。当然,T-Shirt要做的好看一些,最好用80支的棉来做。别没穿几次就破破烂烂的。

  25. 总经理至少每月参加次项目组会议要的。
    要让team member觉得高层关注这个项目。

  26. 你们是给每个Dev开一个分支么?
    反对。Branch的管理以及Merge的工作量太大,而且容易出错。

  27. 有人长期不Check-In代码么?
    不可以。对大部分项目来说,最多两三天就应该Check-In。

  28. 在Check-In代码时都填写注释了么?
    要写的,至少一两句话,比如“解决了Bug No.225”。如果往高处拔,这也算做“配置审计”的一部分。

  29. 有没有设定每天Check-In的最后期限?
    要的,要明确Check-In Deadline。否则会Build Break。

  30. 你们能把所有源码一下子编译成安装文件吗?
    要的。这是每日编译(Daily Build)的基础。而且必须要能够做成自动的。

  31. 你们的项目组做每日编译么?
  当然要做。有三样东西是软件项目/产品开发必备的:1. bug management; 2. source control; 3. daily build。

  32. 你们公司有没有积累一个项目风险列表?
    要。Risk Inventory。否则,下个项目开始的时候,又只能拍脑袋分析Risk了。

  33. 设计越简单越好越简单越好。
    设计时候多一句话,将来可能就带来无穷无尽的烦恼。应该从一开始就勇敢的砍。这叫scope management。

  34. 尽量利用现有的产品、技术、代码千万别什么东西都自己Coding。BizTalk和Sharepoint就是最好的例子,有这两个作为基础,可以把起点提高很多。或者可以尽量多用现成的Control之类的。或者尽量用XML,而不是自己去Parse一个文本文件;尽量用RegExp,而不是自己从头操作字符串,等等等等。这就是“软件复用”的体现。

  35. 你们会隔一段时间就停下来夯实代码么?
    要。最好一个月左右一次。传言去年年初Windows组在Stevb的命令下停过一个月增强安全。Btw,“夯”这个字念“hang”,第一声。

  36. 你们的项目组每个人都写Daily Report么?
    要写。五分钟就够了,写10句话左右,告诉自己小组的人今天我干了什么。一则为了沟通,二则鞭策自己(要是游手好闲一天,自己都会不好意思写的)。

   37. 你们的项目经理会发出Weekly Report么?
     要。也是为了沟通。内容包括目前进度,可能的风险,质量状况,各种工作的进展等。

   38. 你们项目组是否至少每周全体开会一次?
     要。一定要开会。程序员讨厌开会,但每个礼拜开会时间加起来至少应该有4小时。包括team meeting, spec review meeting, bug triage meeting。千万别大家闷头写code。

  39. 你们项目组的会议、讨论都有记录么?
    会前发meeting request和agenda,会中有人负责主持和记录,会后有人负责发meeting minutes,这都是effective meeting的要点。而且,每个会议都要形成agreements和action items。
 
 

发表评论:

    昵称:
    密码:
    主页:
    标题: