王垠:程序员的心理疾病

说实话,虽然似乎为之奋斗了十多年,在真正进入软件行业的短短一年之后,我已经对它感到相当的厌倦了。这并不是说这个行业没有前景,而是在这个行业工作,其实很难得到心理上的快乐。

人们说女怕嫁错郎,男怕入错行。我并不认为自己入错了行,我仍然很喜欢设计程序和语言,而且我显然是这个领域的王牌之一。然而我却看到了这个行业里的无限混沌,让我觉得喘不过气来。几十年的垃圾设计堆积在那里,却没有人试图把它们清理掉,权威主义盛行。无论你在哪个公司,哪个地方,只要跟程序员说话,十有八九会谈不来。非常扫兴不说,甚至感觉很伤自尊。

久而久之我发现了,由于程序员工作的性质,他们受到的“熏陶”,形成了一种行业性的心理疾病。这里我就简单的把我所观察到的一些症状总结一下。

无自知之明

由于程序员的工作最近几年比较容易找,工资还不错,所以很多程序员往往只看到自己的肚脐眼,看不到自己在整个社会里的位置其实并不是那么的关键和重要。很多程序员除了自己会的那点东西,几乎对其它领域和事情完全不感兴趣,看不起其他人。这就是为什么我的前同事 TJ 作为一个资深的天体物理学家,在一个软件公司里面那么卑微。貌似会写点 node.js,iOS 软件的人都可以对他趾高气昂的样子,而其实这些东西的价值哪里可能跟 TJ 知道的物理知识相提并论。让人感觉是在阴沟里翻了船被老鼠欺负。

如果力学工程师犯了错误,飞机会坠毁;如果结构工程师犯了错误,大桥会垮塌;可是如果软件工程师犯了错误,大不了网站挂掉一小时,重启一下貌似又好了。所以所谓“软件工程师”,由于门槛太低,他们的工作严谨程度,其实是根本没法和力学工程,结构工程等真正的工程师相提并论的。实际上“软件工程”这个名词根本就是扯淡的,软件工程师也根本不能被叫做“工程师”。跟其他的工程不一样,软件工程并不是建立在科学的基础上的,计算机科学也根本不是科学。按照 Dijkstra 的说法,“软件工程”是穷途末路的领域,因为它的目标是:如果我不会写程序的话,怎么样才能写出程序?

为了达到这个愚蠢的目的,很多人开始兜售各种像减肥药一样的东西。面向对象方法,软件“重用”,设计模式,关系式数据库,NoSQL,大数据…… 没完没了。只要是有钱人发布的东西,神马垃圾都能被吹捧上天。Facebook 给 PHP 做了个编译器,可以编译成 C++,还做了个 VM,多么了不起啊!

其实软件里面有少数永恒的珍宝,可惜很少有人理解和尊重它们的价值。这在其它的工程领域看来是不可思议的,然而这却是事实。

垃圾当宝贝

由于没有科学作为理论的基础,没有实验作为检验它们的标准,软件行业的很多东西就像现代艺术一样,丑陋无比的垃圾还能摆在外表堂皇的“现代艺术博物馆”里面,被人当成传世大作一样膜拜。

为了凸显自己根本不存在的价值,又提出一些新的“理念”,就像有些现代艺术家一样,说“艺术的目的不是为了美,而是为了自由。”哦,这就是为什么你们可以自由地把那些让人反胃的东西放在博物馆里,还要买门票才能参观?

宗教斗争

当然了因为没有实质的技术,为了争夺市场和利益,各种软件的理念就开始互相倾轧。一会儿说软件危机啦,面向对象方法来拯救你们!一会儿又提出设计模式。过了一会儿又有人说这些设计模式里面有些模式是“反模式”,然后又有人把函数式编程包装起来,说是面向对象编程的克星,一会儿是关系式数据库,一会儿是 NoSQL,一会儿是 web,一会儿是 cloud,一会儿又是 mobile…… 每个东西都喜欢把自己说成是未来的希望。

这就是为什么有人说在软件行业里需要不停地“学习”,因为不断地有人为了制造新的理念而制造新的理念。在这样一个行业里,你会很难找到一个只把程序语言或者技术当成是工具的人。如果有人问你对某个语言或者技术的评价,是非常尴尬甚至危险的事情,所以最可靠的办法就是不做评论,什么都不要说。

引难为豪

在 IT 行业里批评一个技术难用,是一件非常容易伤自尊的事情,因为立马会有人噼里啪啦打出一大篇代码,说:就是这么简单!然后你就发现,这些人完全不明白什么叫做设计,他们以自己能用最快的速度绕过各种前人的设计失误为豪,很多程序员甚至以自己打字快为豪。

当遇到这样的人,我的经验是,千万不要恭维他们。你必须大声地嘲笑他们是 code monkey,否则你不但助长了他们的气焰,而且将来自己的自尊也难保了。

去读文档!

不知从什么时候开始,人们开始引用 Eric Raymond 的一篇叫做《提问的艺术》的文章,这篇文章后来就成为了对提问者没礼貌的借口。由于这篇文章的误导,当你希望同事能给你一个手把手的演示的时候,他们往往会丢给你一篇不知道什么时候写的文档,让你自己去读,仿佛文档就可以代替人之间的直接互动。况且不说这文档可能已经过时,里面有很多地方已经不符合最新的设计,而这意味着在潜意识里,他们觉得高你一等。他们甚至会对你说,如果每个新人来了我们都花这么多时间去指导他们入门,哪里还有时间干正事呢?然后你就意识到了,你在他们心里的地位,其实是如此的卑微和低下。

有的人稍微委婉一点,当你提问的时候,他们会二话不说打开一个浏览器窗口,在里面用 Google 搜索,然后指给你:看,就是这样。貌似比较礼貌,但那其实意味着他们在教训你:Google 一下就找到了的,自己不动脑筋!有谁不会用 Google 呢?提问的人恐怕是想得到 Google 不能给他的答案。真正有礼貌的人在不知道答案的时候是不会当面去帮你搜索的,他会对你说:“这个我也不知道…… 要不你搜索一下?”

在 IRC 的聊天室里,由于隔着网络的屏障,这种对提问者没礼貌的现象就更加嚣张。我曾经有几次去 Java 的聊天室问一些貌似基础,而其实很深入的语言设计问题,结果没有一次不是以收到像“去读 API!”这样的回答而结束。API 谁不会读,然而我需要的是一个有血有肉的人对此的理解。所以后来我根本不去 IRC 这种地方了,因为那里面对你打字的基本上已经不是人类了。他们觉得你问问题浪费了他们的时间,好像他们一天到晚泡在 IRC 里面就是在做什么正事似的。不想回答问题,不开口还不行吗。后来你发现,原来在 IRC 里面训斥新手就是这些人唯一的乐趣,所以其实他们是非开口说话不可的。然而这次他们遇到的却不是个新手,而是一个可以把 Java 整个造出来的人。

微风吹过,海面上金光闪闪,泛起一道道美丽的浪花,

王垠:程序员的心理疾病

相关文章:

你感兴趣的文章:

标签云: