篇前语:如果一件事会成功,在最后一天之前它已注定会成功;如果它会失败,最后一天之前它已注定失败。所以我对这个“最后一天”没什么感觉。做一些和往常一样简单的事,让一些注定发生的事情发生而已。平常的一天而已。

最后期限(Deadline)是软件从业人员必须面临的最大困难与挑战,准确地说,它是所有程序员包括项目管理者的可怕梦魇。当堂吉珂德看到郊野之上的数十架风车,风车的翅翼如巨人的胳膊,正耀武扬威地奚落着这位中世纪后期没落的骑士时,堂吉珂德如勇敢的斗士一般,跃马而上,用长枪狠狠地刺向风车,换来的却是长枪折断,人仰马翻,最后大败而归。没错,最后期限之于程序员,正如风车之于堂吉珂德,确实是太强大以至于无法战胜。

那么,我们真的要知其不可为而为之吗?就像孟子老夫子说的那般,虽千万人吾往矣!虽然充满了风萧萧兮易水寒的悲壮,但铩羽而归的感觉,无疑会一次次挫败程序员的信心。更重要的是,IPO变成了负值,投资方是否还能够将项目交付与你呢?

风车看起来是不可战胜的,但如果善于分析风车的关键,找到其“罩门”,也未始没有击破的可能。例如,我们可以找到风车的枢纽部分,击破一点即可使其全线瓦解。有时候,最后期限真的是貌似强大,但若能仔细分析,认真对待,也未尝不可突破壁垒,找到制胜之道。

我曾经参与过多个项目的开发和管理工作,坦白说,最后期限总是如内心的毒蛇一般盘绕,始终是挥之不去的阴影。在客户的声声催促中,就像是听到了定时炸弹最后计时的“嘀嘀”声。明知炸弹就要爆炸,自己却无能为力,这样的感觉令人沮丧。我的一个长处是善于从失败中挖掘教训,所谓“亡羊补牢犹未晚”,即使这个项目失败了,至少在下一次项目中还存在成功的可能。总结下来,大约有如下几点可以用来对付“最后期限”。

1、与客户协商最后期限。听起来是一个笑话,如果最后期限可以协商,就不成其为最后期限了。然而,固执的管理者们,为何要未战而退,却不尝试一下可能会出现的万分之一机会呢?当你充满绝然的勇气与神情去面对客户,以专家的口吻斩钉截铁地说道:“没错,按照您规定的最后期限,我们绝对能够完成您的要求。只可惜我们却没有充分测试的时间。您是否愿意给出测试的时间,这样我们就能够交付一件让您绝对满意的高质量产品了。”或许你得到的是断然的回绝,然而如果你能够合理有效地与客户协商,仍有回旋妥协的余地。前提是,当你在向客户倒苦水的时候,千万不要说产品在最后期限之前无法完成。因为这个最后期限往往是你的市场代表为了拿到项目而做出的一次妥协决定。如果你否决了这一期限,会让客户怀疑你所在公司的诚意与能力。关键是质量! 因为对于客户而言,时间固然是一个决定因素,但高质量的产品才是最后的关键。尝试与客户协商,或许你会冲破最后期限的壁垒,看到海阔天空,呼吸一口新鲜空气。

2、与客户协商功能要点。如果不能从时间上做文章,那么就另辟蹊径,在功能上夺回你失守的阵地吧。功能总是有轻重之分的,将那些可有可无,或者是客户不太关注的功能砍去,就等同于你争取到了更长的时间。想想那些已经投入使用的产品吧,例如微软的Word。我们可以做一下调查,世界上的所有Word用户,有多少人全部使用过Word的所有功能?或者我们从使用概率来分析,产品中还有哪些使用概率不超过30%的非关键功能点?找到这些功能点,打印一个清单,然后鼓动你的如簧之舌去与客户谈判吧。或许,你能得到一个理想的结果。

不幸的是,你碰到了一个极其顽固的老古董客户,就像那些整日呆在办公室里无所事事,却有着鹰隼一般锐利的目光,专以折磨人为乐的奴隶主监工一般。他们不会听取你的友好协商,而会像孩子一般,关闭上两只耳朵,只是抱着手里的玩具使劲摇头,即使你递给他的玩具可能会更漂亮更好玩,他仍然会固执地抓住自己的玩具死死不放。现实世界中,我们总会碰到这种情况,我们会在客户那里碰得头破血流。那么,我们该怎么办?

