⭐⭐⭐ Spring Boot 项目实战 ⭐⭐⭐ Spring Cloud 项目实战
《Dubbo 实现原理与源码解析 —— 精品合集》 《Netty 实现原理与源码解析 —— 精品合集》
《Spring 实现原理与源码解析 —— 精品合集》 《MyBatis 实现原理与源码解析 —— 精品合集》
《Spring MVC 实现原理与源码解析 —— 精品合集》 《数据库实体设计合集》
《Spring Boot 实现原理与源码解析 —— 精品合集》 《Java 面试题 + Java 学习指南》

摘要: 原创出处 吃草的罗汉 「吃草的罗汉」欢迎转载,保留摘要,谢谢!


🙂🙂🙂关注**微信公众号:【芋道源码】**有福利:

  1. RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表
  2. RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址
  3. 您对于源码的疑问每条留言将得到认真回复。甚至不知道如何读源码也可以请教噢
  4. 新的源码解析文章实时收到通知。每周更新一篇左右
  5. 认真的源码交流微信群。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

“为什么没写注释?”

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

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

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

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

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

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

文章目录