解决方法

要确保你对软件工艺的动力能够适应环境,并度过“漫漫长路”的考验和折磨。

在几天、几周或几个月中,你会热爱自己的工作。你会笑出声,崇拜自己真正通过开发软件而赚到了钱。你所编写的软件会毫不费力地从你的大脑中流淌到你的指尖上,功能和设计看起来都很美。这些都是好日子,非凡的日子。换言之,它们不是你的平常日。

……有一类软件可以赚钱,有一类软件写起来有趣,这两类之间却没有太多的重叠……如果想挣钱,往往就被迫去解决那些非常难处理、没有人能轻松解决的问题。

——Paul Graham,《Hackers&Painters》(黑客和画家)

Paul Graham说得恰如其分,一般的编程工作会使你直面那些沉闷乏味、定义模糊、而且复杂得让人觉得多余的问题。这些都是乱七八糟难以处理的问题。此外,你还会面对官僚作风和难对付的人,并接受不规范的领导。你会在几天、几周或几个月的时间里怀疑自己对开发的投入。当遇到这样的问题,让自己编程的动力向着行走“漫漫长路”的目标看齐就显得至关重要。下面的几个例子能说明这点:

·你厌恶自己的编程工作,你的主要动力来源于金钱。你发现自己更专注于攀爬企业的阶梯,而不是磨炼自己的技艺。但是你也有一部分动力来自于技术专家的名声,这使得你能够忍受足够长的时间来等待工作局面的改善。

·你的主要动力来自于享受编程的乐趣,但已经有好几个月你感受不到对编程的钟爱了。你在严肃地考虑放弃这一职业。幸运的是,你也有一部分动力来自于金钱,你觉得从收入上讲,编程工作是你目前最好的选择。你为了金钱一直坚持,最终你对编程的钟爱又回来了。

·你致力于开源项目的开发,主要动力来自于建立名声的愿望。当你的项目为遍及全世界的用户提供了有用价值,你的黑客地位却不再前进了,你开始考虑放弃自己的工作。然而,对免费软件重要性的坚定信念使你继续前行。最终你的项目遍地开花,自己的名声也上去了。

有些程序员一不小心就掉进了自身动机的陷阱里。在《More Secrets of Consulting》(咨询的奥秘——咨询师的百宝箱)一书中,Dorset House和Jerry Weinberg将这种现象描述为“金锁”:“我想学一些新东西,但已知的东西能让我获得很好的回报。”“金锁”风险显示了让自己的动力向“漫漫长路”目标看齐的重要性,你需要有雄心有抱负才能达到对技艺的精通。金锁的出现是不可避免的,对技艺精通的向往会促使你提防它们。作为一名技师,随着不断取得进步,你将面对艰难的抉择:决定你是否能继续自由地行走在“漫漫长路”上,或是否会发现自己已掉进金锁的陷阱里。有两个例子:

Obie Fernandez是一名杰出的Java程序员,他的名声就建立在他的Java技能上。Obie在2005年面临一个决定:继续提升自己Java专家的身份,还是基于一种不熟悉的语言(Ruby)来学习一种有希望的新Web框架(Rails)。Obie选择了学习新语言,以此来扩充自己的工具集。这就是技师的标志。他把自己Java名气的安全性放在一边,成为了一名Ruby新手,避开了金锁。有意思的是,相比之前的Java专家地位,这一决定使Obie登上了更高的高度,最终使它创建了Web应用开发公司Hashrocket。

有好几次,Marten Gustafson发现自己正走在项目死亡行军(project death march)的半路上,因为他对技艺的热情使他把自己的全部时间和精力都投入到项目中了。出于个人英雄式的扭转乾坤的良好愿望而将自己扔进这种无底洞的年轻人,Marten不是第一个,也不会是最后一个。当你行走在通往技艺精通的“漫漫长路”上,在软件技艺上“培养激情”,并使之与生活的其他方面保持平衡是非常必要的。有时天平会倾向一边或另一边,这是很自然的。但是,在整条“漫漫长路”上,你都应该对这种平衡动作保持清醒的意识。

Dave的低痛阈(low pain threshold)

在这一模式的演化过程中,David Wood(从我在ThoughtWorks的日子开始一直到现在的“同道中人”之一)向我分享了一些传统智慧:“做你喜爱的事,钱自然会来。”这一建议甚合我意,因为当我不能做自己喜爱的事情时,我就完全是个懦夫。另一方面,当我做自己喜爱的事情时,我就会发现自己有不可阻挡的创造性和活力投入到工作中,最终为我带来更多的收入。虽然许多程序员可能在短期内找到收入更高的工作,但做自己喜爱的事所带来的收入从长期来看也将是非常丰厚的回报。要阅读关于这一传统智慧的更多内容,可以去翻翻Steve Jobs(不是别人,就是那个退学生和Apple的共同创办人之一)在Stanford大学2005级学生开学典礼上的演讲。[1]

——Dave Hoover

[1]http://news-service.stanford.edu/news/2005/june15/jobs-061505.html.