新闻资讯

经过多年的单独工作,开发人员最终会看到我的(有缺陷的)代码

日期:2018-06-19 浏览:11

这个问答是每周发布的一系列帖子的一部分,这些帖子强调了技术爱好者遇到的常见问题,并由100多个问答站点组成的免费社区网络Stack Exchange的用户回答。w005977问:

我独自在一个系统上工作了大约四年。我是从地面建起来的。这不是一个完美的系统。它非常复杂,有缺陷,现在企业已经意识到这一点。

毕竟,公司的其他开发人员对这个项目越来越感兴趣,也越来越投入。我有点担心他们会把问题归咎于我。

我是妄想狂吗?还有人经历过类似的情况吗?如何减弱聚光灯对我的童车代码的眩光?

请参阅此处的原始问题。

每个人都喜欢一个好的bash / WTF sessionhaylem代码回答( 90票) :

我现在担心他们会发现错误,把问题归咎于我。

他们当然会发现错误。你自己说的:它是有缺陷的(你已经发现了缺陷)和复杂的(很可能有更多)。

是的,他们会为此责备你。因为它是一个很大的代码库,随着时间的推移,他们会习惯于将问题跟踪到代码中。毕竟这是你的代码。

但是,这并不意味着你所做的每一件事都是糟糕的,所以他们可能(如果他们足够耐心和善良)来赞扬你做得很好的部分,或者认可代码中特别精心设计的部分的价值(假设这些部分存在)。

我是不是多疑了

不,但是你似乎有点害怕批评,不管公平与否。

或者这里面有什么逻辑?

如上所述,这是非常常见和正常的。他们会发现问题的。很多。是你干的。他们会责怪你,这似乎是合乎逻辑的,毕竟你对代码负责。

但是事情的处理方式并不一定是你的错:公司应该早些时候把更多的资源和眼球投入到这个项目上,并且进行更多的定期审查。但是从其他开发者的角度来看(该死的,我们是挑剔和抨击的那种吗...)它经常会变成一个很好的例子,又是X著名的糟糕设计模式或实践的另一个例子。

在混合中增加了很多主观性(设计决策、编码风格等)...)这是一个永久代码狂欢的好方法。

还有其他人有类似的经历吗?几乎任何人编写过别人维护的代码,或者维护过别人编写的代码。站在栅栏两边是好的。

关于准备你的手动过度引用和你的设计决策的一些建议:花些时间来解释你设计决策背后的推理,好的和坏的。你当时做事是一种方式,这是有原因的。也许你现在会做得不同,也许你当时已经知道了一种不同的方式,但你选择了那种方式。一定要说为什么。但是,如果你找不到原因,那么...

不要找借口:如果有什么可怕的事情是因为你,就这样说。他们会更加尊重你的。如果一段代码因为你当时是绿色的而很糟糕,那么就这么说。如果因为当时你不知道一个更好的方法而很糟糕,那么就这样说。如果因为你没有时间而很糟糕,那么就这么说吧。我们不在乎你为什么没有时间。但很高兴知道你当时做得再好不过了。不要在应受责备的地方和时间推卸责任。

记住伤害控制的第一条规则:在别人打开之前打开它。我们真的很早就想好了。政治家、银行家、新闻和营销机构的工作也适用于垃圾代码(以及生活的各个方面)。如果你的失误必须出来(这里他们可能会),最好是按照你的条件出来,由你来控制。

不要流汗,你会被打击,你会在职业生涯中打击其他开发人员。

只要确保它轻松、积极、开放。这是一条双向的道路,所以要善意地提出严厉但有道理的批评,并谦虚地接受你的那份。

无论你做什么,都要远离圣战。个人经历就我个人而言,我知道有时候我对同事很不友好,或者说别人在我之前写的代码不友好。虽然我希望大部分时间我的批评至少有一些根据,但我相信有些时候不是,因为各种(可能是坏的)原因。

我们都这么做。不要假装,读者朋友对此皱眉。我跟你说!

我也曾几次遭到攻击,当我认为正确(或战略上值得)时,我坚持自己的立场。但我也经常接受责备,因为我搞砸了。我呢还是每天做。因为,如前所述,这通常是有原因的。

因此,与同事举行非正式的代码攻击会议已成为一种传统。不是坏的一类(尽管在这个网站上热烈讨论是否可以存在一个好的代码bash )。就像你周五下午踢回来喝咖啡,看着代码库的黑暗区域,突出一周最好的选择。然后修理它们。你也不要责怪他们。你甚至不说做X是多么愚蠢的一种方式。你只是对它一笑置之,重构它,和同事一起回顾它,这样你的重构就会被审查,历史不会重演,你就可以继续前进了。

