佛系程序员 第五品 如理实见分

这一品我考虑了很久,始终没有开始写。因为这一品虽然很短,但是可以说是整本经文最深奥、难以阐释的部分。我自己都没有完全理解,又何德何能去为人解说呢?但是这一品又不能不讲,最重要的东西不去讲,就失去了写这个系列的意义。这一品,在我看来,是在讲三观。然而这年头,一说三观就特别敏感,我忘了之前在哪里听到过这样的一个人生经验,说:做人、做事,不要输出自己的三观。我想我是基本赞同的,虽然并不严格执行。再盗用另一个更接地气的说法,一个人的思想就像内裤,你穿没穿,穿的啥样的,你自己知道就行了,不用逢人就脱了裤子给人看。我这里主要是想分析一下佛祖的内裤,但是不免会夹杂一些私货。诸位看官自行分辨吧。

我们先来看看本品的经文:

金刚经 第五品 如理实见分

“须菩提!于意云何?可以身相见如来不?”“不也,世尊!不可以身相得见如来。何以故?如来所说身相,即非身相。”佛告须菩提:“凡所有相,皆是虚妄。若见诸相非相,即见如来。”

佛祖最后告诉须菩提的话,大概是《金刚经》最出名的几句话之一了,因为这句话的确涵盖了诸多法门。我对这句话也有很多个方面的理解,个人感觉最重要的一个方面是,这是讲看待一切事物的方法论。“一切事物”有点空,具体点讲,我认为包括从写代码到与人交往等所有事情。在我展开解释之前,我希望各位看官能先自己想一想,你自己是如何理解这句话的。

先说“凡所有相,皆是虚妄”。相,我的理解,是泛指一切具体的或有形态的或是可以名状的东西。为什么说他们都是虚妄的呢?因为那只是表现形式、手法。并不表示真实的内涵。真实的内涵,一般都是抽象的。比如,我问,你能不能简单说说你对面向对象编程的理解。一般人听到这个问题可能会组织一下语言,概括一下。而我见过的一个牛人是这么回答的,抱歉我对面向对象编程的理解没办法简单说说。

他说得是对的。如果真的对面向对象编程理解到了一定程度,是没办法三言两语说清楚的。一个复杂的问题,一定是需要一个同等复杂的语言才能描述清楚,也需要一个同等复杂的理论才能解释和解答。所以,如果有人说,面向对象的主要特性,就是继承、封装、多态。但是又没办法从这三个词引申、延展出多少相关干货出来,那他一定就是个水货。

而且,你如果把三个对面向对象很懂的人叫一起,聊聊面向对象,一定会发现他们的理解是不一样的。甚至有些点会有冲突。最可能的是,他们三个人,没有一个人说的是完全正确的。而且,别说仨,即使你把所有的面向对象专家都叫来搞个轰趴,你也没办法聊出一个绝对正确的东西出来。

找不到绝对真理,这一点儿问题都没有,因为我们解决大多数问题,甚至可以说所有具体的问题,都并不需要先找到一个绝对真理才能解决。

上面这些分析的另一层意思是:无论谁说的什么话,都不会是绝对到位的。甚至连本意都不是。因为一个人说的话,总会是他心中所想的很小的一部分。他为了说给你听,可能只是取了他觉得最重要的一部分讲给你听而已,并不会完全、完整地表达自己的观点。然后你听的时候,漏一部分、误会一部分、再脑补一部分。你的理解,和对方心中真实所想,就差十万八千里了。哪怕说的人毫无保留、听人的虚心接收,这种情况也在所难免。

上面的,都是“相”,所以说“凡所有相,皆是虚妄”。只是佛祖的意思比上面说的这些要更广大得多。所以出家之人都是六根清净、六亲不识的。

我再举一个例子,上面我说,复杂的东西就需要复杂的东西来描述。你听完上面的解释后,现在又是如何理解的呢?沃尔夫勒姆,在2002年出版的《A New Kind of Science》中提出计算等价性理论,认为:

自然界中各种过程实现的计算在复杂程序上都几乎等价。

自然界中的过程有简单,有复杂的。如果他们都是等价的,有没有办法用简单的方式描述、处理复杂的问题呢?

你可以试着回答一下这个问题。一点儿提示是:你随手在一把尺子上划一下,这个划痕所示的刻度,是一个无理数,而任何一个无理数,因其无限性和随机性,都可以被认为包含着人类发展到现在的所有知识的总和。那么你能说,你随手一划,就复制了人类所有的知识吗?

上面是说“相”。下面聊聊“身相”和“见如来”。

前段时间,一个老同学看了我前几篇之后来问了我一个问题。大体是问,佛教所宣扬的教义就是让人超脱轮回,为什么藏传佛教还搞什么转世灵童。我说这个问题有点儿大,我得写个文章才能解释清。其实我四年前在知乎上也问过一个类似的问题:“既然“诸相非相”,那为什么佛院里还要立佛像?”。本质上都是想问佛祖有没有点儿逻辑,自不自洽。怎么感觉说一套做一套呢?

这个问题说起来简单,但是其实很不简单。

简单的回答是:佛教不同于佛法。佛教团队其实是很世俗化的民间或官方组织。再多的我就不讲了。

稍微复杂一点儿地正面回答这个问题:佛法中的跳出轮回,并不是跳出生死的意思。死还是要死的。但是“阿赖耶识”会延续下来。这个名字,是不是有点儿眼熟?对的,就是圣斗士星矢里沙加领悟的第八感。

再复杂点儿的解释,会牵扯到身相的“圣义谛”和“世俗谛”的区别,就太佛学了,我自己水平所限,还没办法解释到这一层。

程序员的价值和末日

