2007年8月,硅谷创业教父、Y Combinator创始人保罗·格雷厄姆(Paul Graham)在一篇名为《把程序装进大脑》的短文中,提出了一个对程序员而言近乎“心流”的理想状态:一个全身心投入的程序员,能够像数学家思考一个难题一样,把整个程序完全装入自己的脑海。数学家不会像小学生一样在纸上一步步演算,他们更多是在头脑中完成推理,试图透彻理解一个问题空间,直到可以像漫步在童年老宅的记忆中一样,自如地穿梭于各个角落。在编程的至高境界,情况完全相同——你把整个程序握在脑海里,可以随心所欲地操纵它。

格雷厄姆强调,这种状态在项目初期尤其宝贵,因为此时最重要的不是解决问题,而是改变你正在解决的问题。代码不是功能的堆砌,而是你对问题本身的理解的映射。只有当你把代码装进大脑,你才算真正理解了问题。

打开网易新闻 查看精彩图片

然而,把一整个程序塞进脑子里并不容易。如果你离开一个项目几个月,重新捡起来时,可能需要几天才能真正重新理解它。即便每天主动工作,光是“加载”程序到脑中就可能要花半小时——这还是最好的情况。更戏剧性一点说,在典型办公室环境里工作的普通程序员从未进入过这种模式,换句话说,他们从未真正理解过手头要解决的问题。

即使是最出色的程序员,也不是每时每刻都能将全部程序装载到大脑里。但确实有些方法有助于进入这种状态。首先要避免被打断。分心对很多工作都有害,对编程尤其致命,因为程序员总是在自己能处理的细节极限边缘运行。打断的危害不取决于时长,而取决于它对大脑搅乱的程度。一个程序员可以起身走去买个三明治,而不会丢掉脑中的代码;可一次错误的打断,能在30秒内清空你的大脑。

更奇怪的是,计划好的打断可能比偶发的更糟。你知道一小时后有个会议,索性连一件困难的工作都不会开始做。其次是要长时间连续工作。既然每次启动都有固定的认知成本,少数几次长时段工作比很多短时段更有效率。当然,疲劳是一个自然上限,每个人的耐力不同。格雷厄姆听说过有人连续编程36小时,他自己最多扛过18小时,且十几小时一段的效果最好。

长时间连续工作并非极限越长越好。休息也有好处:有时当你休息后回到问题前,会发现潜意识已经为你备好了答案。最后,使用简洁的语言也很关键——更强大的编程语言会让程序变得更短。当代码量压缩后,整个程序就更容易装进一个人的大脑。