我刚刚读完由卡尔·纽坡特撰写的新书《深度工作》(Deep Work)。在这本书中,卡尔·纽坡特认为有两种类型的工作:深度工作(deep work)和浅层工作(shallow work)。浅层工作具有打扰性的特点。如检查电子邮件、使用 Twitter 以及频繁开会等。深度工作的特点则是无打扰长时间的高度精力集中。读完这本书后,我开始明白了为什么会有这么多人挣扎在编程学习上 - 实际上,他们是挣扎在深度工作上。
颇具讽刺意味的是,恰好是这一点让很多人错误地以为他们喜欢编程。计算机的一般使用情景(点击、切换、刷新、打字、发送、砰砰砰)与计算机编程的现实情景(凝视、凝视、思考、挠头、编码、编译、失败、重复)完全不是一回事。很多人把编程误判为一类浅层工作,致使他们最终陷入了绝境。真正编程所要求的思维和行为模式与基于计算机的日常工作形态(浏览、发送邮件以及聊天)存在着巨大的差异,然而,他们却在期待以一种急于求成的浮躁心态来处理问题。编程需要耐心、置自己于思维极限的能力以及逐步向前推进。这些技能都可以习得,但是与学生们希望的学习方式或者他们已经习惯的行事风格,有着本质的不同。正是这个不同导致了转变思维和行为模式异常艰难。每个人都可以学会编程,但是企图凭借解决这个错误的问题,反而使学习编程变得困难重重。
我和很多新程序员打过交道。在大学的时候,有好几个学期我一直在教授一门编程导论的辅助课程。离开大学之后,我还在一家名叫 Mobile Makers 的技术培训机构担任过指导老师一职。我见过一些人学习编程就像他们早就知道应该如何编程一样,但是我也观察到另外一些人似乎撞到了一堵不可逾越的高墙上,而这堵高墙就是深度工作。这些人以为,他们正努力与各种编程概念纠缠不休,其实,他们是在和深度思考以及集中精力奋力争斗。当我自己在编程中遭遇麻烦时,大多数情况下,都是由于我无法将自己切换到深度工作所要求的思维状态上。
新近加入编程学习队伍的一些人经常问我,『我的数学功底不够好,我对此非常担心。』我想对他们说,不用担心数学。你真正应该担心的,是你是否具备一种慢慢、安静以及耐心工作的能力。只要你能做到这一点,其它的东西就会不请自来。
作者:Benedict Fritz,程序员 & 游戏开发者,生活在芝加哥。
原文:Learning Programming Isn't That Hard, Deep Work Is Hard
感谢:Qingniu 帮助审阅并完成校对。