【修真院“纯洁”系列之九】程序渣识别手册

152 阅读14分钟
原文链接: zhuanlan.zhihu.com

前言

这两天在知乎上跟人撕逼,又隐隐约约回到了贴吧的感觉。”

暗灭大人对我说,我笑而不语,他说的话很有道理,但是我不经常认同。

可是我早学会了,对于不认同的观点,不去反驳,可是暗灭大人不一样,他一定要把事情说的清清楚楚,并且从来都不会好声说话,按照暗灭大人自己的话说,就是“温柔和优雅的一面为什么要留给这些装逼犯?

我会比他们更脏,更Low,更不要脸。”暗灭大人又补充了一句。

这没什么意义。我在心里对自己说,这世界上傻逼这么多,何必跟他们过不去呢?

遇到一个骂一个。”暗灭大人看着我,好像猜到了我心里在想什么。

好吧,随你。我点头致意。


第一章

很早之前,暗灭大人曾经困惑过一个问题。

什么事情自己该做,什么事情自己不该做。


认真做事,他本来以为这是一个所有的人都会有的品质。

努力拼搏,他也认为这是一个正常人都会有的念头。

然而并不是这样的,很多人有很多的致命的缺点,很多人都有自己的小算盘,推卸责任,固守成见,思维僵化,拒绝改变。


而且人们喜欢为了争论而争论,更喜欢说话的语气和态度多过于争论的意义是什么。

他们说暗灭大人总是喜欢在别人拿出一个方案A的时候,去问为什么不用方案B

当别人拿出方案B的时候,去问为什么不用方案A。

所以如果在做方案评审,你想通过方案A,你就拿出来方案B,总之,你说什么,暗灭大人都会反对。


然而暗灭大人很困惑,为什么不可以把方案A和方案B全部拿出来,讲清楚好处和坏处,然后我们做一个权衡?


方案评审的时候,请永远去做选择题。

这是暗灭大人最后告诉我的结论,我深以为然,也在心里默默的思考,为什么,其他人,不会这么想?


“因为他们是程序渣。”,暗灭大人又一次看透了我在想什么,他仰头看了一眼天,随手伸出中指比划了一下。


第二章

你不能称他们为程序渣。我在心里默默的想,只是每个人想要的东西不一样,习惯的方式不一样。


很多年前,在一家很大很大的公司,所有的人写的数据库表结构,还有页面之前的参数传递,全部用的是拼音缩写。


"CNMB,SBYG,MLGB,KNDY,GNDY,BYWWBNMN."

当这些字段从暗灭大人眼前飘过的时候,暗灭大人只觉得眼前一阵阵的发昏。

他完全不理解这是什么意思,然而身边的100多个人,都可以非常熟悉的明白,这代表着:

“超耐磨吧,随便一个,买了个表,可能都有,国内第一,不要问我不能秒你。”


暗灭大人退缩了,他觉得不知道该怎么形容这些程序员,过了很多年以后,他觉得,应该称他们为程序渣

是的,程序渣并非是一个贬义词,我们经常说自己是一个渣渣程序员。

可是他们不是渣渣程序员,他们是程序渣。

什么才是程序渣?就是那种习惯了所有的事情,拒绝做出各种改变,盲从又固执,不懂又任性,日复一日,年复一年的程序渣。

为什么要用拼音缩写做DB的字段?为什么要用拼音缩写做接口的传递?做函数的命名?

“因为我们不会英语。” 程序渣们齐声回答道 。

可是,你可以去查,可以努力去做。我看了一眼暗灭大人,默默的想。


暗灭大人的英语也是渣,渣的跟屎一样。但是这不妨碍去学习,去努力的把这件事做好。

“我们知道自己现在做的不够好,但是我们知道什么才是好。”这是渣渣程序员。

“我们知道好的是什么样,但是不觉得现在做的有什么不好。”这是程序渣。


所以,“用汉语拼音缩写做字段名,文件名,函数名,变量名,参数名的全部是程序渣。”

暗灭大人写下来了《程序渣识别手册》的第一句话。


第三章

那么《程序渣识别手册》的第二句话是什么?

“还未了解就反对,还未使用就拒绝,无论是技术框架,还是方案,还是流程,制度,工作方式,所有改变了他习惯的东西的,他都有无数的理由去拒绝的,全部都是程序渣。”


比如说,“你不怎么了解PHP,却四处去说PHP是渣渣,那么你就是一个程序渣。”,暗灭大人对着我说。

