The following text is a partial translation of the original English article, performed by ChatGPT (gpt-3.5-turbo) and this Jekyll plugin:
在我从事软件开发的职业中,最让我沮丧的是在修复小错误之前,必须理解大问题范围,尤其是当代码是传统的,而且不是我的代码时。实际上,当代码是我的时候,更让人沮丧。在解决即使是一个小问题之前,总是需要进行所谓的“深思熟虑”,这让我对编程产生了厌恶。然而,我开始换一种思考方式并鼓励自己变得懒惰。下面是我的做法。
我在几年前的博客文章《如何取巧而保持冷静》中曾经写到过这个问题。然而,在我们的Telegram群组中,我们讨论Zerocracy,一些程序员一而再再而三地问我同样的问题:当我对项目完全不熟悉,只有30分钟的时间,而且错误非常复杂时,我应该怎么办?
Zerocracy的一个核心原则是#NoAltruism。这意味着你应该始终只考虑自己和个人利益。除非你为此付费,否则你不应该试图改进项目,提高其质量,修复代码或重构任何东西。
首先,当你面对即将付费的任务且不知道如何解决时,不要责怪自己。你不应该成为刚打开的传统代码的专家。严格来说,你不应该成为任何领域的专家。一个项目,与你的母亲不同,不期望你聪明或精通技术。它需要你来关闭任务。
如果严重的错误出现,代码混乱,你不知道要花多少时间来理解它,更不用说修复它,那么你应该责怪谁呢?你可以责怪周围的每个人,但首先你应该责怪代码库本身。你如何责怪它呢?通过创建新任务来报告其低质量,任务可能听起来像是这样的:
方法X太复杂了,我不知道它是做什么的。
算法X很混乱,我无法弄清楚它到底做了什么。
在这里使用了库X,但我不明白为什么你不使用库Y。
类命名规则不明确,请对其进行记录。
数据组织原则并不明显,请将其记录下来。
然而,不要犯许多程序员常犯的错误,即当我们告诉他们票务是解决问题的唯一正确途径时。他们开始在票务中提问并寻求帮助,就像这样:
请帮助我创建 X 班级。
我应该把X类放在哪个包中?
我应该使用哪个库来完成X的操作?
这个项目不是一个学校,它不关心让你变得更聪明或更熟悉它的代码。没有人会向你解释任何东西,因为这是浪费金钱和时间。相反,该项目将修复其代码库,使其对你和其他人更加清晰明了。因此,永远不要要求解释或帮助,而是要求文档和源代码修复。
接下来你该怎么办?你坐下来等待,直到那些工单得到解决。谁会解决它们?你不在乎。那是项目经理的问题。也许他/她甚至会把这些工单再指派给你,那将成为你要解决的问题。但如果发生这种情况,对你来说工作范围将会不同。你不再需要修复错误,而是需要记录一些功能或重构某个模块。
在这个新的、更小的范围内,你将会遇到其他问题。你会创建新的工单,责怪周围的每个人,他们也可能会再次回到你这里。如此往复。最终,一个工单的范围将会尽可能小,以便在30分钟内修复。
看到这个算法了吗?我相信你看到了,但它很难应用到现实生活和真实的软件项目中,这是由于一些明显的心理原因。
你是一个完美主义者。你希望完成整个任务,解决整个问题,并了解整个范围。我能说什么呢?只要项目继续按小时/月支付你,这个问题是无法解决的。一旦他们开始按结果支付,这种病就会被治愈。
你毫无激情。你对代码质量一点都不在乎。你不想让它看起来整洁,你甚至无法区分什么是整洁的,什么是杂乱的。你只想在月底拿到薪水。在这种情况下,你甚至不知道应该报告什么问题。我该说什么呢?我想你可能需要尝试找另一份工作。或许可以考虑做经理?
你害怕。责备项目并报告问题可能会使你看起来对代码库和创建它的人持有消极的态度,但事实并非如此。相反,你的态度是积极的,因为你关心它并希望它变得更好。我能说什么呢?让你的问题报告听起来非常礼貌和温和。但是要继续报告。
你没有时间。你现在必须解决这个问题,没有时间等待你报告的那些投诉的解决。我能说什么呢?责怪管理层,要求更多时间。更多的时间。但永远不要责怪自己。
软件开发是一个完美的领域,可以省事、懒散和保持冷静,因为我们的工作通常是离散的,可以非常增量式地进行。非常偶尔可能无法将问题归咎于项目,并将工作暂停直至解决您的所有投诉。不过我无法想象出这样的情况。如果您能想象得出,请告诉我。
Translated by ChatGPT gpt-3.5-turbo/42 on 2023-11-18 at 04:58