首页

科技
手机搜狐
SOHU.COM

硅谷丨如果组里同事写了屎一样的代码,你该怎么办?

论码农的自我修养_plth1
2017-01-14
+关注

很多程序员都会经常遇到这个问题:“我们团队那个二百五整天写一堆垃圾代码,我该拿他怎么办?”以下是我们为这种情况提供的一点建议。

科普时间

在硅谷,很多人喜欢用“Spaghetti Code”这个词来形容那些乱七八糟搅成一团的代码。在本文中我们把这种代码称之为“面条代码”。

免责声明

让我们搞清楚一点,“我到底该拿我的同事编的‘面条代码’怎么办?”

但是你的公司会这么想吗?不一定。你的公司可能会告诉你:我们想要那些简明的代码。但是在很多时候,你的公司也会抛给你一句:那个Bill脾气比较火爆,然后毕竟他也是高级程序员,你懂的。 在这种情况下,如果你逼着他去写“简明的代码”的话,也并不是非常妥当。

展开剩余85%

所以我们的建议就是,你所做的事情,不必总是为你的公司带来最佳的效益。

做出一个有数据支撑的方案

现在我们假设说,Bill正在一点一点的“腐蚀”他接触到的每一个代码库。作为一个高级程序员,他横行其道的表现让你非常愤怒,他在公共场合的讲话让你很反感,他写的代码恶心到你甚至都可以真的闻到代码飘出来的恶臭。你甚至会猜想他是不是故意这样做来刁难你。

但是,尽管你烦死了他编的代码,但是你确定它有那么糟吗?当你把它贬为“面条代码”的时候你是不是太主观了呢?你把所有的进入点和退出点都拎出来绘制相关性了吗?还是你不喜欢这些代码只是因为他编写的方式和你完全不一样?总之,在没有数据支撑之前你就直接去找Bill,那么看上去很像是出于恶意。

所以,在你采取行动之前要先做好调查,保证你可以支撑自己的指控。

问问你自己:“你算老几?”

当然,你已经建立了严谨的方案,进行了静态分析,询问了专家意见,遵循了行业趋势。这都很好。

但是你即将要做的是控诉的公司重量级人物Bill编写的“面条代码”啊!Bill可是公司的元老级人物,他进入公司几十年了,那个时候人们还在用信鸽而不是电子邮件,他那时候一个人仅仅用COBOL和非常原始的工具建立了原始版本的软件。那么,在这么一个元老面前,你算老几啊?

严肃的说,这很关键。你必须要考虑一下自己的身份。如果你的团队把你视作技术领袖和导师,那么你对一个团队新成员说“你的方法太麻烦了,试着把复杂度控制在3以下”,这是没有任何问题的。但是如果你是初级程序员,你这样对一个元老说话,场面会很难看。

这时候你可能会抗议:“在宣告正义之事时,不应该在意地位!”(你说这句话的时候一定觉得自己是下面这张图的感觉)。实话说,我完全同意你的观点,这些话你也可以在办理离职的时候留给HR姐姐去说。

哪怕从道理上来说你是对的,以一个相对没有经验的身份来抗议依旧会带来行政方面的代价。这些斗争都会给你自己带来危害,即使你赢得了一场胜利,也回头想一想代价惨痛的胜利意味着什么。

给出替代方案和成果

让我们假设你现在有了一个可靠的方案,还有公司资金使用的自由权。你的这个方案能很好的进行下去,并且非常可信,因此人们会采取你的方案。

但是在你解决Bill的问题之前你先不要提出这个方案。走到Bill跟前和他说“我做了很多调查,有很多证据表明你编的代码糟糕透了”只会打击他。相反,你需要提前准备一个替代方案可以提供给他。你可以说:“你似乎写了大量的算法,但是其实你可以把一些局部变量拿出来,并提取类作为字段。”

这时,你其实是提供了一种行动方案,也给了Bill一个台阶下。

但是不能只做到这一步,你要继续完成你的方案。一旦你给Bill展示出了更好的方法,一定要证明会有更好的成果。要赋有创造性一点。你可以拉着某个人问问他,他分别花了多久去理解原来的算法和新的算法。无论你要做什么,想要获得认可和称赞,你要提出好处。

谦虚的态度,外交手段和用事实说话

假设现在你建了一个方案,进行了说明,展示了它会随之带来的价值。但是不要你不要高兴得太早。

你不能有这样的态度“我的方法就是对的,你的是错的”。相反,你要让数据说话,让你编的代码来区别你的和Bill的。你从自己读过的书和前辈那里都可以知道,这种方案可以带来更好的效果。你虽然不是专家,但是如果他想看一看你的方案,你就已经取得了好结果。那么,看吧!既然他感兴趣,你就给他看看。

努力以一个耐心的导师的姿态来采纳某种方案,你不要暗示你比Bill更牛逼。你的心态应该是:主要的问题不是你和Bill,而是不同技术方案的相对优点。你只是和同辈们一起在讨论它们。

写在最后的话

我在文章开头的地方提及过,但是我想在这里重述一下。“我怎样才能阻止Bill再继续写‘面条代码’”表面上仅仅是一个技术问题。实际上,它代表了一个人与人之间的问题。

你有权利不做任何改变。或者,你可以吓唬一下Bill,把他孤立。你可以给他发抗议邮件,破坏他的成果,在代码审查的时候驳回他的东西,努力对抗他。那会打击到他,毁坏每一个人的成果。

简单来说,你想改变Bill的做法,还是应该和他加强沟通。所以,不管你采取什么方法,记得你的任务永远应该是“说服”而不是“纠正”。

(所有图片收集自网络)

广告

帅哥为什么要拒绝美女的微信?

声明:本文由入驻搜狐号作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场。

网站地图

用户反馈 合作
Copyright © 2018 Sohu.com