我深感惭愧,我确实对PHP了解不够多,但是看了第一眼,就知道那不是我的Style,特别是听到FaceBook对PHP做了很多Hack的时候,更加不喜欢这种东西了,更不认为Hack一门语言是一件值得称道的事儿。

所以对于暗灭大人的指责我是深感赞同的,那么坦然接受了自己是一个程序渣的前提下,还是默默的说了一句:不要再使用PHP开发程序了,所谓的快速方便完全是坑而已,有比PHP更轻便简捷的语言啊。


但是暗灭大人说的重点,仅仅在于是:如果你不了解一个东西,不了解一种新的技术,请保持自己的敬畏心。你得知道自己是无知的,你得明白自己在这方面是没有发言权的,你可以喜爱,或者是反对他,但是请不要欺骗自己已经很了解他了。


第四章

正确的开发时间分配,应该是“20%的时间做设计,30%的时间写代码,20%的时间测试,30%的时间重构。”

这是暗灭大人告诉我的。

我思考了一下,觉得他是对的。毕竟,以我的打字速度来看,我可以一分钟打好多字。程序才有多少行呢?


写代码有没有可能像打字一样速度这么快?

我忍不住延着这条思路去想。

在某种程度上来说,是可以的,我知道我要做的东西的一切,我了解怎么样写代码更合理,我有足够多的经验,我在重复做我之前做过的事情,除非 我在思考和重构,以及不断的去优化。

那么,在漫长的写代码的时间里,最花费时间的,往往是在思考怎么做。

要思考怎么做,第一件事就应该是要知道,做什么。

如果你连做什么都不知道,怎么去做?


熊杰大人说过一句话,60%的需求都是程序员提出来并且优化的。为什么这么说,因为程序员每天都在使用自己写出来的东西,熟悉逻辑,知道如何实现,是最早也是最忠诚的用户。


所以暗灭大人那个时候学会的第一件事就是:“如果你连自己开发出来的产品都不用,你不是程序渣,谁是?”

这是《程序渣识别手册》的第三句话:“不使用自己开发出来的产品的,都是程序渣”。


不,这是产品经理的锅。

不,这是老板的锅。

不,我只是一个程序员,我被迫去做我不喜欢的事情。

不,我完全用不到他。

不,我能把他们开发出来就可以了,好比是我做来一个充气妹妹,但是我更喜欢用手,这有问题么?


是的,有问题。问题就在于是,无论什么原因,你现在做的就是一个程序渣做的事情。

我无法直视暗灭大人的眼睛。

修真院在这方面上,确实做的很渣。所以我现在也是一个程序渣,但是想想在第二条的时候,我已经符合了,那么也就无所谓了吧。


第五章

“你是一个后端程序员,你能不能告诉我,你对后端人员的理解是什么?” 暗灭大人突然间问我。

与此同时,他飞快的打开了知乎,面带微笑的一一回复在他的回答里各种找骂的人SB们,哦,LB们。


“后端程序员的工作场所是在线上。”,我本来并不知道要怎么回答这个问题,可是当暗灭大人问到了,突然间这句话就浮现在我的脑海里。


是的。暗灭大很兴奋。“IDE?SVN?不不不,后端程序员工作的场所在线上。”

他咬了一根牙签,就像是在吸吮雪茄。

“不熟悉线上环境的后端程序员,全部都是程序渣。”暗灭大人兴致勃勃的说。


一个后端程序员,应该对线上的环境了如指掌,熟悉到什么程度?

多少台服务器,每台服务器什么配置,跑了哪些程序,IP是多少,占用内存是多少,CPU是多少,运行高峰的峰值是多少,低谷是多少,日均是多少,硬盘是多少,每天的日志增量是多少,DB里最大的表是多少,数据增量是多少,最常访问的请求是多少,响应时长是多少,TPS是多少,缓存命中率是多少,慢查询有多少,全部都要记得,熟悉,了解,张口就来。

“还有,用户发起一个动作之后,究竟执行了哪些操作,调用了几个Service,走了哪些业务逻辑,每一个步骤耗时多少,从发起请求到响应请求的这段时间,假设是200MS的时间,是该怎么分解成一段段的时长操作。

我大胆补充道。

暗灭大人对我温柔的笑,我看到了鼓励,所以继续说:“还要对每个环节打出来的日志很熟悉,知道哪里有日志,哪里没有,这对于查找线上故障是很重要的事情。当有一个线上的问题发生,那么在我的脑袋里面,第一个想到的应该就是正常的流程是怎么样的,应该会出现哪些日志,如果日志里记录的结果,跟我预期的不一致,那么就说明,问题就出在这里。与此同时,我也应该知道出现这种问题的可能性在哪里。只有这样,我才能够快速定位问题。即使是有很多第一次遇到的情况,也有助于判断程序倒底执行在哪里,看看能否本地重现。

