`
阅读更多
不可以原谅的错误,即使一个项目遵循了上述所有75条,如果没有做(竟然没有做)CI,这个项目会……!

而且,竟然也没有包括文档的审查?文档的规范?竟然也没有包括设计的规范,没有指出做事(任何事,比如包括你去端一杯水)的流程?

我认为,上述75条应该全部抹去,因为它们杂乱无章却没有主题,一个质量好的软件与什么 "有可以作为宣传亮点的Cool Feature么?" 我想是应该完全没有关系的。

如果你想做一个好的软件,你只需要遵循以下2条简单原则即可
1、你为什么要这么做?你的依据是什么? ----指流程
如:你为什么要写这函数?你为什么要改这文档?

2、你做的对吗?质量好吗?
如:性能高吗?完全满足需求与规范吗? ---指审查

以上2条完全适应于所有的人员,包括设计,编码,测试人员,所有的人均要遵循上述原则。
它们可以用一句话来解释:做事要有流程,做完后有人检查,OK。

如果按照以上2条进行,我保证(100%保证),你的软件的质量绝对是好的,因为这种保证来自于德国数百年的生产流程( 不信我,但你一定要相信德国货)。

我反对上述的75条是因为75条本身并不知道它想要说明什么,而是即兴发挥。以致第75条: 尽量不要用Virtual Heads 与上下文不符而没有检查。它没有说明质量的核心就是流程!也就是说,你完全做到了上述的75条,你的项目的质量也可能是不好的。

因此,放弃75条,回到家中,制定流程(如果没有),按流程工作,然后审查是否遵守了流程。

很多人可能会觉得我的回答比较可笑或不可以理解,我只能感到遗憾。
我个人觉得楼上的误解了,mvm提出此75条作为经验总结,便绝非强调按此75条行事即可万事大吉。对我们每个人来说,如果能从中提取到三五条与自己实践相关的经验加以改进或应用,那么可能就会起到非常不错的效果。

你提出的源自德国生产流程的两条经验也很不错,但同样也不能说明只要遵循这两条就可以了。那美国、日本、欧洲其它国家的企业数百年来也积累了属于他们的很棒的经验呀。他们看了你的评论后可能会很不服气呢。

个人看法,仅供参考:)
CI是什么?CI=代码审查?“I" stands for what? 我印象中,code review倒是有的。

难道这75条里面没有code review么?
请看第35条:“你们会隔一段时间就停下来夯实代码么?”。所谓的“夯实代码”,就是指阶段性的code review以及在此基础上的code consolidation。
再请看第60条:“你们有统一的代码书写规范么?”。Code书写规范就是code review的一部分工作。能说没有code review么?


“上述75条应该全部抹去,因为它们杂乱无章却没有主题”——那是你没有看出主题来。这75条的主题是这样的:
1-5: 工具
6-10:沟通
11-15:计划和进度表
16-20:缺陷管理
21-25:士气
26-30:配置管理
31-35:风险控制
36-40:又是沟通
41-45:还是沟通
46-50:测试
51-55: 又是测试
56-60:编码,developer
61-65:规划,envision
66-70:设计
71-75:人力资源

“它没有说明质量的核心就是流程!”——说这话的人,对软件质量的认识还停留在一个比较低的水平。看一下上面1-75各条的主题就可以发现,决定质量的因素太多了,绝非简简单单的一句“流程”就能概括的。

同样,简单化并不代表认识的水平高。“如果你想做一个好的软件,你只需要遵循以下2条简单原则即可”——流程和审查,谁都知道。但是怎么做才能保证流程有效呢?怎么做才能保证审查有效呢?CMM告诉了我们流程和checkpoint,但没有告诉我们怎么做,所以大家还是都不知道怎么做软件流程。

魔鬼就在细节中,这75条全部都是关于细节。

“75条本身并不知道它想要说明什么,而是即兴发挥”——75条不是即兴发挥,而是有条理的在总结。从上面归纳的1-75条的主题就可以看出,总结这75条的时候是遵循着一种思路的。我们要善于接受75条这种表达方式。就好像著名的祖尔(Joel)法则12条一样,并非大而全,而是一些best practice的总结。

“尽量不要用Virtual Heads”是不是和质量有关?当然有。Virtual heads意味着resource is not secure,shared resource会降低resource的工作效率,容易增加出错的机会,会让一心二用的人没有太多时间去review spec、review design。所以说,virtual heads绝对是对质量有害的。软件开发中的人不能简单的按照labor、按照人月来算。一个dedicated的人,要强过两个只能投入50%时间和精力的人。

况且,谁都不是傻瓜,谁都不会认为有了75条就可以不要任何其他的软件工程手段。RUP之类的流程、各种code review、spec review,都是非常必要的手段;瀑布模型、螺旋模型、V模型、X模型等,仍然是软件工程的基础。这个世界上没有silver bullet:RUP不是silver bullet,CMM不是silver bullet,XP不是,Test-Driven不是,当然75条也不是。

最后,我想说的是我们每个人都要show respect。在看懂别人的意思之前,千万不要轻易的轻蔑的说“你不懂”。
btw, "放弃75条,回到家中,制定流程(如果没有),按流程工作,然后审查是否遵守了流程"——这75条恰恰就是流程,是流程里面的肉,而不只是一个骨架。

随便举几个例子:
“9. 你遇到过有人说“我以为…”么?”——如果遇到,这就是spec review的流程出问题了。
“12. 你们的工作量是先由每个人自己估算的么?”——自下而上,还是自上而下,经验法还是专家法还是三分法,这就是plan的流程。
“18. 你们对缺陷的轻重缓急有事先的约定么?”——这是缺陷管理的流程。
“40. 其他部门知道你们项目组在干什么么?”——cross team communication的流程
“44. 你做决定、做变化时,告诉大家原因了么?”——变更管理流程
“57. 你们的程序员是写完代码就扔过墙的么?”——关于Test Release Document的流程

Btw,“63. 有可以作为宣传亮点的Cool Feature么?”看似和质量无关。不过按照我的经验,cool feature的作用是“一俊遮百丑”,有亮点就可以掩盖一些问题。这样,对于客户来说,会感觉产品从质量角度来说还是acceptable的。或者说,cool feature或者说亮点可以作为质量问题的一个事后弥补措施。你想想,很多人经常说“微软的系统不安全,不过很好用”,其实这就是一例。
CI = Code Inspection.

请注意,CI与代码规范是两码事。
这么说吧:当您邀请别人做CI时,作者有义务首先确保它的代码已经符合代码规范。否则,CI会被取消,直到您已经首先确保这一点为止。这就好象,一个人拿了一段代码去做CI,但这段代码竟然还没有被编译过一样。

这么做的原因只有一个:已经成文的规范,不会有人对你说第二遍。而且,这浪费别人的时间。(请注意:这些应该被定义在CI的流程中)。

我感到遗憾的原因是:您已经有了如此多的经验(这些经验都不错,只是太杂乱),却仍没有理解质量的精髓,让人遗憾。
1. 我没有说CI与代码规范是一码事。
2. 这些经验不杂乱。不“杂乱”的是教条,“杂乱”的才是经验。
3. 你敢说你理解质量的精髓?
4. 我用Code Review的说法更多。

Google搜索结果:
约有 20,700 项符合"code inspection"的查询结果
约有 124,000 项符合"code review"的查询结果

哪个术语更通用,一目了然。

5. CSDN上有很多这样的板砖。文人相轻。
6. 山外有山,我相信一定有高手。真正的高手看到后辈,不会说“你还差得很远”
7. 本来就是一种知识分享,为什么一定要把别人分享出来的东西说的一钱不值?

[点击查看详细]
分享到:
评论

相关推荐

    Python爬虫爬取马蜂窝旅游景点评分、评论、评论日期(针对只能爬取五页评论做了改动)

    ②以马蜂窝某景点为例,其评论高达3000多条,但这3000多条并非是完全向用户展示的,向用户展示的只有5页,数了一下每页15条评论,也就是75条评论,有点太少了吧! ③因此想了个办法尽可能多爬取一些评论,根据我对...

    基于LSTM网络与自注意力机制对中文评论进行细粒度情感分析

    由于我们需要对一条评论从20个层面进行情感分析,是一个典型的多标签学习任务。我这里通过训练20个4-分类器,对于一个评论文本, 每个分类器对其进行分析。最终20个分类器得到的结果汇总起来即为该模型对这条评论的...

    细粒度用户评论情感分析-基于LSTM网络与自注意力机制对中文评论进行细粒度情感分析Python源码+文档说明+数据集(一万多条)

    由于我们需要对一条评论从20个层面进行情感分析,是一个 - 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用...

    人工智能-项目实践-情感分析-基于LSTM网络与自注意力机制对中文评论进行细粒度情感分析

    人工智能-项目实践-情感分析-基于LSTM网络与自注意力机制对中文评论进行细粒度情感分析 题目介绍 该题目为《细粒度用户评论情感...包含105000条训练样本以及15000条测试样本。 关于数据集的标注可以点击这里查看。

    渐飞新闻系统 v2.5 商业版

    新增功能!! 一、在线备份数据功能 二、在线查看空间占用显示 三、刷新新闻(主要用于系统移值、模板批量更新、恢复新闻) 四、自动分页显示...十五、修正已知的BUG 十六、列出某新闻的所有评论数量

    mysql server sql面试题

    mysql server sql面试题 比如:floger 发布于 1年前,共有 0 条评论 1.用一条SQL语句 查询出每门课都大于80分的学生姓名 name kecheng fenshu 张三 语文 81 张三 数学 75 李四 语文 76 李四 数学 90 王五 语文 81 ...

    渐飞网站管理系统 v3.2 专业版

     如在新闻内容下显示最新的5条评论 十四、计划任务功能  此功能可实现在指定时间执行指定操作。  如在系统中设定凌晨3点执行更新所有栏目分页 十五、支持评论字符过滤 十六、更完善的安全机制。  记录每个用户...

    基于Spring Boot的社区论坛项目源码+数据库+项目说明.zip

    某个用户评论、点赞了帖子,或者关注了某个用户,那么被评论、点赞、关注的用户会收到一条通知。目前系统中有3种通知:评论通知、点赞通知、被关注通知。 7. 数据统计   管理员可以查看网站指定日期...

    testnew.

    五、新闻文章管理: 5.1、无级限分类; 5.2、加入回收站功能,减少无意删除的烦恼; 5.3、自由设置新闻开关、推荐与否; 5.4、集成eWebEditor在线编辑器,编辑文章更加方便; 5.5、发布滚动新闻(发布新闻时,选中...

    基于Spring Boot的社区论坛项目 SSM、Redis、Kafka、Quartz、Spring +源代码+文档说明

    某个用户评论、点赞了帖子,或者关注了某个用户,那么被评论、点赞、关注的用户会收到一条通知。目前系统中有3种通知:评论通知、点赞通知、被关注通知。 7. 数据统计   管理员可以查看网站指定日期...

    ASP新闻发布系统Ok3w v4.1.rar

    5.7、新闻分类增加图片新闻列表选项,增加自定义每页条数; 5.8、发布新闻,增加标题颜色和跳转连接,控制更自由; 5.9、发布新闻,改进图片上传方式,方便操作; 六、留言/评论管理。 七、网站管理员权限设置...

    ARM微控制器基础与实战part 1/2

     共有顾客评论0条 查看评论摘要 内容简介 本书从RM芯片应用开发者的角度,深入浅出地介绍ARM7TDMI体系结构及指令系统。以32位嵌入式微控制器LPC2104为例,具体介绍32位ARM嵌入式微控制器的结构特点及编程方法,并...

    ASP新闻发布系统Ok3w v4.4.rar

    五、新闻文章管理: 5.1、无级限分类; 5.2、加入回收站功能,减少无意删除的烦恼; 5.3、自由设置新闻开关、推荐与否; 5.4、集成eWebEditor在线编辑器,编辑文章更加方便; 5.5、发布滚动新闻(发布新闻时,...

    ASP新闻发布系统Ok3w v4.0.rar

    5.7、新闻分类增加图片新闻列表选项,增加自定义每页条数; 5.8、发布新闻,增加标题颜色和跳转连接,控制更自由; 5.9、发布新闻,改进图片上传方式,方便操作; 六、留言/评论管理。 七、网站管理员权限设置...

    ASP新闻发布系统Ok3w v4.0 build 090617.rar

    5.7、新闻分类增加图片新闻列表选项,增加自定义每页条数; 5.8、发布新闻,增加标题颜色和跳转连接,控制更自由; 5.9、发布新闻,改进图片上传方式,方便操作; 六、留言/评论管理。 七、网站管理员权限设置...

    ASP新闻发布系统Ok3w v4.3.rar

    5.7、新闻分类增加图片新闻列表选项,增加自定义每页条数; 5.8、发布新闻,增加标题颜色和跳转连接,控制更自由; 5.9、发布新闻,改进图片上传方式,方便操作; 六、留言/评论管理。 七、网站管理员权限设置...

    光栅衍射matlab代码-MP011-SOP:超快激光和电子衍射装置的标准操作程序

    光栅衍射matlab代码MP011实验室的标准操作程序 该文档大致描述了飞秒激光系统的操作以及多伦多大学MP011室内的超快电子衍射...128.100.75.10,128.100.75.99 网关地址 128.100.148.1 MAC地址 00-50-04-A3-6E-AB 子网掩

    十天学会ASP.net--我认为ASP.NET比ASP难很多,希望大家做好准备

    作者:佚名 阅读人次:11611 文章来源:未知 发布时间:2005-6-24 网友评论(4)条 第二天 学习目的:掌握C#的基本知识 一、定义变量: string strExample; 字符串("aaa") char chrExample; 字符('a') bool ...

    网趣网上购物系统时尚版V8.4

     十五、具有强大的商品关键词、站点关键词设置功能,SEO优化一步到位。  十六、强大的权限分类管理功能,可设置不同管理级别的管理员进行网站管理  十七、强大的广告管理,支持FLASH动态切换广告,支持全站飘浮...

Global site tag (gtag.js) - Google Analytics