如何轻松和安全地构建的满足合规要求的智能产品,实现业务需求?4月26日,告诉你答案! 了解详情
写点什么

为了项目上线而加班,真有必要吗?

  • 2013 年 8 月 06 日
  • 本文字数:2301 字

    阅读完需:约 8 分钟

大家都知道:软件项目的加班可能真是有百害而无一利,但总还有些时候,有些人有侥幸心理,或是现实情况实在无法让步,比如项目必须在某个日期上线;在这些情况下,应该跟团队沟通些什么?Quora 资深软件工程师 Edmond Lau 在自己的一篇博客中,给出了自己的看法。这篇博客名为《为了满足项目上线日期要求,我该怎么告诉我的团队工作更多时间?》。

文章一开始,Edmond 指出:

在试图告诉团队要加班之前,一定要确保一点:为了保证上线日期,你有一个切实可行的计划。否则,从长远来看的最佳策略是:根据团队当前开发能力和效率,重新定义要上线的功能;或者将截止日期重新调整为更现实的时间。

接下来,Edmond 列举了自己的亲身经验。他曾参与过两个持续多月大型项目,而且团队成员都是高手,专注投入在这两个项目上。为了在某个日期之前上线,工程经理要求团队加班工作,每周 60 到 70 个小时。可是项目最后还是没有按时完成。Edmond 这样回顾项目的后果:

这样的方式让一些团队成员筋疲力尽,有些人后来离开了,其他人用了很久才恢复过来。这两个项目的情况都无法判断:加班是否真能加快进度,加班的决策在当时也许很合理,但是长远来看,两只团队都深受其害。我们从这两个项目中学到惨痛的教训:不管你多么希望项目在某个日期前完成,都对它能否做到这一点毫无帮助。不要将积极思考与现实的乐观主义混为一谈。

Edmond 列举了几个加班无助于项目尽快交付的原因:

  • 工作更多时间,每小时的效率将会降低。

如果你的团队已经习惯了每周 40 小时工作的生活节奏,而且一年来都是如此,那么很可能他们加班的效率会低于平常,甚至可能产生负面影响。疲累和睡眠减少会伤害认知功能,而且降低工作质量。

他还列举了 150 年以来的研究文献,证明这一点,而且有些文献甚至说明:如果加班过多,

有问题的工作累计带来的负面影响,会导致项目完成日期延迟,甚至比同样的团队按照每周 40 小时的工作节奏完成得还要晚。

  • 很可能你现在落后的时间进度比你以为的还要多。

在工程中,做出准确的项目估算非常难以做到。进度已经晚了,说明上个月的工作就估算得不够。所以,可能过去的工作估算少了,更有可能的是:整个项目都估算少了,包括剩下几个月的工作。

我们在项目开始时估算得要比项目结束时准确,因为开始时的工作重点放在可以深入理解的工作之上;到结束时,团队常常低估整合测试用去的时间 > ,而且每个没有预料到的问题都会让进度延后一周甚至更多。这些效应叠加起来会产生更多延迟。

他引用了《人月神话》里面的话:

特别是没有为系统测试留出足够时间,这会带来灾难性后果。因为延迟是在项目日程结束时来临的,除非交付日期快到了,没人会意识到进度上的问题。

  • 额外的工作时间会让团队精疲力竭。

Edmond 引用了《人件》中的一个症状:“undertime”,也就是说:跟随加班而来的,常常是员工为了要补偿生活方面的损失,而在工作中耗费时间去做与工作无关之事。

我们的经验指出:额外工作时间的积极影响被大大夸大了,而其负面影响却从未有人考量。负面影响可能十分严重:错误、倦怠、失误不断增多、补偿用的“undertime”等等。

  • 额外的工作时间会伤害团队士气。

在 Edmond 看来,加班之前,可能团队每个人都有自己的方式来完成每周 40 小时的工作,而且还能保证团队的凝聚力。一旦要加班,可能某些人就要多完成一些不能多加班的人要做的事情,这会影响彼此之间的关系,以前开心的团队,现在可能就不开心了。

  • 管理向截止日期的冲刺,需要耗费更多管理开销。

为了管理额外工作而举行更多站立会议和其他会议,这很常见,因为你希望团队要彼此沟通,保证每个人都在做正确的事情。然而,这种额外的沟通开销常常不会放在工作估算中。

  • 向截止日期的冲刺,会刺激产生更多技术债务。

Edmond 认为:为了赶进度而加班,几乎不可避免地会令得团队找捷径。而且在面临更多项目压力的情况下,这些技术债务很可能越积越多,将来一定要付出更多成本偿还。

不过,总有些现实情况不可避免,真到那时候,Edmond 建议在沟通时要强调一下因素。

  • 要理解为什么进度落了这么远,找出根本原因,还要与团队沟通。

没赶上进度,是因为人们偷懒,还是因为项目要比想象的复杂,要占用更多时间?如果不能理解根本原因,也就不能有信心同样的问题不会在未来几个月出现。

  • 向团队说明更可行的项目计划和时间进度,说明为什么要加班才能真正赶上上线日期,还要说明怎么做。

    仅仅告诉团队他们落后了还不够,如果不能得出更详细、更明确的计划达成目标,这就是一个警告信号,说明你比你以为的情况更落后。

  • 确保团队每个人都能理解、认同你的新进度安排。

    如果关键成员不相信你的时间表可行,那就得好好想想:你可能无法在新的指定日期前完成你想完成的工作。要是无法做到所有人都认可,那么可能只有某些人认同加班,除了团队中会有不公平的感觉之外,可能你还是无法达成最后完成日期。

  • 重点放在项目、团队或是组织的整体工作目标上,说明为什么按时上线如此重要。

    如果你无法把团队融合在一起,这就是另一个警讯:说明不是所有人都像你这么有动力去加班。

最后,Edmond 指出:

如果,在接下来冲刺的两个月时间里,你发现实际进度比修正后的还要延迟,那就准备放弃这个冲刺吧。接受现实,知道你可能是在马拉松的半程发起了冲刺,而终点线比你想的要远得多。不再可能让团队更努力去解决问题了。减少损失,不妨想想怎么制订一个应急计划应对后续问题。

错过截止日期很糟糕,但要是错过了截止日期,而且让团队精疲力尽,而且没有应急计划,这就更糟糕了。

这篇博客来自 Edmond 在 Quora 上回答的一个问题,还有很多其他人对这个问题做出了自己的回答。

InfoQ 中文站的读者中一定有不少项目经理和管理人员,面对类似问题,你们是怎么处理的?

2013 年 8 月 06 日 10:076594
用户头像

发布了 479 篇内容, 共 136.3 次阅读, 收获喜欢 38 次。

关注

评论

发布
暂无评论
发现更多内容

Python Qt GUI设计:QPushButton、QRadioButton和QCheckBox按钮类(基础篇—12)

不脱发的程序猿

GUI设计 Python Qt QPushButton QRadioButton QCheckBox

Golang Gin 框架上传介绍(四)

liuzhen007

11月日更

个人博客网站升级

北漂码农有话说

网站

和不安全访问say goodbye,手把手教大家如何给域名申请免费SSL证书

老表

https 云服务器 SSL证书 跟老表学云服务器

架构师实战营 - 模块四 - 作业

lucian

架构师实战营

Lua-Table

Changing Lin

11月日更

040022-week4-design

InfoQ_70156470130f

考试试卷存储架构

AHUI

「架构实战营」

试卷存储方案设计

zjluoyue

架构训练营 - 模块四作业

VegetableBird

架构实战营 #架构实战营 架构师实战营 「架构实战营」

在线等比数列求和计算器

入门小站

工具

GitLab CI/CD 自动化构建与发布实践

Se7en

架构实战营模块四作业

spark99

架构实战营

【架构实战营】模块四作业

liu🍊

千万级学生管理系统的考试试卷存储方案

奔奔

公司给我股份,有什么需要注意的吗?

石云升

创业公司 11月日更

模块四作业

小鹿

Prometheus Exporter (六)SNMP Exporter

耳东@Erdong

Prometheus snmp exporter 11月日更 snmp Exporter

模块四作业

心怀架构

【死磕Java并发】-----J.U.C之AQS:AQS简介

chenssy

11月日更 死磕 Java 死磕 Java 并发

第四模块-考试试卷存储方案设计

🌾🌾🌾小麦🌾🌾🌾

架构实战营

架构训练营 模块四 作业

dog_brother

「架构实战营」

模块四

侠客行

架构实战营 「架构实战营」

模块四:如何设计业务高性能高可用存储架构?-- 学习总结

小鹿

模块4作业

忘记喝水的猫

架构训练营

hw4-千万级存储方案

WWH

架构实战营

高级可视化神器Plotly绘制热力图

Peter

可视化 plotly

Golang 设计模式:builder

baiyutang

11月日更

Android C++系列:Linux进程(二)

轻口味

c++ android jni 11月日更

iOS开发:个人整理的关于UITableViewCell的常用属性的知识

三掌柜

11月日更

linux之拖拽上传文件

入门小站

Linux

为了项目上线而加班,真有必要吗?_文化 & 方法_郑柯_InfoQ精选文章