看牙与IT项目
周末为了一颗牙第五次去牙科诊所,得到的消息是:还需要观察至少2周才能做牙冠,同时发现了较深的牙结石需要做刮治,刮治疗需要2次。因此至少要再去医院3次。从去年的六月体检发现这颗牙的问题,目前最乐观估计也要四月份才能完成治疗。期间种种,与我们每天都要接触的IT项目何其的相似。下面就来做一下类比,各位看官瞧瞧是不是这个理儿。btw,我是个做测试的,因此可能从测试的角度去看的时候多一些。
1.缺陷修复成本会随着时间推移越来越大。六月份体检的时候医生提醒我那颗牙有个牙洞,赶紧去补一下。由于工作紧张,又犯懒,直到十月份开始觉得很疼才去第一次看。因为好医院难约,就随便找了个诊所。当时随便补了一下,症状减轻了,以为没事儿了,后来又持续开始疼痛。到了11月份,才约到了一个好医院,第二次看牙。那次重新清理了一下原来补的地方,又补了一下。但是医生告诉我,可能已经慢性牙髓炎了,补好了得观察一下。观察半月,疼痛持续。12月份第三次到了医院,这次只能把神经杀掉了,同时医生建议做一个牙冠。由于期间感觉牙还是有些疼,但工作特别忙,就忍了一个月没去,后来觉得不能再拖了,大年初七第四次去了医院,医生做了检查,发现少给我杀了一个压根(我的那个牙根属于非常难找的类型),结果又做了一次根管治疗,并约了3星期后做牙冠。直到本周第五次去,发现我有较深的结石,需要做刮质,而刮质需要分两次做,做冠需要二次(第一次做冠可以和第二次刮治疗一起做),同时,会诊发现隐裂,牙有一定几率保不住。就这样,小小的一个蛀牙,变成大事儿了,前前后后要花一万多。作为一个测试人,整天都在跟人家宣传预防缺陷比发现缺陷更重要,自己却乌龙了,很是丢人(当然医生也有点耽误我)。但这也从非IT角度证明了“缺陷修复成本会随着时间推移越来越大”。
2.同行评审很重要,必要的评审一定要进行。第五次去牙科,也许我的主治大夫有点心虚,觉得自己hold不住了,叫来了几个专家做会诊。结果发现了3个问题:1牙龈深处有结石,做牙冠前不好好处理,牙龈会回退;2牙齿中远出有隐裂,这就需要备牙的时候请个技术高明的大夫;3.敲击仍有轻度叩痛,需要再观察至少两个星期,等症状消失后再进行下一步。IT项目中,一些关键评审很重要,不同领域的专家凑在一起很容易发现问题。如需求评审,测试人员会更关注业务完整性和连贯性;开发人员会更关注需求实现难度,和是否可以根据需求开始做设计;运维人员会更关注非功能需求,如可用性,可维护性;项目经理则更关注进度和资源;一次成功的评审能够在适时的时候发现很多问题或者风险,有效的保证项目朝着正确方向发展。至于我这次的看牙,如果会诊(评审)在第三次做,根管治疗不会做2次,牙可能不会产生隐裂(无法确定是否第二次根管治疗弄裂了我的牙),洗牙和刮质可以合并。
3.外包管理。其实在第四次和第五次看牙期间,医生说我有牙结石,建议我去洗牙。但是好医院有个问题,就是资源紧张,洗牙这种低级活儿要做得排到一个月以后了,他们建议我到外面诊所洗一下。我就找了个外边的诊所做了洗牙。结果到了第五次看牙,识别了有深层牙结石,洗牙没有冲洗干净,需要刮治。刮治其实可以和洗牙一起做的。这又耽误了时间。类比IT,这其实是一个子项目外包。这次外包出现了两个问题:1外包需求不正确,需要洗牙和刮质才能除牙结石,发包方的需求只提了洗牙。2.接包方没有非常好的识别需求:洗牙的表象下面其实是要把牙结石去掉。
4.Definition of Done。第一次补牙没有补好是后续问题严重化的一个主要因素。补完了以后牙持续疼(IT项目中这叫生产缺陷泄露)才有了后面的故事。什么是补好了一颗牙呢?我现在也说不清楚,我没有专业知识,现在我只知道,在补以前要做很好的清理工作,很显然第一次这项工作做得不到位(已经没有证据不能追究了)。在敏捷开发过程中,有一个名词经常被提及就是DOD。一项工作什么是做完了,其实要有一个明确的检验标准。
5.争取你的权利。第五次识别出牙深度结石仍然建议我去外边诊所做。我拿出了工作时候的谈判态度,列举了他们的问题,并表示出了强硬。因为这样,主任医师感到他们做法是有些问题,亲自给我做了结石刮治(他平时可不做这个)。IT项目中,各个角色的人员也要争取自己的权利(当然三观要正)。每个人争取正当权利其实保证了项目有序进行,项目经理要向老板争取足够的资源来完成他的工作;例如测试人员要争取需求质量、被测物提交时候需要保证一定质量;配置管理员要争取开发人员和文档人员规范的checkin提交物等等等等。
6.项目管理是个技术活。对于这次治牙,其实我自己是项目经理。雇佣医生,以最小的代价,尽快让我的牙齿恢复健康就是这个项目的产出,很显然我没有做好它。回想有问题的地方,有如下几点:没有认识到第1点并迅速采取行动,没有推动第2点在该发生的时候发生。没有检测第3点(没有专业判断能力),对第4点也没有很好的识别(缺乏专业能力,开始又没有找到好团队),第5点也做得不好(太相信团队/医生了)。但是做项目的时候,这些意识我都还是很强的,生活中却做得很不好。人们总说生活中很多技巧可以用到工作中,其实工作中有很多技巧也是能够用到生活中来的。今后以此为戒。
看牙与IT项目的更多相关文章
- 因为之前完全没有接触过Spring,所以准备先把spring实战看完再落实项目
因为之前完全没有接触过Spring,所以准备先把spring实战看完再落实项目
- 开源利器分享:BitBar 坐看今天你的项目涨了多少 star
今天开头我想叨叨几句,我个人最近的感受.在这个信息爆炸,互联网的时代里.我的周遭总是充斥者着各种让人能产生焦虑的信息, 我不知道有没有小伙伴和我一样,看到各种神通广大.游戏人生的大侠,低头看看自己当前 ...
- MVC项目实践,在三层架构下实现SportsStore,从类图看三层架构
在"MVC项目实践,在三层架构下实现SportsStore-02,DbSession层.BLL层"一文的评论中,博友浪花一朵朵建议用类图来理解本项目的三层架构.于是就有了本篇: I ...
- 通过go-ethereum源码看如何管理项目
今天抽空看了下go-ethereum项目的源码 ( https://github.com/ethereum/go-ethereum ),其中 ethereum 是github下的一个帐号.go-eth ...
- 从一个多项目Web工程看Eclipse如何导入Gradle项目
这里再次说一下为什么我们需要熟悉Gradle构建工具,主要原因就是很多开源项目现在都在改用Gradle作为构建工具.一部分的github上的示例代码也在用Gradle构建,如果还是只能用maven,那 ...
- Mongo基础使用,以及在Express项目中使用Mongoose
MongoDB的基本使用 MongoDB特点: 使用BSON存储数据 支持相对丰富的查询操作(相对其他nosql数据库) 支持索引 副本集(支持多个实例/多个服务器运行同个数据库) 分片(数据库水平扩 ...
- Jenkins中构建Testcomplete项目的方法介绍
Jenkins的部署在上一篇随笔中已经和大家介绍了,下面我们介绍一下再Jenkins中构建testcomplete项目.我这里使用的是Testcomplete11,下面详细介绍一下构建步骤. 1.Je ...
- Java进击C#——项目开发环境
本章简言 上一章我们了解一下开发环境,知道了什么去新建一个项目工程.却并没有去项目工程进行介绍.可是之后我们会常常跟项目工程打交道.所以这章笔者就对项程工程的常用的一些功能进行讲解.当然说全面那是不可 ...
- [SL] Silverlight + WCF Demo项目
I:项目描述:利用 Silverlight+WCF 技术,模拟资源管理器(如图1)功能,通过地址栏输入本地文件夹路径,然后将解析出来的该目录下所有文件(夹)存储到数据库中,然后再加载到界面上显示出来: ...
随机推荐
- Effective Java 09 Always override hashCode when you override equals
Failure to do so will result in a violation of the general contract for Object.hashCode, which will ...
- HTTPS(SSL/TLS) 原理之深入浅出
注:本文参考自网络上的多篇HTTPS相关文章,本人根据自己的理解,进行一些修改,综合. 1. 必要的加密解密基础知识 1)对称加密算法:就是加密和解密使用同一个密钥的加密算法.因为加密方和解密方使用的 ...
- C++分类
VS的ncb.pdb文件分析 在C/C++函数中使用可变参数 #pragma VS查看DLL接口 线程本地存储TLS(Thread Local Storage)的原理和实现--分类和原理
- SQL基础(2)-约束
1. 添加主键约束 a.创建表时添加主键(默认系统命名主键) create table pt_ticket_info( id varchar2(50) primary key not null, -- ...
- Javascript中length属性的总结
Javascript中length属性的总结 一.StringObject中的length length属性是返回字符串的字符数目. 例如: // 普通字符串 var str = " ...
- which,whereis, locate, find
which 在PATH环境变量中的路径中查找目标文件,所以用来查找都是可执行文件,Linux下的各种命令本质上就是一个可执行的文件,所以我们安装新的软件之后通常都会有相应的命令将其打开,就是因为安装的 ...
- CentOS6.3下安装VSFTP服务
CentOS下安装FTP服务器: 第一步,检查服务器端是否已经安装FTP:[root@localhost centos]# rpm -q vsftpd 如果出现的是:[root@localhost c ...
- Java读取、创建xml(通过dom方式)
创建一个接口 XmlInterface.java public interface XmlInterface { /** * 建立XML文档 * @ ...
- 01_蚂蚁感冒(第五届蓝桥预赛本科B组第8题 nyoj 990)
问题来源:第五届蓝桥预赛本科B组第8题 问题描述:有在一条定长(100cm)的直杆上有n(1<n<50)只蚂蚁(每只蚂蚁的起点都不一样),他们都以相同的速度(1cm/s)向左或者向右爬, ...
- python datetime模块用strftime 格式化时间
1 2 3 #!usr/bin/python import datetime datetime.datetime.now() 这个会返回 microsecond.因此这个是我们不需要的.所以得做一下修 ...