你知道吗?有时候,你甚至会在某个地方找到一些糟糕的代码,意识到它是你的,你会谦卑地把它提交给抨击。因为你吸了,公平是公平的。你把它钉在虚拟或物理墙上,让所有人看到并记住以后要避免它。( WTF每分钟:唯一良好的代码质量衡量标准)

为记录在案,在我的公司,我们有我们流程所需的正式审查会议,以及一些非正式会议(更频繁地),每当我们觉得我们希望其他人审查我们的东西时。然后我们有非正式的代码攻击会议,这更好玩。但最终,它们都有相同的结果:我们改进代码,这才是重要的。Jeff Atwood在《每日WTF (强调他自己)》中指出:“

每日WTF 是治疗性的,甚至是教育性的。但是,不管这个代码是灾难性的愚蠢还是明显的不明智,我们都必须对此采取行动。在我们这样做之前,我们隐含地使编写坏代码的坏代码编写者痛苦而代价高昂的循环永久化,而且是无限的。这伤害了我们所有人。

而且一般来说,如果你以这种方式来对待它,它会显得相当积极。你改进代码,人们就会变得更加宽容。我们偶尔会天真地记得一些来自世界各地的错误、黑客或显而易见的荒谬代码,但是当一个新同事出现并说类似 hang这样的话时,怎么会有人如此疯狂/愚蠢以至于做出这样的事情?!当他们碰到我们的一个bash代码档案时,我们只是耸耸肩说嘿,他们当时可能有很好的理由,你知道!

然后你希望人们在你走后也有同样的态度...但不管怎样,你不会在那里知道的。

当然,在73个不同的包中复制一个常数随机数生成器或isEmpty (字符串)实现可能看起来非常愚蠢。这是一个完美的场景。但是,很有可能,这个人并没有达到那个完美的童话场景。那家伙当时有原因。也许不是个好主意,但没关系。也许只是最后期限飞过时的嗖嗖声。

饶了他吧。我总是写糟糕的代码,因为我不想列出更多的理由。我们都有。如果你的同事值两分钱,而且不是十足的混蛋,他们肯定会给你同样的好处。

没人在乎!但话说回来...谁在乎?

这是你的代码。承认吧。承认自己的错误。

边注:开源的情况据说是开源的一个亮点。毕竟,用别人的话说:

只要有足够的眼球,所有的虫子都是肤浅的。

- Eric s . Raymond s . Linus Law,摘自大教堂和市集

开发阶段眼球越多,生产阶段虫子爬起来的可能性就越小。你不应该害怕审查。

你会认为人群越大意味着审查越严格。但奇怪的是,在一些大公司,审查的程度根本与工程人员的规模无关。像Google这样的大公司对大多数项目都有一个单一的代码库,所以几乎每个人都能看到、查看和评论任何东西。坏的其他人,由于一些好的和坏的原因,把所有的事情都划分开来,只有少数人审查代码。结果是错误和重复。

开源鼓励接受审查。

是的,有人会发现你早年犯下的愚蠢填充错误,它引发了内存分配,可能会被利用来造成一个相当大的胖胸部,并带来严重后果。那又怎样?现在不见了,因为有人找到了。也没人说你现在还会犯这个错误。也许你会,因为我们都有需要咖啡的日子。或者也许我们还在吸。但没关系,有一大群人愿意尝试你的垃圾代码并修复它——如果它值得他们使用的话。你需要接受信念的跳跃:接受人们通常是仁慈的,你不会一辈子伤痕累累,并且你不会被打上世界上最差开发者的印章。恰恰相反,随着时间的推移,这将帮助你提高。神话中的孤独开发者可以变得更好,但是在与团队合作时,他不会得到强大而有用的反馈。

如果你害怕检查,你就错了。

相关: 如果有人告诉你你的代码一团糟,你会怎么反应?

找到更多答案,或者把自己的答案留在原来的帖子里。在程序员处看到更多这样的问答,这是对软件开发概念问题感兴趣的专业程序员的问答网站。如果您有自己的编程问题需要解决,请登录程序员并提出问题(免费)。



联系方式丨CONTACT

  • 全国热线:
  • 传真热线:
  • Q Q咨询:
  • 企业邮箱: