0x00 废话
想起上一次写起随笔已经过去了数个月之久,主要原因有二,一是有些想说的事情放在公开场合有些欠妥,当然更大的原因是当我这两年接触了形形色色的人,经过了这些那些的事情之后,却变得更不想多说。所以说,今天写下这段文字恐怕是处于偶然,或者说,这篇文章却无太多逻辑,不过是我突然想讲几个故事,讲给尚未睡下的诸位以及刚起床的各位,祝你们有一个愉快的一天。至于你相不相信这些故事是真实也好,相不相信是我所经历的也好,我不想多做影射,�各位不要见得风就是雨,接收到这些信息,你们读者自己也要判断。
0x01 一只坐井观天的蛤
写代码的人,每天打交道最多的便是电脑,其次那便是其他写代码的人。在互联网行业快速发展,人才缺口巨大的今天,写代码大多不问出身,你行你上。程序行业的主体通常不是科班出身,却也不是自学成才。如果你今天在网上发布一个 iOS 程序员的招聘,收到了 200 份简历。稍加筛选发现,有 190 人的项目经历极其类似,那就是某培训班最近结业没跑了。我们和培训班的程序员交上手也不是一两次了,面试上有两个点是很容易筛选出这部分人的。一点是基础知识,以后端为例,从简述 HTTP 协议的设计,到比较 epoll 模型和 select 模型,这些人基本上没有办法憋出一个字出来。另一点是对一个现成技术的理解的考察,比如简述面向对象编程的理解。这些问题分分钟过滤出大多数培训班程序员。
但今天我不想多说这部分人,毕竟他们学习程序也许只有 3 个月,认识成这样并不奇怪。然而真正让我奇怪的是这些人中入行数年的老人。我认识一些写 PHP 数年的培训班老程序员,最近的观察让我大跌眼镜。我从未想过他们能保持 10 年前对 PHP 的浅薄认识至今,�使用的技术也没有丝毫的变化。这些年里他们都做了些什么?我不知道。但我看到他们憋出几万又几万行的垃圾代码的时候,我都不好意思读下这补丁上补丁的代码,他们即使能依靠其维生,活得也是累得不行,难怪未过 35 岁,便嚷嚷着要急着退休。
究其原因,他们从来不关心他们工作以外的任何事,编程对他们来说只是获得财富的一种手段而已。只要这种手段还能赚到钱,便不会学习任何其他。他们对程序的理解只需要停留在基本语法上就可以,不需要任何进步,也没有打算有过任何进步。你要是问起来,他们一定会告诉你,他们的技术「够用」了,够用就行了。殊不知今天的技术发展早已翻天覆地地变化过了,他们几万行满是漏洞的错误代码,只需要几千行就能写得很好了。但他们不关心。
就在前几天,我们学校的一个学长认为我学了这个又学了那个,学得太多,必然掌握非常浅薄。我十分承认这一点,但我也试探性地问了一个问题,问问他专精于什么。他告诉我他专精于 .net 和 MongoDB 的应用。我便顺势问了一个简单的问题,也是我们面试中常问的问题「BSON 中对数组对象是如何存储的,对性能有什么影响?」没想到,他竟突然生气了起来,把我批判了一番,表示 MongoDB 本身性能就已经很好了,无需关心其底层是如何实现的,深究这其中的问题是装逼的行为,他所掌握的 MongoDB 已经「够用」了。
我又不是 naïve 的香港记者,我已知道,现在的我就算多说一句,都是无力的了。
0x02 叶公子高好龙
之前聊得是踏入行业的这些人,当然还有一些人,也很有意思。严格来说,他们只踏入行业半只脚,或者半只脚都没有踏入,便早已暴露出了问题。他们是程序界的第一大投机分子,是最大的伪君子。他们看看知乎就决定要去学编程,看看新闻便开起了自己的科技公司。
这样的人,我是身经百战,见得多了。那些哭着喊着要学编程的,有一半以上都是这样的人。我原来还以为他们是受了《黑客与画家》的鼓动,但看他们无一想学 Lisp,我便只好猜测他们大概多是受了知乎的鼓动。然而学什么都是三分钟热度,最多学了个基础语法就这不好那不好的早早放弃,最后什么都没有学会学好。这也想学,那也想学,却没有一个真正的开始。
我认识这样一名创业公司老板。我至今印象都很深的事情便是他书柜里放着全新的《算法导论》、放着全新的《Nginx 高性能 Web 服务器详解》,放着无数我垂涎已久的 O'Reilly 的书籍。当然,都是全新的,一页也没有看过,一个字也没有。毕竟连算法导论外面的塑料纸都没有撕掉。若是说《算法导论》太难,初学看不懂,我大可理解,但连塑料纸都没有撕过显然买回来就没有打算看。后来一天他给了我看 40 行他 Python 实现的爬虫,至少他认为 Python 是极其简单的语言,我一看这是吓得我傻了眼,40 行里面竟写出了 60 个错误。我认识的很多初中生 Python 写得都比这坨东西好上几百倍。
许多要学着要学那的人都是如此,等真的有机会学的时候,却根本不做任何尝试,亦或者是浅尝辄止。他们只不过是好着学这学那的名号,从一开始就没有打算学过。这些人比从培训班出来的更糟糕。随便听了两句就决定学习个新技术,数天后亦或是数小时后却又失去了兴趣。一门语言还没掌握个入门,便以为已经精通了这门语言设计的精髓。遇到问题不说 Google、StackOverFlow,连百度都不肯查上一下。最后编译器也没跑通,Hello World 都没写出,竟还能开始评价工具链的优劣。别人写得代码还没读懂竟插手乱改别人代码。我想这种人多半是知乎故事看多了,就觉得自己随随便便也能写一手好代码。这基本上就是糟践自己的智商,能写到培训班水平也算是人生顶峰了。
0x03 叶公子蛤好坐井观天
四大天王有五个,两大愚昧有三个,这是常识。
上面这两就已经可怕得很了,然而却还有一种人,他们结合了两者的全部之愚昧。此类人最无法打交道。他们嘴上说着什么都学,什么都学了一些皮毛,这本身没有问题,问题是不自知,还给自己扣上「实用主义」的帽子,也就是,这项技术学到这里就足够用了,比我学得好的就是在浪费时间钻牛角尖。
其实什么语言都去学个基本语法是很容易的,却也是没有任何意义的。一门语言的语法是小事,一门语言、一个框架的设计思路才是大事。句读之不知,惑之不解,或师焉,或不焉。小学而大遗,吾未见其明也。我所见过所有学习编程而不以编程本身的快乐为原因的,都无法坚持学到一个好的水平。毕竟这门手艺是枯燥的,如果不是解决一个问题本身能给自己带来快乐的话,是无法坚持自己做这么枯燥的事情的。
至于上面这三种人,我有没有什么良方?就目前我的经验来看,恐怕是没有,至少我做过的尝试都失败了。
愿他们自生自灭吧。
世界和平。