• 2006-03-16

    跟着感觉走?

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://www.blogbus.com/dreamhead-logs/2074599.html

    一个做项目负责人的朋友感慨,质量难以把握。为了更改发布目录,居然需要重新编译代码。于是,他感慨,下次一定要在项目加强评审的环节,对此,我表示支持。自从开始理解测试驱动开发,我愈发体会到检查这个环节的重要性,因为我们首先要做正确的事。如何才能做正确的事,不断的检查。在我们通常的认识中,软件项目的检查就是测试,而实际上,这个检查应该贯彻于开发始终的,比如需求阶段的检查确保我们没有错误的理解需求,设计阶段的检查让我们知道选择了一条适合自己的开发之路。

    接下来的话题是如何做检查。以代码评审为例,那位朋友所在的部门是这样做的。找来一些在编程方面有经验的人,拿出一段代码,由他们来找问题,通常,这种评审是很热闹的,大家各抒己见,初来乍到的人会惊讶于这些“高手”的水平,暗自佩服。然后,心中不禁疑惑,为什么他们就知道这些问题,而我不知道。我为什么会知道这些,因为我就有过这种经历,新人和“高手”的角色我都扮演过。

    之所以会出现这样的问题,原因在于,所谓的衡量标准都在这些“高手”的心中。为什么现在的教育越来越值钱?我想原因之一,教育的内容是成体系的,而不仅仅是零散的存在于人们的脑海之中。我参加过一些培训,或许这些老师在某些方面的理解并不见得有多高超,但他们的知识是成体系的,所以,他们可以用自己的知识换钱。如果想了解体系与零散的差别,用心写本书试试,那与写blog是完全不同的感觉。

    刚好就同样问题和一个同事讨论过,他来自公司内过程做得最好的部门。他们的评审是这样做的,把一个checklist分成几个部分,交给不同的人,就同一段代码分别进行检查。检查的人可能是个新手,但他所需要关注的只是他手中checklist的内容,所以,他可以轻松的完成这项工作。这就是工作方式的差异,这就是成体系的工作方式。

    我很愿意将编程称为艺术,换言之,讲究的是一种感觉,不过,感觉是一个没准的东西,也就是零散的。比如我们做代码评审的时候,可能我会凭感觉发现一些问题,但下次再做评审,我可能不会发现同样的问题,因为感觉这东西是在不同的情况下会有差异。当我们需要创意的时候,可以靠感觉,但有一些基本的工作,仅凭感觉是远远不够的。

    分享到:

    历史上的今天:

    自娱自乐 2005-03-16
    引用地址:

    评论

  • 真正成体系的工作方式未必存在。如果是CheckList的内容,可以由一个新人来完成,基本上都可以使用工具或者编写的代码来进行检查。而且,很多CodeReview的内容,不见得三言两语就说的清楚,让一个新人能够切实地执行。

    事情都是双面的,有的时候,感觉还是需要一点的。:)
    回复Johnson Qu说:
    体系是逐渐形成的,而不是一个人一点想法就可以成为体系的。这也就是一些软件工程方法之所以有其价值的地方。新人通过一些评审的过程可以学到很多的东西,而不仅仅是充当机器的作用。

    当然,感觉是需要一些的。
    2006-03-29 12:39:30
  • 郑老师,我承认错误,更改发布目录需要重新编译代码是我干的^_^。因为我们用的开源包是在configure过程中就要把安装目录写进去,而我们在编码时也没有考虑到安装目录会变而造成的。



    谈谈对评审的看法吧。我觉得评审的确是个好东西,不过以个问题为例,我想如果没有从configure就开始使用过这个开源包经验的人,恐怕也想不到这个问题吧?



    而且目前部门中的评审,恕我直言,很多时候流于形式。大家手头都有很多活要做,没空预先仔细通读代码,这就导致可能邮件评审连每个人的评审结果可能都收不全,即使是会议评审,也因为大家对代码了解甚少而将问题集中到格式等低层次的话题上,很少对系统的架构进行细节上的深入讨论。



    只是个评论,就少写点吧,但愿郑老师能看懂:)
  • >>找来一些在编程方面有经验的人,拿出一段代码,由他们来找问题



    这个倒是第一次听说,有效果吗?

    单元测试还不够吗?
    回复huangyi说:
    单元测试只是在外面看,有时候,我们还需要走到里面。
    2006-03-20 21:16:58