周末为了一颗牙第五次去牙科诊所,得到的消息是:还需要观察至少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项目的更多相关文章

  1. 因为之前完全没有接触过Spring,所以准备先把spring实战看完再落实项目

    因为之前完全没有接触过Spring,所以准备先把spring实战看完再落实项目

  2. 开源利器分享:BitBar 坐看今天你的项目涨了多少 star

    今天开头我想叨叨几句,我个人最近的感受.在这个信息爆炸,互联网的时代里.我的周遭总是充斥者着各种让人能产生焦虑的信息, 我不知道有没有小伙伴和我一样,看到各种神通广大.游戏人生的大侠,低头看看自己当前 ...

  3. MVC项目实践,在三层架构下实现SportsStore,从类图看三层架构

    在"MVC项目实践,在三层架构下实现SportsStore-02,DbSession层.BLL层"一文的评论中,博友浪花一朵朵建议用类图来理解本项目的三层架构.于是就有了本篇: I ...

  4. 通过go-ethereum源码看如何管理项目

    今天抽空看了下go-ethereum项目的源码 ( https://github.com/ethereum/go-ethereum ),其中 ethereum 是github下的一个帐号.go-eth ...

  5. 从一个多项目Web工程看Eclipse如何导入Gradle项目

    这里再次说一下为什么我们需要熟悉Gradle构建工具,主要原因就是很多开源项目现在都在改用Gradle作为构建工具.一部分的github上的示例代码也在用Gradle构建,如果还是只能用maven,那 ...

  6. Mongo基础使用,以及在Express项目中使用Mongoose

    MongoDB的基本使用 MongoDB特点: 使用BSON存储数据 支持相对丰富的查询操作(相对其他nosql数据库) 支持索引 副本集(支持多个实例/多个服务器运行同个数据库) 分片(数据库水平扩 ...

  7. Jenkins中构建Testcomplete项目的方法介绍

    Jenkins的部署在上一篇随笔中已经和大家介绍了,下面我们介绍一下再Jenkins中构建testcomplete项目.我这里使用的是Testcomplete11,下面详细介绍一下构建步骤. 1.Je ...

  8. Java进击C#——项目开发环境

    本章简言 上一章我们了解一下开发环境,知道了什么去新建一个项目工程.却并没有去项目工程进行介绍.可是之后我们会常常跟项目工程打交道.所以这章笔者就对项程工程的常用的一些功能进行讲解.当然说全面那是不可 ...

  9. [SL] Silverlight + WCF Demo项目

    I:项目描述:利用 Silverlight+WCF 技术,模拟资源管理器(如图1)功能,通过地址栏输入本地文件夹路径,然后将解析出来的该目录下所有文件(夹)存储到数据库中,然后再加载到界面上显示出来: ...

随机推荐

  1. 关于移动端的font和图片的问题

    一.font-family 使用无衬线字体 body { font-family: "Helvetica Neue", Helvetica, STHeiTi, sans-serif ...

  2. jQuery Validate 表单验证插件----利用jquery.metadata.js将校验规则直接写在class属性里面并定义错误信息的提示

    一.下载依赖包 网盘下载:https://yunpan.cn/cryvgGGAQ3DSW  访问密码 f224 二. 添加一个另外一个插件jquery.metadata.js 并把校验规则写在控件里面 ...

  3. MyEclipse下创建的项目导入到Eclipse中详细的图文配置方法

    一.情景再现. 有些人比较喜欢用Myeclipse开发,有些人却比较喜欢用eclipse开发.但是其中有一个问题,Myeclipse里面的项目导入的时候出现了一个小小的问题. 如下: 二.说明问题 导 ...

  4. nodejs 导出excel

    nodejs 对查询数据生成excel并下载,采用方式先生成本excel文件,然后再下载:通过比较采用excel-export插件代码如下: excel.js代码: var extend = requ ...

  5. Linux系统搭建LAMP平台

    知识背景(来自:百度百科): LAMP指的Linux(操作系统).Apache HTTP 服务器,MySQL(有时也指MariaDB,数据库软件) 和PHP(有时也是指Perl或Python) 的第一 ...

  6. CentOS7.2安装总结

    第一次自己写文章,想想还有点小激动呢.折腾了大半天,终于在一个没用的台式机上面装了个mini版的CentOS7.2.写这篇文章也是做个记载,要是以后再装要注意了. 一.安装过程 采用U盘安装.最初是准 ...

  7. UVA 11992 Fast Matrix Operations (二维线段树)

    解法:因为至多20行,所以至多建20棵线段树,每行建一个.具体实现如下,有些复杂,慢慢看吧. #include <iostream> #include <cstdio> #in ...

  8. Spring 一二事(5) - 依赖注入

    <!-- 依赖注入的装配过程 --> <bean id="person" class="com.lee.spring007.di.xml.setter. ...

  9. 数据结构Java实现06----中缀表达式转换为后缀表达式

    本文主要内容: 表达式的三种形式 中缀表达式与后缀表达式转换算法 一.表达式的三种形式: 中缀表达式:运算符放在两个运算对象中间,如:(2+1)*3.我们从小做数学题时,一直使用的就是中缀表达式. 后 ...

  10. 用uGUI开发自定义Toggle Slider控件

    一.前言 写完<Unity4.6新UI系统初探>后,我模仿手机上的UI分别用uGui和NGUI做了一个仅用作演示的ToggleSlider,我认为这个小小的控件已能体现自定义控件的开发过程 ...