让我们从开发过程中寻找答案吧。唐柳宗元道:“苛政猛于虎”,我们常常会畏“最后期限”如虎,然而殊不知错误的开发过程或方法有时候会比这条“虎”更为凶猛!此外,我们还可以从计划执行、任务安排、团队合作等诸多方面找到可以挤出来的时间。这个时候,项目管理者必须像葛朗台老头一般,精打细算,珍惜每分钟项目时间的运用。然而,项目管理者绝对不能因为时间紧促,而像周扒皮那样半夜学鸡叫,让团队成员加班加点,像牲口一般的对待。偶尔为之,或许无伤大雅,然而每日都如此,那么只能说明这个项目已经到头了,赶紧准备失败的毒药吧。因此,我们要做到:

1、合理裁减开发过程。在项目管理过程中,必须执行相应的开发流程,例如计划评审、同行评审、阶段评审等。此外,QA会拿着众多检查点,每日走查项目组是否在质量保证方面存在缺陷。因此,在项目周期紧张的情况之下,项目管理者与QA就必须针对项目的实际情况,合理地裁减开发过程,省去一些不必要的官僚会议以及QA检查的表面文章。同时,随之而来的利益则是大量工件,尤其是文档的减少。如果能够让开发人员能够从文山会海中解脱出来,谢天谢地,他会成为项目开发的急先锋。要知道,世界上所有的程序员都在为文档的编撰而苦恼。减少文档不等于说不写文档,即使是敏捷开发,注重代码与可工作的产品胜过完整的文档,仍然不会忽略基本文档的编写。虽然在对需求和设计进行分析期间,我们可以考虑用面对面交谈的方式,或者在白板上写下我们的设计方案,但为了项目沉淀或者产品维护与重构,以及考虑成员变化等种种因素,文档的编写仍然是项目开发中不可缺失的重要环节。关键是编写文档的“度”。敏捷的布道者Alistair Cockburn在其书《敏捷软件开发》中写道:“ 团队成员应当在为将来的使用而超支的成本与未来文档不足的风险之间进行平衡。找到两者之间的平衡点是一门艺术……”我对那种形而上学的开发过程管理深恶痛绝。为了通过阶段评审,我们必须要腾出时间来编写阶段评审文档,然后请来那些大多数尸位素餐的评审委员会专家,然后不痛不痒地提出几个缺陷或错误,最后一团和气的结束会议。显然,这是一种官僚思想,是集体的资源浪费。即使为了某些办公室政治考虑,那么项目经理也应该像牧羊犬那样,保护自己的团队成员免受这方面的干扰,就像Scrum所要求的那样。

2、合理的设定功能优先级,并以此制定开发计划。这里我们可以玩弄一个花招,即使我们无法在客户那里寻求到裁减功能的支持,但我们仍然可以在功能优先级方面大作文章。例如将客户要求的优先级高的功能,以及技术实现必须的高优先级功能先行实现,那么,到了最后期限来临之际,即使我们还有一大堆低优先级的功能未曾实现,但由于客户最关心的功能点能够高质量地运行,最后的产品虽然没有完全满足客户的需求,但凭借着优先级的合理划分,也可以让我们在后面的商务谈判中占据先机。此外,我们还可以信誓旦旦地向客户承诺,我们会在交付产品之后,继续完成剩下的功能。客户是否完全满意,谁知道呢?但至少我们交付了产品!以己之见,虽然这个产品不够全面,但总比交付一个全面的产品,却错误频现要来得好。

3、提高会议效率。无论是传统的软件开发方法,还是敏捷方法,在软件开发过程中,不可避免要召开各种各样的会议。毕竟软件是人开发的,而且是组成一个团队的人开发的,因而交流成为必然。我并不反对召开这样的会议,相反,我很乐于参加这样的会议,因为这样可以让我的口才在全体同僚面前得到充分地展示。然而,会有多少的宝贵时间淹没在这样的夸夸其谈,或者口沫横飞之中啊!与其要求团队成员加班加点,还不如提高会议效率。我很认同Scrum对于会议时间的明确规定。例如Sprint的计划会议保持在4个小时,而评审会议和回顾会议则保持在2个小时左右。 至于 Scrum的每日例会,更是短小精悍,只有15分钟。是谁发明了“站立会议”这个名词呢?发明者完全就是一位天才!改传统的枯坐会议为站立会议,就可以收住那些夸夸其谈、口若悬河的家伙了。在我的一个团队里,就有这样一个家伙,总是

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15027599/viewspace-421179/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/15027599/viewspace-421179/

解开最后期限的镣铐-转载相关推荐

  1. 解开最后期限的镣铐(转载)

    最后期限(Deadline)是软件从业人员必须面临的最大困难与挑战,准确地说,它是所有程序员包括项目管理者的可怕梦魇.当堂吉珂德看到郊野之上的数十架风车,风车的翅翼如巨人的胳膊,正耀武扬威地奚落着这位 ...

  2. 21天战拖记——Day10:“书柜整理法”再学习(2014-05-13)

    考试结束,没有考好,自己的性格决定的,不多说,看<小强>. 学习<小强升职记(升级版)>记录: 明确意义:为衣物分类 处理收集篮的几个原则: 从最上面的一项开始处理 一次只处理 ...

  3. 四月读书主题整理——用尽费退,打磨身体

    本月自己流感躺了三天,咳嗽了一周,所以格外注意为什么会病,为什么会老. 首先是一本很有趣的书<24/7>,对! 说的就是996的进阶,24/7.作者描述了一个被塑造的以24/7为福报的社会 ...

  4. 物料编码主文件------(整理)

    物料编码主文件包含的信息: (1)物料技术资料信息:提供物料额有关设计及工艺等技术资料,如物料名称,品种规格,型号,图号/配方,计量单位(基本计量单位与缺省计量单位),默认工艺路线,单位重量,重量单位 ...

  5. zip压缩包密码破解

    有一种破解方法叫做Known plaintext attack.市面上的密码破解软件几乎都带有这个功能.操作方法就是找到加密压缩包中的任意一个文件,用同样的压缩软件同样的压缩方式压缩成一个不加密的包, ...

  6. asus pro450c 拆机

    1.卸螺丝 4大(紫色)4中(红色)2小(蓝色) 2.解除暗扣 7处 3.想象你手里有一只大闸蟹,小心翼翼的解开它的壳,nice~ 转载于:https://www.cnblogs.com/jun310 ...

  7. 解开人人网登录密码的 RSA 加密--转载

    本文转载自:https://boj.blog.ustc.edu.cn/index.php/2014/05/renren-password-transfer-security/,纯粹基于兴趣留作记录.以 ...

  8. 解开他初恋之迷,我更爱他了[转载]

        我和老公是在1999年1月底相恋的,至今已将近7年. 老公是那种看起来冷漠.深沉,但实际上很细心又很优秀的人.因此,从我们认识至结婚,总有不少女孩儿或热烈或沉默地爱恋着他.而我总是高度警惕.小 ...

  9. 【转载】Kerberos原理--经典对话

    这是MIT(Massachusetts Institute of Technology)为了帮助人们理解Kerberos的原理而写的一篇对话集.里面有两个虚构的人物:Athena和Euripides, ...

最新文章

  1. 原版豆瓣评分8.8,这本书讲透了 Rust 的灵魂
  2. Yahoo为啥赚不到钱
  3. CountDownLatch 的使用小例
  4. RefreshListView中onItemClick点击错位
  5. 图解 Numpy,原来数据操作这么简单!
  6. 【C/C++开发】C++库大全
  7. 惠安七号机器人创意园_我是F518创意园,请为我投票!
  8. 使用VS开发基于Oracle程序的严重问题
  9. ldap 身份认证 概念和原理介绍
  10. 迅为i.MX6Q开发板-红外 hs0038 测试
  11. C++之struct
  12. 高考早知道:自主招生,能用低分读名校,就别再拼高分挤独木桥
  13. 王家林老师人工智能AI 第10节课:用神经网络识别手写数字内幕解密 老师微信13928463918
  14. 学美容化妆培训学校到哪里最好
  15. (原創) 如何控制TRDB-LTM輸出時某座標的顏色? (SOC) (DE2-70) (TRDB-LTM)
  16. python实现在excel文件中写入和追加内容
  17. 计算机大四找不到工作怎么办?应届生如何找到合适的工作?
  18. java jmx 监控tomcat_通过Tomcat开启JMX监控的方法图解
  19. python取出数组大于某值_计算矩阵中大于某个值的所有值
  20. only buildscript {} and other plugins {} script blocks are allowed before plugins {} blocks...

热门文章

  1. 清新脱俗的 Web 服务器 Caddy
  2. 一个Hierarchical Attention神经网络的实现
  3. FreeIPA+Gitlab实现用户管理
  4. 最实用的深度学习教程 Practical Deep Learning For Coders (Kaggle 冠军 Jeremy Howard 亲授)...
  5. 读书有益——》我不过无比正确的生活
  6. DM8达梦数据库tpch测试步骤
  7. 面试官让我手写队列,差点没写出来,回来后赶忙把重点记下来
  8. 将高级语言编写的源程序转换为目标程序的是编译程序
  9. 电商数仓数仓环境搭建
  10. oracle oaf界面个性化,个性化EBS标准OAF页面(EO,+SQL全版本).doc