Joel test - 我们的答案

什么?轩辕互动的Joel on Software's 测试得了10分?

我们对 Joel Test的测试持保留意见:它并不适用于所有敏捷开发公司。 因此,为了更好地阐释我们的观点,我们一次对Joel的十二道题目做了详细的回答,并另附上两个我们的观点。

  1. 你们是否使用版本控制?
    是的。我们使用Subversion进行版本控制。

  2. 你们可以把整个系统从源码到分发包一步建成吗?
    可以。因为我们广泛的使用python,所以这样的构建可以随时进行。

  3. 你们每天都把系统从源码到分发包重建一遍吗?
    是,实际上甚至一天重建多遍。项目中使用单元测试和功能测试。程序员提交代码前会运行相关的测试文件,而整体的测试则在每天晚上运行一遍,并将结果以邮件的形式发给程序员,而且有的项目还使用持续集成工具。

  4. 你们有bug跟踪管理系统吗?
    有。我们使用trac进行bug跟踪管理和项目工作清单跟踪管理。

  5. 你们在写新程序之前总是把现有程序里已知的bug解决吗?
    我们相信减少“破窗户“,但是在安排工作任务列表时, 我们是按照优先级来排序,而不是任务的类型。

  6. 你们的产品开发日程安排是否反映最新的开发进展情况?
    是的。因为我们应用scrum的敏捷开发方法,我们的工作计划就是项目工作清单和一组Sprint(sprint是一个任务单位的概念,一般在1到2周,每一个sprint 有一定的工作量和工作目标以及工作人数)工作清单。

  7. 你们有没有软件开发的详细说明书?
    有。因为我们应用scrum的敏捷开发方法,我们的软件开发说明书就是项目工作清单。工作清单上的每一项任务都会被妥善处理,增加细节描述,然后按照优先级被安排到对应的sprint中。

  8. 你们的程序员是否拥有安静的工作环境?
    我们有一个宽敞的开放式办公环境,也有一些独立的办公室,都很安静。我们一直严 格控制办公室的设备噪音,尽量保证减少到最低。

  9. 你们是否使用现有市场上能买到的最好的工具?
    是的。目前,我们为每个开发人员配置的硬件设备包括:双核处理器的主机,双液晶显示器(17寸及以上型号),大容量内存。因为我们使用开源技术,所以我们使用的大部分软件开发工具也是开源的。不过,在开发人员工作过程中,他们可以要求采购任何软件以满足合理的工作需求。

  10. 你们有没有专职的软件测试人员?
    有。因为我们是敏捷开发和自动化测试的忠实支持者,因此我们的手工测试团队人数不需要达到joel建议的那么多。程序员们自己会写自动测试代码。当然,每个团队都有单独手工测试工作,也有团队拥有专业的测试人员,并且人数与joel的推荐标准相当。

  11. 你们的面试过程中是否考核应聘人的编程能力?
    是。我们有独立的人力资源团队,有8台用于面试的专用电脑,主要测试应聘人的现场编程能力,上机考试题都配有相应的单元测试代码以检验其结果。参加远程面试的应聘者也需要有编程环境并且提交代码。

  12. 你们是否随便选择一些人来试用你们的软件?
    功能测试一般在特别的情况下完成,比如在构建复杂功能之初。我们计划将改善我们功能测试的频率及流程。

我们认为还有一些问题对于帮助你了解我们公司是否适合你大有裨益:

  1. 你们复核所有的代码吗?
    在轩辕互动,结对编程是有选择性的,但是代码复核是必须的。我们创建了trac的扩展功能,使其能够针对代码集而生成复核代码的页面,使用非常方便(我们很快就会将这个成果开源)。我们发现,在复核某段代码时,如果至少有2个及以上的复查人员,将及大的有利于捕捉bug,探索软件开发过程并标准化,促进知识的汲取、分享交流,成就更优秀的软件巨匠。

  2. 你们有最新的自动测试程序吗?
    凡是开发周期未到2年的系统,我们都有自动测试程序,只有一些老系统(我们会将其逐步淘汰)没有。自动测试对于重构很有必要,而重构又是避免糟糕代码的必要因素,简洁健壮的代码是程序员职业生涯的重要组成。

Update: Eric Ries 写了一篇关于如何更新Joel Test的有意思的博客 .