最近和一些人聊到现在的程序员这个职业(是啊,程序员和程序员在一起还能聊些什么呢),更加加深我几年来对工程类程序员(泛指一切技术岗位的员工)这个职业的一点儿感受。主要包括这么几个观点:

  1. 程序员越来越不值钱。这是大势。
  2. 程序员的价值,归根结底在于省钱。
  3. 企业用人要求越来越高,学校教育脱节与之越来越严重。
  4. 技术演进速度迅猛。思维理念、知识体系,五年间就能变得陈旧。

这几点看上去没啥直接关系,其实彼此互有关联。我来解释一下。

程序员的Good Old Time

我记得高中的时候,有一次心血来潮,把爷爷年青时评选高级经济师的论文打成Word文档。我记得也就不到一万字,我花了一个小时才打完,都不好意思让人看见。然而我爷爷一直在旁边转悠,看我打完了居然还夸我打得快,说他当年,他也要打出来,但是不会电脑,专门找了打字员,打了半天才打完,打完还请人吃饭。我听得一脸蒙逼。心想怪不得人们都怀念Good Old Time。妈得原来那个年代,会打个字都能混得风声水起的。

然后呢?当我满怀希望地学了计算机,从校门出来的时候,当时公司老大们训话的话风就变成了:“你们不要天天NB哄哄的,把现在你们全开了,我就算只招六指的程序员都能招满。”这位老大这么有底气,是因为那个年代,程序员就已经满大街都是了。而打字员这个职业已经没有了。

当时,离“会打字就能吃香的喝辣的”的那个年代,也就20多年吧。

当然那位老大毕竟还是说笑的,当年学计算机的,的确也还是很吃香的,我刚毕业那会儿,大公司招在校生都是飞来飞去,公司靠谱点儿的,给实习生都是租个别墅住(当然不是一人一栋)。实习工资都够别的专业的正式工资。

现在又10多年过去了,就算BAT有这么干的吗?没有的。为啥?因为程序员越来越不值钱。虽然相比其它行业还是高不少,但是相比过去,已经差太远了。而那位老大的笑谈,恐怕也快成事实了。

那么程序员为什么越来越不值钱了呢?我先来讨论一下程序员为什么值钱。

程序员的价值

商品的价值,决定于创造这个商品的社会平均劳动生产率。

商品的价格,还会受市场供需关系的影响。

这些话可能有人还记得,我没记错的话,应该是初中思想政治课上就讲到的。我当年觉得政治、经济是最没用的学科,现在反而感觉,这两是九年义务教育里,在成年后的生活中,最能用上的两个学科。

程序员不是商品(好吧,也许是),那程序员的价值在哪儿呢?程序(软件)吗?不,不是软件,你买个Office,装在电脑里,从来不去用它,它产生价值了吗?并没有。你下载个理财App,从来不买理财产品,这个App产生价值了吗?也没有。

为什么用Office就有价值呢?为什么从理财App上买理财产品就有价值了呢?我不用Office可以写在本子上啊,我不用理财App,可以去银行办理啊。

你想想,哪个效率高?哪个成本高?

所以程序员的价值在于:程序员创造出来的东西,能用极低的成本,提高所有(买了这个软件的)人的效率和产出。简言之,程序员是史上最强大魔法系奶妈的角色。

当然这里的程序员是指群体,毕竟不是所有程序员都做具体软件的,但是从宏观角度看,软件行业做的事儿,就是以极低的成本,颠覆其它各个行业的劳动生产率。

所以程序员的平均工资高,因为软件行业创造的价值的确很大。尤其是在节省原有的人力、物力上。所以说,程序员的价值,其实是省钱。

程序员的贬值

然后回到原来问题上,“为什么说,程序员越来越不价值了呢?”。因为软件业,和其它行业最大的不同在于,软件的发展是累积的,不需要每次从头开始做,而且成长速度没有物理量约束。而且,代码是无国界的。

从小的说,基本所有编程语言的库都自带的排序算法,现在的程序员,除了在学校和在某些面试官面前,根本不会去写什么排序算法。

往大里说,现在有Spring Cloud,有Dubbo,有Istio。你说你也会写服务治理框架,这很好,但是不用写了,你只要会用就好。写了也没有真正的价值。因为这个问题已经被大体解决了。在软件行业,除非有技术壁垒或专利保护,一个问题只需要被解决一次。第二次做的价值基本为0。当然,价格不会为0,因为总会有公司愿意为这第二次到第N次的实现掏钱的。

所以你会自己从头写一个服务治理框架,很好,也能拿到高工资,但是没有价值。这只是有价格而已。除非你做得比前人的都好,会贡献出Delta部分的价值。

那么现在程序的价值在哪?是你能把一个东西(无论是自己写的,还是现成的)在一个公司用起来,为公司解决他们业务上的独特的问题。才是有价值的。这时你会发现,用现成的东西的成本会更低,于是利润空间会更大。

随着软件行业的日益成熟,能创造的新的价值空间会越来越小。而程序员的价格(即工资)从长期来看,总是要回归其价值的。所以很不幸的,最终价格,按我的逻辑,会是0。只是可能要个几百年吧。

程序员的脱节

做程序做久了,会发现程序员做的事情一直在发生天翻地覆的变化,变化快到很多程序员根本跟不上这个节奏。于是公司招人也面临一个尴尬的囧境:会写排序算法的,会Copy Paste的,会写CRUD页面的教科书式程序员汗牛充栋。但是想招一个能创造性地用代码高效地解决实际问题的人就凤毛麟角。而且更糟糕的是,CRUD程序员多得已经营造出了种程序员就是CRUD的不良氛围。这和现在国内互联网行业如火如荼,大都处于跑马圈地的阶段不无关系。

但是当潮水退去了呢?

程序员的末日,就要来了。