程序员之禅
禅是个严肃的东西,它可以改变你的人生观。不过只有你自己想要改变时,它才起作用。我将肯自律、务实、脚踏实地的程序员称作“禅宗程序员”。我相信,即使世界颠倒了,他们仍然友好、可靠。这与他们的宗教信仰基本无关,而是事关其行事作风。
改变思维方式不是一项简单的工作,需要终生学习。我本人也仍然在修习,距离说“目标达成”差很远。要是你始终在思考目标,你就迷失了方向,要将目标看作修行道路的一部分。你偶尔会迷路,终归你将回到正途。不要试图做一个完美的流浪者。请努力跟随内心的方向,但不必期望过多。
回到标题:为什么要进行禅修编程?如果你正有此疑问,本章就来让你明白出了什么问题,为什么你应追求改变。
无法摆脱的困境
是什么让项目变糟?何时起我们下班回家时开始盘算:“见鬼,我得离开”?下面是我们程序员不时要面对的一个问题清单,这些问题让我们筋疲力尽。而通常我们又躲不掉,不得不设法去应付。
错误的团队
如果你不幸处在一个错误的团队中,问题则免不了。大家也许都还不错,但是当其中某人因为钱的事情不高兴,或者对琐碎的任务感到厌烦时,他就可能破坏团队的气氛。其他人可能只顾着自己的事业,这使得他们变成了糟糕的团队伙伴。某人会认为自己是在帮助这些人实现他们自己的事业目标。如果一个团队成员的知识太少,也可能出现不友好的情况。如果你从事的工作与你的技能不配,或者没有人能够帮你迈出第一步的话,你也可能陷入麻烦。
团队需要和谐。如果你有幸身处“分享同一个梦想”的团队,一切都很美妙。如果你是由无聊或自负之人组成的团队的一员,你可能会经历一段非常艰难的时光。
荒诞的需求
一些项目需求读起来简直是科幻小说,抽象,一点都不现实。有想象力当然很好,但想象力必须适应团队。如果项目团队中有许多应届毕业生,你不太可能在第一版就创建出基于云的最佳电子表格。
有些客户往往以为软件需求一句话就可以说清楚:“该产品必须像社交网站X,只是有一点儿不同。”“事情不会太难,有公司已经提供了免费版。”“这只是一个留言板罢了。”这些需求最终导致极大的不满。客户从未获得自己满意的产品,开发者也根本没法儿满足客户,而且觉得自己难以胜任工作。
外行的期望
不清晰的需求导致了外行的期望,不仅如此,有时人们似乎把程序员当成了超人。
当你刚接手一个项目时,根本不可能成功调试有着100 000行代码的程序。无论是不是产品问题,程序员都需要时间先读懂代码,然后才可能修复它。
像“这只是一个按钮罢了”或者“老手程序员五分钟就搞定了”这样的话根本无济于事。除此之外,“五分钟的修复”也许正是需要修复的根本原因。
咖啡机下度夜
一些时候,超越身体极限,尽量把活干完是必要的。假设产品中存在一个根本性的软件故障,我们要尽力救援。这往往需要额外加班,工作到半夜甚至更晚。
软件的问题是如此关键,以至程序员往往被期望熬夜处理,直到问题解决。我们中最好的程序员曾被发现在咖啡机下方昏昏睡去,虽然他奋不顾身地想保持清醒,但最终失败了。在一些人的心目中,在咖啡机下睡觉显示了程序员对项目的认真。
虽然这样的生活有时很有趣,但长此以往会导致严重的问题。如果你的这种行为“修复”了事实上是管理不善的问题,那就更糟了。当需求变化时,或者由于公司政治致使项目管理者承诺了一个最后期限时,你就会遭受非常令人沮丧的经历:有家不能归,有床不能睡。
被忽略的非工作生活
程序存在软件缺陷,这很正常,无法完全避免。心理学家发现人们可以很容易地同时思考三件事。但如果数量超过三个,大多数人的思维都会出现问题。然而作为一名程序员,我们必须同时记得更多事情。
通常在程序员的周围有很多干扰,比如:
·咆哮的项目经理;
·没完没了的电话和会议;
·在高压下工作;
·或者是家庭、健康或财务问题。
一个程序员受到的干扰越多,编写出缺陷代码的可能性就越大。让一些分心的事可以保持在最低限度,以免他人受到影响。例如家庭生活,这是我们生命的重要一面,虽然有时它也相当无情。
无论谁在评估项目的预算,都需要安排一些额外时间考虑到程序员的非工作生活。不能仅根据项目成员的工作经验来计算预算额度,需要考虑他们的现状。为了正确地估算,你需要知道有人家里是否有个怀孕的妻子,大家是否都健康,或者是否已从之前疲惫的项目中恢复了元气。
忽视生活就意味着忽视风险或机会。
给一个精力充沛的人布置大量无聊的任务,意味着你错过了一个机会。而给一个家庭出现变故的人布置高度复杂的任务,则会增加风险。
如果程序员意识到自己的生活长期被忽视,这会使他感到沮丧和疲惫。
威胁产生的动力
威胁无疑不是一个好的激励策略,但仍然被广泛使用。“如果你不能熬夜加班,就不配当一名程序员,而应该去做一个园丁。”我的一名同事曾这样说过。
威胁会引起恐惧。除了黑暗外,害怕失去生存的基础也是人类最强烈的恐惧之一。
要是某人遭遇一阵威胁后,不得不在恐惧中工作,那他绝对是“职业倦怠”症的最佳人选。
无端变化的需求
项目经理走入房间,扔下新的需求,然后走人:这就是“直升机式管理”方式常见的场景。如同直升机着陆、扬尘并再次起飞。有些人精于此道。他们的大多数需求未经过深思熟虑,而且在项目实施的过程中毫无预警就改变了需求。
当需求不明确时,就会失去目标,任务永远无法结束。每一次会议都显得荒谬,所有讨论结果都是废话。最后,整个项目都被质疑,自己每天做的事情的意义也会受到怀疑。
贪婪
在现代社会中,如果你不能决定像僧人那样生活,你就需要金钱维持生存。
在某些场合下,公司——嗯,我们还是说公司的管理层吧——他们会竭力从项目中榨取每一分钱,对雇员看都不看一眼。
2012年,富士康中国公司(它是苹果公司的合作伙伴)发生了一系列抗议运动。工人要求改善工作条件。
在西方国家,你可能被迫一直住最廉价的酒店,坐最廉价的交通工具,而且使用最廉价的办公设备,即使你负责的项目非常成功,为公司带来的利润丰厚。
节省本该花在员工身上的钱,从而证明公司的盈利能力是多么强,可能是管理层犯下的最糟糕的错误。我见过很多人因此而离开公司。
其他成见
对于那些让程序员沮丧的事情,我可以写一整本书,在本章我们就已经看了其中一些。
这里有一些更多的成见,你也许听说过。
比如,伟大的程序员
·如果能用Y语言写代码,就能用X语言写代码。
·可以迅速地解决问题,其中大多数能在一分钟内搞定。
·不会写有缺陷的代码。
·不需要编写测试代码。
·喜欢深夜还在为客户编写代码。
·不在计算机旁或办公室里也能调试代码。
·了解关于硬件、最新的IT趋势以及框架等的一切,无所不知。
·不与客户交流就能够理解客户的意思。
·熟悉各种操作系统,从底层到上层,包括每一种移动设备上的系统。
·可以编写运行在每一种设备上的代码,并且无需重新编译,无需设备转换,无需付出额外的努力。
这个成见清单可以说是无穷无尽的。我们无法教育人们停止相信诸如此类的故事。即使是专家也无法做到。相反,我们需要基于日常准则保护自己免受成见的干扰。
“职业倦怠”综合症
在写作本书时,“职业倦怠”(burn out)综合症在德国是经常讨论的话题。从根本上说,它描述了因劳累、疲倦或类似的原因导致的某种类型的崩溃。如果你有过同样的经历,就知道这种疲惫程度是健康人无法想象的。它会导致抑郁症,极端情况下会导致自杀。诊断这种疾病不容易,正因为如此,一些人认为根本不存在“职业倦怠”综合症。
确实存在职业倦怠症吗
有些人说,那些抱怨崩溃的只是些是懒人,他们肯定不是生病。这些人将它与自己很多年前的经历进行比较,惊讶地发现,自己以前也是这样工作,但从未听说过什么职业倦怠症。
另外一些人之所以感到疲惫,确实只是需要休假。在经过一段时间的紧张工作后,这些人将疲劳称作职业倦怠。有时候,他们仅仅是因为太累了,连出去喝啤酒都懒得去。
但有些人我认为确实患了职业倦怠症。如果你是这个群体中的一员,很可能已经没有任何精力或时间来讨论自己的问题,更会去担心如何度过每一天。有一些人终于努力摆脱了这种痛苦煎熬,将那份经历写成书。可以想象,必然是段可怕的经历。
在前面我们看到,对职业倦怠症的诊断是困难的。医务人员怎么能够区分一般的疲惫和职业倦怠症呢?既然后者被认为是一种心理疾病,如何将其同其他疾病区分开?职业倦怠症未必一定会表现出抑郁行为或其他症状,甚至当一个人努力工作时也可能患上上述症状了。事实上,的确很难诊断一个人是否患上了职业倦怠症。如果某种病是由细菌引起的,这可以确诊,但像这样的心理疾病?这就是为什么职业倦怠症不为很多人相信的原因。在日常谈话中误用该术语也许是另一个原因。
我还乐意提到DSM-V,即由美国精神病协会(APA)出版的《精神疾病诊断与统计手册》。它基本上是一个分类系统,用于诊断ADHD或暴饮暴食之类的症状。值得注意的是,职业倦怠症仍然没有定论。换句话说,尚不存在识别职业倦怠症的标准方法。
虽然我不是专家,但你可能想知道我坚信职业倦怠症是一种既存疾病的理由。我之所以持有这种观点,是因为在工作之余我开始研究心理学,并且对心理学的一般工作机制感兴趣。关于这个主题的文献有很多,其中一些属于科学层面的论述,如果希望了解更多的知识,你应该阅读那些书籍。
导致职业倦怠症的基本因素
职业倦怠并不局限于高层管理人员,每个人都可能患上。有一个案例记录,一个牧羊人放牧二十年患上了职业倦怠症。虽然患上的是职业倦怠症,但报刊杂志常称之为“疲劳综合症”。
作为一名软件程序员,存在很多致病因素,其中很多与之前提到的有联系。
马蒂亚斯·布里奇是一位德国科学家,他写了一本关于职业倦怠症的伟大的著作(Burisch,2006)。他在德国家喻户晓,其研究表明,职业倦怠根源于错乱的工作时间、即刻的工作搞定、紧迫的任务期限,还有竞争。程序员对这些都非常熟悉,但实际上,布里奇几乎研究了所有职业群体。
他还提到,有人在令人疲倦的环境中工作,但并没有遭受职业倦怠症的困扰。例如,与在其他地方工作的护士相比,在重症监护病房工作的护士反倒更不容易患上职业倦怠症。为何有此差别?
布里奇推断,职业倦怠是一种结合了多种因素的复杂的综合症。不是每一个紧张的环境都必然会导致职业倦怠。而且每个人应对处境的方式不同。在同一环境下,一个程序员可能遭受职业倦怠症,但另一个程序员却可以应付而不出现任何严重的问题。在这种情况下,第二个程序员可能会认为第一个程序员不够坚强。这是一个错误的结论,因为它可能是多种因素交织而导致的问题。除了所面临的一般问题,第一个程序员也许还承受着别的社会压力。
根据布里奇的研究,以下因素可能会导致职业倦怠症。
·超负荷工作。
·失去控制。
·回报很少或没有回报。
·判断力故障。
·很少有公平或不公平。
·伦理冲突。
·这些在前面已有体现,这里就不再赘述了。
事实
忽视时代变迁,往往是IT管理者在讨论职业倦怠症时的常见反应。有人说:“在我年轻的时候,我也工作这么长时间。”另一些人说:“他们只是懒惰罢了。”在德国,一些IT管理者指出其他国家没有人患这种疾病,因此职业倦怠症一定是虚构的。
在职业倦怠症方面,真能将X国与Z国进行比较吗?德国有一个庞大的医疗保健系统,每个人都能获得足够的食物和水。一个最大的问题不过是气候逐年变糟罢了。在非洲则是另一种情形。那里到处是饥饿,缺乏工作机会,甚至无法保证洁净饮水的供应。要是一个人还在为饮水发愁,可能就不会在意职业倦怠症这样的问题了。
几年前,有一家德国报纸头条报道:“日本已经倦怠了吗?”作者提到,越来越多的日本人感到职业倦怠。我的判断是,具有较高工业化标准的富裕国家有更多的时间和资源来对付这种疾病,包括识别它们。这并不意味在其他国家不存在这种疾病。我坚信德国也有。
德国Focus杂志发行量很大,覆盖受众广泛。该杂志发表了一些有趣的统计数据(Gebert,2010)。1993年,大约30%的伤残的致因是肌肉骨骼疾病。到了2008年,这个因素下降到15%。相反,心理疾病因素则上升到35.6%。这些数字表明,二十多年来,我们的工作性质已经发生了很大的变化。在这篇文章中,一位心理学家解释,我们的工作结构变得远比过去复杂,但并非每个人都能适应这些工作。
二十年前,智能手机等一些数码产品还未出现,现在,这些玩具耗费了我们大量的业余时间。程序员总是被希望熬夜学习新东西,跟上时代要求。我们需要学习不同的操作系统,不同的社交媒体工具,阅读编程书籍。除了这些,一星期至少需要工作四十小时。大脑中的信息将我们淹没,使我们无法得到休息。
报纸还报道过许多连环自杀(Kläsgen,2010; BBC,2012)。在法国电信,2008年和2009年有超过三十起自杀案例被记录,平均每个月至少有一例。我们能够看到这个统计数据的简单原因是,在法国自杀被算作工伤事故,而在德国并非如此,所以德国这方面的数据无人知晓。
DAK的《汉堡卫生报告》提供了更多的数据(DAK,2010)。DAK是一家德国健康保险机构。数据表明,心理疾病是目前休病假的第三大原因。每个病人平均休病假25天左右。约7%的汉堡市民因心理疾病年休约五周病假。
2012年的年度压力报告也不乐观(Lohmann-Haislah,2012)。自2006以来,雇员最大的心理问题包括多任务处理(58%)、过于紧迫的期限(52%)和频繁重复的任务(50%)。超过44%的员工表示自己经历过不间断的干扰。
职业倦怠症的五个阶段
工作与生活要平衡,这不仅仅是说说而已。你需要保持健康,当你是一个团队的领导者时,还要对团队负责。病假会让你损失大量的金钱和时间。
如果有以下状况出现,你就应该小心了!
工作占据了你生活的中心位置;
你将自己与他人隔开;
你变得愤世嫉俗;
你易与他人发生冲突;
你患有抑郁症。
这个列表被称为职业倦怠的五个阶段。要是你听说某位同事突然不踢足球了,或者再也不出门,你应该为他担心了。
自生自灭
我们可以尝试交流想法,但如何确定对方理解我们想要表达的东西?
所谓的“理解”,与当时的语境和生活环境紧密不可分。此外,我们的思维本身也不同。这使我们不可能像交流电子邮件那样交流思想,用编程术语说,没有共同的数据格式。当我说“苹果”时,我脑海中的形象不会和你脑海里的一样。甚至当我自己把它画出来时,它也不会像我最初想像的那样。退一步说,即使我能做到这一点,对同一个图像的感受你我也不会相同。这是因为感受还与情境和你自己的经历有关。
这些都表明,没有人会与你或我相同。我们可以努力表达,但没有人能够精确地明白。这就是我们独自生存的原因。世界是孤单的。
我们将独自死去。你或许有很多朋友,也可能是个富人,但归根结底你最终将独自死去。在这件事上,没有人可以陪你。没有人可以与你交换。
最终,死亡时刻来临,我们离开,但没有人一起。你将独自上路。
生命中唯一不变的就是一直在变。一切都随时间流动,如溪水潺潺流淌。子在川上曰,逝者如斯夫。但这没有理由悲伤。如果理解这一点,我们也就可以理解生命的独立性。我们不能为别人而活。这是我们自己的生命,无法交换,不能分享。
不管发生了什么,那都是你的生命。
一旦明白这个道理,就可以自由地去生活,心无挂碍,拒绝悲伤。要是我们遭受意外,失去了一条胳膊或腿,生活可能会陷入麻烦。但这就是生命,必须面对。即使没有腿,我们仍然可以拥有美好的生命。一切只在于从不同角度看待问题。
当我们得到一份工作却为它受尽苦头时,这也是生活。没有理由去停止,陷入悲伤和绝望中。禅修能够让我们看清事物的真相,明心见性。如此,我们便可以心平气和地,接受生活中发生的一切。
相关链接: