写点什么

“赶工状态”与明星平庸化

  • 2008-03-02
  • 本文字数:1471 字

    阅读完需:约 5 分钟

在最近的一系列贴子中,James Golick 和 Reg Braithwaite 讨论了这样一个经常被置之高阁的事实,即陷入“赶工状态”的团队是如何导致不良结果的。讨论中提到了将压力施加于团队后产生的各种各样的情况,这些情况经常将项目推向更糟的境地;同时还讨论了团队和管理者如何使用不同的方法改变类似糟糕的处境。

James Golick 最初的假定条件是:通过将“全明星”程序员变成平庸之辈,开始采取“赶工”的方式,最后反而会导致整体生产率下降,这看起来极俱讽刺意味。Golick 的基本主张是:当开始加班“赶工”时,使得最佳程序员具备高生产力的习惯会首先被屏蔽掉。

超级程序员与你千挑万选尽可能不雇佣的普通程序员之间可能存在一个巨大的差别:超级明星程序员以代码为先,而普通程序员最先考虑的是如何每天按时下班回家。当转向“赶工模式”后,他们的优先级就发生变化了。当每个人都为了在某个日期之前完成某些任务而加班加点、每天刚踏进办公室就开始想如何在这么短的时间里交付更多的特性时,压力就来啦。大家开始偷工减料,打破正常做事的步骤,写的测试越来越少,重构也越来越少。这时你的全明星团队就已经被你成功转变成一群平庸的程序员了。

Golick 进一步阐述了为什么对团队施加压力很可能产生负面后果:

当你将团队送上死亡之旅后,会很快让程序员感到疲惫,进而导致出现质量低劣的代码。而且,开发人员很可能变得士气低落,精疲力尽,对所做的东西根本提不起兴趣来。也许最糟糕的是你,因为他们开始对你的领导忿恨不已。在这种情形下,很多项目因为那些低级缺陷而令项目后期的修改和维护困难、更有甚者,会导致重新开发工作,这会使得赶工状态下的实际总产出反而更少。

为了避免“赶工模式”的缺陷,这个贴子还为程序员提供了以下两点建议:

  1. 忘记压力。千万别指望通过放弃生产率为先的那些实践来节省时间。
  2. 勇于说“不”。 你所能做的最负责任的做法,就是让利益相关者充分理解“赶工模式”要比保证质量前提下的正常开发付出更多的代价。

当“赶工”结束后,你就是那个收拾烂摊子的人,而且大家都知道根本没时间能收拾干净。公司也不得不处理这个低质量的软件,最终它很可能是被修修补补地发布了。给果,各方都是输家。

Reg Braithwaite 之前发布过一个贴子,其中也提到第二点建议,即“勇于说‘不’”。Braithwaite 认为,作为软件专业人才的你,有责任为完成你的工作而坚持使用某种方法。但在很多情况下,你最好还是调整一下来满足老板的需求:

如果承担决策后果的人坚持要我遵循他们的判断,我可以违背直觉做出让步……(另一方面)如果让我开发一个不可靠、并有可能泄漏私人数据的软件,我宁可说“不”。

为了响应 Golick,Braithwaite 提出:虽然很多经理认为“仅此一次而已”,但许多“赶工状态”的出现并非例外情况。Braithwaite 强调:如果“赶工”状况频繁发生,或者本可以通过事先计划而避免,那么发生“赶工”就不是例外。许多管理层和开发人员将“赶工”的发生或者项目的失败归咎于“未列入计划之事”而一笔带过,Braithwaite 亦对此提出了严重质疑。

我也许无法确切知道会有什么缺陷,但是从统计学上来看,我知道一定会有缺陷,需求会成为焦点,而估算仅仅是估算。我无法对我的老板说:“我不知道他们 这么做是想要那样的结果,我也不知道这事儿会没按我们预期的方式发生,因此,我们得在没有测试的情况下赶紧把活干完。”我可以——而且确实——预见到这些事情会发生,所以我可以——而且必须——为这些事情做计划。

关于在敏捷项目中如何避免“短路”,请查看 InfoQ 的这篇文章以了解更多观点。

查看英文原文: Crunch Mode And Making Superstars Average

2008-03-02 04:411223
用户头像

发布了 100 篇内容, 共 24.1 次阅读, 收获喜欢 5 次。

关注

评论

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

SQL的单表查询

Java 程序员 后端

SSM框架示例(适合新手)(1)

Java 程序员 后端

基于Fiber的React Diff算法源码分析

贝壳大前端技术团队

Fiber React Diff

SQL Server 2008中的分区表(二):如何添加、查询(1)

Java 程序员 后端

SQL Server 高性能写入的一些总结

Java 程序员 后端

Vue学习之基础入门

Java 程序员 后端

Spring(四):bean标签解析

Java 程序员 后端

Tomcat 多端口,多虚拟主机配置方法

Java 程序员 后端

tomcat的maxThreads、acceptCount,对高并发的影响

Java 程序员 后端

Ubuntu16安装Nvidia驱动(GTX1060显卡)

Java 程序员 后端

Volatile:内存屏障原理应该没有比这篇文章讲的更清楚了

Java 程序员 后端

告别AI模型黑盒子:可解释的神经网络研究

索信达控股

机器学习 模型 可解释模型 可解释机器学习

SymmetricDS 数据库双向同步开源软件入门

Java 程序员 后端

System

Java 程序员 后端

使用JDBC操作SAP云平台上的HANA数据库

汪子熙

JDBC Cloud SAP 11月日更

Tomcat性能调优

Java 程序员 后端

Vim,人类史上最好用的文本编辑器!从此以后你就是一个善良的极客!

Java 程序员 后端

this与super关键字(阿里巴巴面试竟然问道这个了……今天把它盘透彻了!

Java 程序员 后端

SQL Server 2008中的分区表(二):如何添加、查询

Java 程序员 后端

TCP面试相关总结

Java 程序员 后端

TLS加密远程连接Docker

Java 程序员 后端

官宣!Apache ShardingSphere 5.0.0 正式发布

SphereEx

Java 数据库 Apache ShardingSphere

volatile关键字的原理和要避免的误区

Java 程序员 后端

Win10安装Tomcat服务器与配置环境变量

Java 程序员 后端

spring的事务隔离级别

Java 程序员 后端

Android技术分享| 【自习室】自定义View代替通知动画(2)

anyRTC开发者

android 音视频 WebRTC 移动开发 自定义view

Swagger 3

Java 程序员 后端

SSM框架示例(适合新手)

Java 程序员 后端

T-SQL——数据透视和逆透视

Java 程序员 后端

两强联手,百度智能云和中电互联打造自主可控工业互联网联合实验室

百度大脑

人工智能 百度

Spring系列之数据源的配置 数据库 数据源 连接池的区别

Java 程序员 后端

“赶工状态”与明星平庸化_研发效能_Mike Bria_InfoQ精选文章