acm-header
登录

ACM通信

BLOG@CACM

危险的热情和急切如何扼杀一个项目

许多原本有能力的软件开发人员和潜在的贡献者最终被“危险的热情”所淹没。

叶戈尔·Bugayenko

程序员不断地为我的开源项目做贡献(我所有的项目都是开源的供参考)。一些人自愿投入时间,另一些人则通过Zerocracy获得报酬。虽然多年来我与许多优秀的开发人员合作过,但我也遇到过一些被我称为“危险的热情”所困扰的人。

这些人有精力,通常也有技能,但过分热心,不知道如何分解他们的变化并逐步交付它们。受危险热情折磨的人们经常想要拆除并重建整个架构,或实施一些其他巨大的改变,通常只是为了这么做。让我们仔细看看我的意思。

让我们假设一个新的开发人员加入了团队。一开始,他所有的选项都是对的。他知道自己的代码,他有活力,他很容易沟通,他投入了时间,提交了新的门票,并提供了有用的建议。在最初的几天里,他就像是来自天堂的礼物。

然后,当他对这个项目了解得更多时,危险的热情开始蔓延。他没有给我提供有帮助的建议,而是在Telegram上给我一个大胆的断言:这个架构完全是一团糟,在项目崩溃前我只有几周的时间了。

我礼貌地反驳说我理解,但还没听我说完,他就已经建议我们从头再来。至少,他建议我们废弃一个对象集合,用一个单例和一个特定的ORM库替换它。当然,他已经用了好几个月了,它们太神奇了,一旦我看到一切都在运转,我就会被打倒,然后,然后……

在这个阶段,我可能有很多话想说。我可以提醒他,我自己就是一名建筑师,我有一长串的成功。我想指出的是,我们已经在这个项目上工作了一段时间,到目前为止,开发进展得很顺利。

然而,我经常说得很少,而是让他提交一张罚单。我保证:我会尽快审查他的建议。我不经意地提醒他,我是一个建筑师,实际上是这个项目的建筑师。在理想的情况下,他会接受这一点,并进行一些渐进的改变。更多的时候,他声称他会告诉我应该怎么做。

几天后,他向我提出了一个巨大的拉拔请求。有大量的变化,其中一些看起来非常有趣。问题是,许多建议都与我嵌入到现有体系结构中的原则背道而驰。我知道他在这个项目上投入了很多时间,但无论如何我都必须拒绝pull request。

你能猜到接下来会发生什么吗?开发者,曾经的天赐良机,只是简单地崛起和消失。你看,我才是坏人。我邪恶,反对创新,思想封闭。我怎么敢不放弃整个项目,重新开始!?以上这些我都经历过一次又一次。

遗憾的是,这个开发人员本可以做出很多有用的贡献。有时我们会遇到不称职的开发人员,但从技术角度来看,很多时候他们实际上是很棒的。他们缺乏的是微任务的能力。

进入新项目的开发人员需要知道如何将更改分解为小的、可消化的块,然后增量地交付它们。而不是推出一个巨大的变化块或试图完全颠覆整个项目,他们需要把眼光放低。作为一名经验丰富且成功的架构师,我不会允许某人在第一周就彻底毁掉一个项目。

也许我邪恶的。更有可能的是,开发人员被致命的热情击中了。虽然他们想做正确的事情,但他们太过急切和过分热心。每个修复都必须在一个拉请求中实现,没有时间等待。任何渐进式的改进都是不可接受的。记住,在他们看来,时间在流逝,项目离失败只有几周的时间了。

所以我为什么不让他们按照他们想要的方式修改代码呢?也许他们只是一个比我更好的建筑师。但事情是这样的,成为一个成功的建筑师需要微任务。作为架构师,您必须管理更改,并且必须逐步实现它们。这是一个动态的、协作的工作环境的基本需要。

当一个开发人员来找我,并试图在几天内颠覆整个项目时,我已经知道他们将与增量更改作斗争。这意味着他们将在建筑师的位置上挣扎,所以我不能完全交出整个企业的钥匙。

所以,当你拒绝危险的热情时,你并不是邪恶或思想封闭。你很谨慎,很聪明,随便你怎么称呼。最重要的是,你是一个优秀的建筑师。

叶戈尔·Bugayenko他是软件工程和管理平台Zerocracy的创始人和首席执行官。


没有发现记录

登录为完全访问
»忘记密码? »创建ACM Web帐号
Baidu
map