是的。暗灭大人说。


《程序渣识别手册》的第四句话:“不熟悉线上环境的后端程序员,全部都是程序渣。”。


结束

可是,除此之外,还有么?

我慢慢对《程序渣识别手册》有了一点兴趣。

1.用汉语拼音缩写做字段名,文件名,函数名,变量名,参数名的全部是程序员渣。

2.还未了解就反对,还未使用就拒绝,无论是技术框架,还是方案,还是流程,制度,工作方式,所有改变了他习惯的东西的,他都有无数的理由去拒绝的,全部都是程序员渣。

3.不使用自己开发出来的产品的,都是程序渣。

4.不熟悉线上环境的后端程序员,全部都是程序渣。



还有很多,很多,暗灭大人笑了起来。他正准备说第五条。

然后他就被一双双手拉了下去,消失在人群中。


我有点不知所措,并不知道突如其来的人是谁,为什么要对暗灭大人下狠手。

“实名反对。”

“没有帮助+反对。”

“他是培训班?”

“自己没写过程序吧?要求这么高,你给程序员多少薪水?”

“我只是一个Android程序员,为什么要替后端的程序员背锅?”

“一看他就不是好人,你看他跟人说话还咬着牙签。”

“早TM看他不顺眼了,这种Low逼,自己做的跟渣一样,还有脸说别人?”

“SB”

“说的跟他自己很NB一样,这么NB,怎么不拿一个诺贝尔文学奖?”

“一点都不谦虚,有本事来辞掉我们这些程序渣啊?所有的代码自己去写啊。”



我突然间觉得有点难过,可怜这些“伸着手,长着嘴,道貌暗然”的程序渣们。

“是不是觉得这个世界需要重塑了?”暗灭大人突然又出现在我面前。

啊。我还未开口。暗灭大人又冲着我温柔的笑了笑,顺便懒洋洋的伸了一个懒腰。


我说:“他们,你,不是已经?”

“无所谓啊。这个世界还算好的地方,就是,你不需要得到很多人的认同,你只需要做好自己要做的事情就可以了。”

“如果因为这些程序渣的存在,你不去说,不去讲这些事情,只会让更多的人变成程序渣。而你只要说出来了,讲出来了这个道理,其他人是否愿意听从,就是完全他们自己的选择了。”


“你是不是想起来了,10年前,你在玩简化游戏的时候,关于跳水与否的争执?”

“是的,同样的场景,同样的道理,但是无所谓啊,要知道,毕竟你现在跟十年前不一样,你现在有能力打造出来自己期望的理想国。”


亭子,呆萌奎,小丁丁,黄伟,王杰,古尘,小丽,勇宝,培宇,一丁,晓进,果冻,毛毛。还有170+修真院的内门弟子,嗯。


小丽问我:老大,修真院,要做成什么样?

“一个没有程序渣的理想国。”


我还未开口,暗灭大人已经替我说出来了这句话。这表示着:

“后端人员必须要在本机搭建环境。”

“什么叫做Bug解决了?不是Bug找到了,代码提交了,而是发布到线上了。”

“Demo之前至少要自测100次,这100次,不是随口说的,而是每天都在测试,不要等到最后交付的时候再一起测试。”

“每天记着自己要做的几件事情,1,提交代码,2,部署到开发环境,3.确认开发环境的代码是正常的,功能可以跑通的,能够为明天早上的晨会Demo的。”

“Demo的时候如果发现了有肉眼可见的问题。立刻滚回去,自测完了以后再Demo。”

“一个程序员,从来都应该是开开心心的给别人看自己做的东西。如果你自己都觉得拿不出手,怎么去忽悠用户使用?”

“知道程序员最大的耻辱是什么吗?就是被别人发现自己的Bug。如果我写代码,有一个Bug被别人发现了,而我自己不知道,这就是我丢人的地方,他们就会觉得你不靠谱。”

“不要相信产品经理说的需求不会变,你做为一个程序员,你应该做到的就是提前跟产品经理沟通好,哪些是可以变的,哪些是变了之后改变比较大的,程序员的责任是帮助PM做决策。”

“不要说这不是你的问题,你不知道。不知道的就去想办法知道,问题是谁的,责任在哪里,这是我们总结反馈的时候,为了解决下一个问题才在意的。”

“每天写日报的时候,不要说自己解决了bug,看了资料,而是要直接了当的说清楚,改了多少Bug,Bug号什么,看了什么资料,”