开发

我的代码和注释都写的像坨屎,那又怎么样?

题图: 摄于2019年 – 绍兴东湖

一周前,我的朋友圈被一篇 #百度某新员工发飙:前人代码写得像一坨屎,颠覆了对大厂的认知# 的文章刷屏了,评论区也非常热闹。

但让我惊讶的是,几乎所有的声音里都充满着嘲笑与讥讽,有的剑指百度的价值观,那架势就好像李彦宏杀了他亲爹似的,有的把这事与之前 “阿里云挂掉” 联系起来,调侃技术大厂与技术 “大肠” 等同,都是一群垃圾货抱团,还有的则借题发挥,拿出自己的代码趾高气昂的对老板说 “瞧瞧,百度的程序员也不过如此,我们可比他们强多了”。

早就想就此类现象发表一些观点,借这个机会,谈谈自己的看法。

2007年初,我曾在杭州某游戏公司担任架构师,负责在线游戏点卡交易平台的设计与开发。当时游戏虚拟交易非常火爆,为了促进交易额的攀升,市场部的同学可算是动足了脑经,今天一个活动,明天一个促销,搞得研发的小伙伴疲惫不堪,不仅白天写代码赶工,而且晚上还要与运维一起值班守护。

在当时那个时代,我觉得搞开发的都是一个祖师爷教出来的,无论你把任务分配给谁,也别管内容是啥,只要你连续指派同一类型的任务,他必定会给你抽象个公共服务出来,然后再和你大谈 “代码(或功能)抽象” 的强大特效,嘴里还不停地叨叨 “以后再遇上这样的业务,再也不需要硬编码了,只需要这么一配,那么一调,就搞定啦!”

很多历史就是惊人的相似,信息产业的发展过去了那么多年,太多的事实表明,在缺乏经验与业务背景的前提下,大多数的抽象设计都是 “过度设计” 的产物。

可想而知,随着这些 “抽象特效” 的陆续上线,BUG数直线上升,临时性补丁满天飞,好几次营销活动都险些酿成了惨剧,还好运气算不错,都有惊无险。

就这样,公司的业绩也在技术颠簸中不断的发展壮大,并在半年内完成了新一轮的融资。

2008年春节后,因部分核心开发的离职,我打算重新引入一些有经验的架构师,并对系统进行部分的重构。

在连续看了几名候选人之后,我们选定了两名有电商背景的架构师,一个工作五年,一个工作七年,并确认一周后便能入职。正当我们打算大干一场的时候,这俩人却在入职一周后同时提出离职,这速度刷新了我当时的世界观。

我有些郁闷,立即找他们谈话。

在离职面谈中,他们向我倾吐了一些原因:

  • 命名没标准,无效命名太多,完全看不懂;
  • 注释几乎为空,代码逻辑全靠BUG;
  • 类继承关系混乱,把 “面向对象” 硬生生搞成了 “面向过程”,满屏的IF…ELSE……

这几点,我用今天的话总结下:代码写的太烂,注释写的太没水准,这系统和人都带不动,我走了,再见。

行,还算客气,并没有直接说出 “像坨屎” 这三个字。

也许是因为不甘心,我一直努力的向他们诉说着整个系统的发展过程,希望他们明白 “好的架构不是设计出来的,而是演进出来的” 道理,可他们却在说完以上这些原因之后选择了沉默,不再说话。

离开后,他们去了阿里,之后我也没再和他们联系过。

回忆起当年的我,那个内心还比较纯真的年纪,如果你跟我说阿里的代码和注释都是金子镶成的,我也绝对会相信。

这些年,我经历过一些所谓的大厂,也通过人脉关系了解过一些互联网头部企业的编码质量。

不可否认,有些公司,有些团队的某些代码与注释,的确看起来像坨屎。

几年前,我在大智慧,团队里有位五年经验的工程师,为了用Javascript实现一个 “Next Day”,不仅花了整整一周,而且在实现NextCurrentDay的时候,居然用Javascript从0开始手撸了一遍,这么一个Date+1的计算,还忘记算闰年。

原本三天干完的活,他居然搞了一周,还居然不用Date对象,就算完全没有脚本基础,我想学过计算机的应该都会知道吧。

不仅如此,他还把这个方法名取名为 “getAbc”,并且没有一行注释。

在做CodeReview的时候,差点没把我气的背过气去,瞬间点燃了我的火爆脾气,指着他的鼻子,呵令他在三天内完成修改。

没想到,这事过去没几天,他居然提出离职,并在离职面谈时向公司投诉,说我对他进行了人身攻击。

更有意思的是,他居然去了某某大厂,拿到了比在大智慧高1.5倍的薪水。

经过这件事,我觉得自己的人生观又一次被颠覆了。

“你说我的代码和注释都写的像坨屎?恭喜你,答对了,那又怎么样?老子不伺候了。”

你是否从这个事件中闻到了这股味道?

我曾在很多公开场合抨击过当今的 “新一代” 程序员,而抨击的内容也无非两点,一是基础知识薄弱,二是自我要求不高。

说到底,无非就是吐槽他们不了解内存结构,与数据库范式,甚至连基本的数据算法、二进制八进制十六进制转换之类的知识都不懂,或者是心态浮躁,满脑充斥着得过且过的价值观。

现在想想,这也怪不得他们。

互联网时代,是一个浮躁的时代,也是效率优先的时代,这不仅体现在技术圈,其他领域也一样。

如果我问你,现在考个驾照大概需要花费多长时间?相信很多人都会回答:3个月左右、6个月内。但在我当年,或许要三年才拿到驾照。

想要成为一名合格的司机,在这三年里,你不但要学习机械原理,还要掌握基本的修车技能,并通过 “师父带徒弟” 的实习期,才能拿到驾照。

现在呢?只要你的智商能够分辨 “油门” 和 “刹车”,似乎拿个驾照,也就是半年内的事。

有人说,时代造英雄,但别忘了,时代也造 “杀手”。

在马路上,你会遇到 “马路杀手”,在技术圈,你同样会遇到 “一坨代码”。

从古至今,似乎效率与质量一直是个矛盾,很多人也习惯拿这事来做挡箭牌。

“为什么没写注释?”

“因为赶工,没时间写呀”

“为什么不用这个对象?为什么不取有效方法名?”

“你又没跟我说,跑动就行了,你那么认真干嘛?”

这些对话是不是特别熟悉?听上去是不是特别有道理?

如果你也这么认为,我只想对你说,“你不但代码和注释写的像坨屎,技术价值观也像坨屎。”

真是人不要脸,天下无敌。

我还没有学会写个人说明!

“翟天临”克星?哥本哈根大学开发反“枪手”AI,识别作业代写准确率接近90%

上一篇

UI2CODE再进化!结合Redux的框架升级!

下一篇

你也可能喜欢

我的代码和注释都写的像坨屎,那又怎么样?

长按储存图像,分享给朋友

ITPUB 每周精要将以邮件的形式发放至您的邮箱


微信扫一扫

微信扫一扫