技术项目走向失败的五条“捷径”

标签: IT职场 管理 Joel Spolsky 时间估算 软件开发 | 发表时间:2014-01-23 00:27 | 作者:unblock
出处:http://blog.jobbole.com

技术项目的失败,屡见不鲜。不论你运营的是一个持续跟进一些项目的软件公司,还是一个需要顾问来为你提供系统集成的非技术公司,你都有可能遭遇这个问题。进度延期、预算疯涨、直至最后完全失败,这在软件世界非常普遍。事实上,一个项目延期数年,超支数百万,已经不是新鲜事了。

例如,在2003年,我飞去洛杉矶出席微软为软件开发者举办的其中一个会议。活动中,微软发表了激动人心的消息:下一个版本的windows将会带来一些革命性的新功能。回顾我的笔记,其中有一个新功能叫做WinFS。具体细节不讲,简单来说,WinFS建议将操作系统的文件系统功能(文件和文件夹的位置信息)和数据库功能(个人对文件的描述信息)合而为一,放进一个又大又邪恶的“文件数据库混合体”。

这是一个挺有野心的动作。从技术上来说,WinFS约等于重新安排一个国家的交通系统,以适应会飞的汽车。是的,这样会使航空公司停业。同样,所有车库也要变宽来适应带翼的车子。但先别想太远,还是让这功能在一年或最多两年内面世再说吧。

三年过去了。一个叫Quentin Clark的微软经理在博客里说道,WinFS根本不能准时面世,并且它阻碍了微软推出其最新的操作系统。因此这个功能要延期,或者放到以后版本的数据库上,这意味着没有了“将文件系统与数据库系统合而为一”这唯一的亮点。有鉴于此,你怎么知道你某个技术项目哪一天会注定成为另一个WinFS?这里我有五步指引来确证一个软件的失败:

错误一:采用平庸的开发团队

软件设计是有难度的,而且不幸的是,很多自称程序员的人确实不能胜任软件设计。尽管这是项目失败的首要原因,你也不曾从官方的失败报告中得知。在所有的行业,软件业,物流业,或者客服业,人们对同事的无能都太过宽容。你从来都不会听到有人说“我们团队没有足够的智慧来完成这件事”。为什么要这样伤人的心呢?显而易见的,如果这队分得了任务的人员并不擅长这份工作,他们的工作会日复一日,日复一日……等等……但软件却没有做出来。你也不用太担心HR会阻挠你招聘一班废物。在大多数的案例里,我向你保证,HR对此毫无建树。

错误二:按周来定目标

假设你想改造你的厨房。你请来的师傅已经搞过很多厨房,而且不作详细蓝图就能估算出这项工作的成本。但软件开发者是在制造前所未有的东西。如果前所已有,他卖张拷贝的光盘给你就行了。因此,粗略的估计是不可能的。他们需要在写代码之前做好详尽的计划。无论你是客户还是开发经理,你的责任就是确保开发人员带着详尽计划来开展工作。当你向开发人员询问计划时,他们大多数人可能只会给你一份把进度按周来划分的时间表。这看似非常合理,但其实不然。如果你让软件团队提交一份大粒度的时间表(大是指需要两天以上的工作),那么你可以认定他们没有考虑到所有需要实现的细节,而这些细节将会积累,导致延期。

错误三:为截止时间而谈判

还有什么比按周划分软件项目更糟糕?就是要求团队承诺大大地提早完成工作。根据我的经验,大多数开发者都会乐观地接受你的暗示并参与讨价还价。然后你会得到一份友好的协定时间表,但却无法按时执行。

试想以下情况:海象妈妈会在怀孕15到16个月后,生出小海象。你可能会叫海象妈妈保证在15个月内做到,而她也说没问题。或者你说,“15个月?疯了吧?我们要在8个月内生出”。当然,这样谈判是无法促进事成的,而且即使得到一份8个月的进度表,我还是告诉你一个小秘密:这是不可能实现的。你可以取得一份11个月的时间表,但你还是要等15个月,因为小海象就是要15个月才能出产,有时甚至16个月。

错误四:均分任务

这里有一个破坏项目的好方法。列出人们需要做的所有工作,然后给重新均分给各人。如果Mary有太多的工作,就分一些给John。这听起来完全合理,使得你不会被质疑。但我向你保证,时间一长肯定会出现问题。那是因为当一个开发者去替代另一个时,我们有理由假设效率降为十分之一。John将会花费无数小时去搞清楚Mary其实已经熟悉的那部分代码。而且John改bug也不及Mary快,因为Mary才了解所有的陷阱在哪里。

错误五:工作到深夜

让我们假设有个项目要每周工作40小时,连续六个月才能完成。如果你让所有人每周工作60小时,那么持续四个月就能完全搞定。软件团队可能甚至会接受这个挑战,因为这使他们看上去像英雄(那个海象队有多厉害?他们每个周末都来工作!)这能行的,是吧?再想想吧。有一部完整的文献论述了“加班不会使软件更快产出”。Edward Yourdon,作为软件企业家和该文献的作者,称这种项目为“死亡行军”。

软件开发者花费大量的脑力劳动。即使是最好的程序员,也很少有能坚持几小时以上的高强度脑力劳动。另外,他们还需要休息一下大脑。这就是为什么你好像总能撞到他们在上网或玩游戏。

强迫他们投入更长时间坐在电脑前,并不会转化为更多的产出——即使会,那都将是劣质的产品。当软件开发者的大脑完全发烧,他们几乎做错多过做对,写出无法使用的代码,或者引入大量的bug。而如果你真的禁止他们上网,玩多人游戏,强迫他们在正常的睡眠时间继续写代码,好吧,他们可能会开始离你而去。死亡行军不是造成项目延期和预算爆炸的唯一条件,但绝对是充分条件。

如果以上是使你项目失败的方法汇总,那么怎样做到万无一失呢?首先,你要招聘一个巨星级人马。在Fog Creek,对于一个全职岗位,我们倾向于审核大约400个候选人。因为 最优秀的开发者拥有十倍于“一般优秀”的创造力

其次,让开发者给出细粒度的时间预算。是的,让开发者去预估制作一个新应用需要花多长时间,是不容易的( 文章1文章2)。这就是为什么他们要在每个项目之前作出可靠的蓝图。

一旦你有时间表在手,不要尝试提前截止日期。如果项目不能在你能谅解的时间内完成,解决方法不应是去交涉一个“好听的”时间表,而应该是争取更多资源,或者推迟上线,或者拿掉一些功能。

当项目正在进行时,你会多次被诱导而想重新分配工作。但你要谨慎地重分配。所换的新人需要花不少时间去驾驭原作者的代码。我觉得让人员在不同岗位上轮换有助于消除不可替代性,但我是谨慎地安排这事,并且在时间表里加入额外的三周给新人以学习新代码,和额外的一周给旧人去教新人。

最后,鼓励你的员工按合理的工时,一周干40小时。我是说真的。除了偶尔为截止日期而冲刺,我们在Fog Creek都是一天8小时工作制。在技术的世界里,应该将一个大项目看成是一次马拉松,而非一次短跑。

 

注:Joel Spolsky是纽约市Fog Creek的联合创始人兼CEO,并且是热门博客“Joel on software”的主人。英文原文最后更新于 2007 年 11 月 1 日。

技术项目走向失败的五条“捷径”,首发于 博客 - 伯乐在线

相关 [技术 项目] 推荐:

项目实战之中小网站图片压缩技术

- - CSDN博客推荐文章
接着上一篇 项目实战之中小网站数据缓存的设计与实现 ,我们继续讨论在邻水项目中其他对于中小网站要用到的技术. 由于我们的项目服务器空间有限,如果每次上传图片都大于1M那上传几张图片,空间就满了,而且访问速度也慢. 我们采取图片压缩技术,在首页展示的时候进行深压缩处理,对文章里面的图片进行浅压缩处理.

技术项目走向失败的五条“捷径”

- - 博客 - 伯乐在线
不论你运营的是一个持续跟进一些项目的软件公司,还是一个需要顾问来为你提供系统集成的非技术公司,你都有可能遭遇这个问题. 进度延期、预算疯涨、直至最后完全失败,这在软件世界非常普遍. 事实上,一个项目延期数年,超支数百万,已经不是新鲜事了. 例如,在2003年,我飞去洛杉矶出席微软为软件开发者举办的其中一个会议.

文章: 把大象放进冰箱——技术型复杂项目的特性裂解

- - InfoQ cn
在刚刚结束的QCon杭州2011大会上,来自腾讯的高级项目经理黄志斌,进行了名为“把大象放进冰箱——技术型复杂项目的特性裂解”的演讲. 特性裂解是一个能提升快速交付能力的敏捷实践. 在QCon演讲上,黄志斌主要讲述了对技术型复杂项目,如何通过对业务、技术和组织的调整,实现快速交付的目的. QCon北京2012:企业级移动开发.

reCAPTCHA项目

- - 四火的唠叨
文章系本人原创,转载请保持完整性并注明出自 《四火的唠叨》. 要说reCAPTCHA,就要先说一说CAPTCHA,全称是Completely Automated Public Turing test to tell Computers and Humans Apart,即全自动区分计算机和人类的图灵测试,也就是通常说的“验证码”,目的就是要把计算机和人区分开来.

项目集成项目管理之项目范围管理

- - CSDN博客系统运维推荐文章
7.1项目范围和项目范围管理.    项目范围:为完成具有规定特征和功能的产品、服务或结果,而必须完成的项目工作. 7.1.2项目范围管理的作用.    确定在项目内包括什么工作和不包括什么工作;由此界定的项目范围在项目的全生命周期内可能因某种原因而变化,项目范围管理也对这种变化进行管理. 7.1.3项目范围管理的主要过程.

项目的秘密——Programmers(29)

- allentranks - 西乔的九卦
载于《程序员》杂志2011年第9期. 从这一期起,开始在杂志上登出整P的大幅漫画,需要看大图的同学们,讯猛点击下图. 这个系列的漫画讲述程序员——这种神秘人类的囧事,故事多来源于我身边的程序员朋友,且以互联网开发背景为主. 如果你有什么可乐的关于程序员的故事、对话、代码,愿意通过漫画的形式分享,请给我发邮件.

绝望的项目——Programmers(21)

- leo - 西乔的九卦
载于《程序员》杂志2011年第1期. 这个系列的漫画讲述程序员——这种神秘人类的囧事,故事多来源于我身边的程序员朋友,且以互联网开发背景为主. 如果你有什么可乐的关于程序员的故事、对话、代码,愿意通过漫画的形式分享,请给我发邮件.

5种项目破坏者

- - InfoQ cn
Anders Abel是生活在瑞典斯德哥尔摩的一位软件开发者,他在自己的网站上撰写了一系列文章,箭头直指“项目破坏者”. 该系列的第二篇是《 项目破坏者分类》. Anders观察到的项目破坏者分五种:. 这种悲剧性的人物太没有安全感,一切都对他们充满了威胁. 为了克服他们的不安全感,这种破坏者会做出任何事,使出吃奶的力气,去强调一种特别难得的边界情况,因为他们正好就知道这种情况.

项目经理和Scrum Master

- - InfoQ cn
在博客上,大家对于Scrum Master和项目经理这两个角色依旧争论不休,许多评论员清晰地指出两者的不同,并表示两者不可并存,更不适合合二为一. Steve Hunton在Scrumalliance站点上发布了名为《 Scrum Master并不是项目经理的别名》的博文,他提到:. 与大众的认识相反,Scrum Master和项目经理这两个角色是完全不同的,也不应该混为一谈.

Android优秀开源项目

- - CSDN博客移动开发推荐文章
Android经典的开源项目其实非常多,但是国内的博客总是拿着N年前的一篇复制来复制去,实在是不利于新手学习. 今天爬爬把自己熟悉的一些开源项目整理起来,希望能对 Android开发同学们有所帮助. 另外,如果你有比较好的项目推荐,也烦请在评论里分享出来,我会定期更新博客内容. Apollo音乐播放器:就一个播放器,但是实现的很好.