acm-header
登录

ACM通信

BLOG@CACM

懒惰的开发者是最好的开发者


叶戈尔·Bugayenko

我们从小就被教导,最努力的工作者享有最大的成功。至少我们被告知,努力工作是有回报的。但是“努力工作”对软件开发人员来说可能会有一点问题,因为它通常意味着远远超出项目的原始范围。

在理解遗留代码时尤其如此。当你处理遗留代码,你经常会发现自己不得不参与所谓的"深入思考在你开始尝试修复小bug之前,你被要求了解大问题的范围。很长一段时间,这让我压力山大。然后我有了一个主意:偷懒。

在我的公司,Zerocracy,我们练习# NoAltruism政策.毫不夸张地说,我们只考虑我们自己和我们的个人利益。这听起来可能有点刺耳。对你的客户友好一点不是更好吗?在一个理想的世界里,也许是这样。但我们从客户身上了解到的是:他们也践行#不利他主义。

客户希望保持低成本,如果可以,他们会将成本转嫁给外部公司。这就是为什么我们决定“变得懒惰”,只做我们付钱让我们做的事情。除非我们得到报酬,否则我们不会竭尽全力去改进项目、重构或修复代码。

当我们发现我们面前有一项任务,而我们不明白如何解决它,我们通常不会责怪自己。如果问题与遗留代码有关,则尤其如此。事情是这样的,我们不是被雇来理解遗留代码的。我们被雇来增加一个功能,解决一个bug,或者其他什么。

突然之间,成为项目遗留代码的专家就超出了我们的工作范围,而且由于我们很懒,我们不会冒险超出我们的任务范围,除非我们得到了报酬。就遗留代码而言,项目不应该期望您是聪明的或精通技术的。相反,你需要专注于收门票。

如果代码非常混乱,或者bug非常严重,或者您无法估计需要花费多少时间来理解遗留代码,更不用说如何修复bug了,这都不是您的错。那是谁的错呢?第一个犯错的是代码本身。监督代码的客户也有责任。

一旦您接受了这一点,您就可以通过创建新的票据来组合一个基本的报告。这份报告可能很简单:

  • 没有Y类的文档,不知道它是如何工作的。
  • 库Z正在使用,但为什么你不用库B呢?
  • 这个算法很复杂,你能解释一下它是做什么的吗?
  • 类命名规则不一致,能提供文档吗?

突然间,你最初的“报告”变成了一系列问题。你不能提供答案,因为你并不真正了解它们,你也懒得去想。回答这些问题不属于你的工作范围,所以期待客户提供文件是合理的。

现在,你可能已经注意到上述问题中的一个共同线索。我没有寻求帮助。我没有让别人为我创造东西。程序员经常会寻求帮助,比如“我应该使用哪个库来完成这个任务?”

问题是,你的客户雇你不是为了帮你做事。他们雇用你不是为了他们能是你的老师,要么。他们并不想向你解释任何事情。对他们来说,他们不愿意花的是金钱和时间。

因此,您的目标是让您的客户修复代码库,以便代码本身变得更明显和更容易阅读。这不仅对你有帮助,对其他人也有帮助。因此,要关注文档和代码源代码的修复。

好了,您已经把票拿出来了,您已经要求客户修复他们的源代码并解决其他问题。那么现在呢?坐好,放松!你等着罚单被解决,不用担心是谁在解决问题;这不关我们的事。

现在,你的雇主可能会把问题推给你,让你自己解决。这很好,只要你得到了报酬,而且雇主扩大了你的工作范围。您现在不是在修复bug,而是在记录一些功能或进行这样那样的重构。

当你创造门票并责怪周围的其他人时,你将继续创造越来越小的范围。最终,您可能会发现机票可以在半小时或更短的时间内解决。记住,当我说“责备所有人”时,并不是指对别人大喊大叫。它只是意味着不要因为不是自己造成的问题而自责,并将编写糟糕代码的责任转移到原始源代码上。

懒惰需要付出很多努力(认真地)。我们生来就不会懒惰。有些人会抵制这个号召。他们可能会感到羞耻(住手!)他们想成为完美主义者(只让你完美你的工作!)或者也许你缺乏懒惰的激情(找份新工作吧!)

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


评论


穆罕默德Suzen

从ACM的职业道德准则来看,这是不可接受的做法。Zerocracy促进
无利他主义和无帮助。这种做法违背了ACM作为一个组织的核心使命,即“为社会和人类福祉做出贡献,承认所有人都是计算的利益相关者”。我请求ACM撤回这篇文章。计算机专业人员有义务以利他的方式行事,并互相帮助,以促进商业生产力、人类福祉和计算机系统的进步。对于计算机行业来说,零统治是一场可耻的运动。


叶戈尔·Bugayenko

穆罕默德,你能详细解释一下"对社会的贡献"是如何导致我们有义务以利他的方式行事的结论吗?


爱德华多门户Geroy

我认为创建这个政策是为了结束客户的滥用,#不利他主义并不意味着在零统治下人们会创建软件来支持恐怖主义。工程不是利他主义的,而是精确的,零统治的政策是为了创造一种高效的文化,而不是没有价值观的人。我认为穆罕穆德误解了#不利他主义的含义


尼基塔Puzankov

“计算机专业人员有义务以利他的方式行事,并相互帮助,以促进商业生产力、人类福祉和计算机系统的进步。”

他们有义务不浪费时间来免费提高公司的工程水平,帮助其他人完成他们的工作。并在空闲时间节省时间去帮助别人,为社会做贡献,做真正无私的事情——而不是你所说的那样。


伊卜拉欣- Gasanov

计算机专业人员有义务以利他的方式行事,互相帮助

有目的的利他主义作为一种改善制度的手段和盲目的利他主义作为一种狂热的意识形态之间是有区别的。我们需要记住的是,人类的心理总是存在缺陷,无论你想要扮演多么虔诚的圣人。我自己也见过很多例子,在类似的情况下,有偏见的利他主义者比自私但理性的人造成的伤害要大得多。

“零统治”是为了规范这些心理缺陷,而不是试图废除它们,因为这样做肯定会(又一次)白费力气。诚实面对自己,首先,是建立各种建设性职业关系的关键。对这一点的无知最终势必会多次放大表演者的内疚和恐惧,这可能会吸引某些道德原教旨主义者,他们认为害怕的程序员的内疚情结是某种美德。事实并非如此。


罗伯特-沃特金斯

无论一个人是顾问或承包商,还是拥有软件的组织的受薪雇员,都会发生这种情况。我一直都。

即使在拥有软件的组织内部,也不鼓励对没有文档记录的系统或修复底层设计问题进行深入思考,“修复眼前的问题”的态度盛行。这导致组织的维护成本随着时间的推移而稳步增加,因为技术债务堆积起来没有解决,而且越来越深。

这与能量守恒原理类似,每当人们试图创造永动机时,它就会以无限不同的形式出现:无论使用哪种时髦或现代的“方法”,试图在没有做实际的、必要的工作的情况下解决问题,总是这样。

最后,一个人是在伤害自己的客户或雇主,因为他没有警告他们,如果不能解决更深层的问题,从长远来看,他们所付出的代价将远远超过他们现在忽略这些问题所能意识到的任何即时节省。


伯尼•诺埃尔

懒惰并不意味着效率低下。我们在这个行业不是为了工作,我们是来交付成果的。而到达结果的最短路径通常是最懒的路径:)


显示所有7评论

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