注:此文为原创,转载请注明出处
在pongba的google group上看到这个经久不衰的讨论话题,便有了写作的冲动。
自己不算是那种特别有恒心和毅力的人。但正 因为如此,才能不断地总结出一些适合自己的方法来让自己变得更有更坚持和更有耐心。2008年年底的最后几天,自己毅然放下自喻为生命中重要组成部分的电 子游戏,把之前玩得热火朝天的xbox360封存于盒子之中,一停就是两个月,坚持复习算法。对自己来说,已经是一个小小的成就。
方法不是通用的,但至少,希望看到这篇文章的人,能通过我对自己的一些总结中得到一些有用的东西,这篇文章的价值就已经被体现了。如果您还能对文中观点提出建议和批评的话,那更是锦上添花,欢迎之至。闲话还是少说,现在进入正题。
先说两个基本条件。
第 一点是我们得承认:人是人,不是神,不可能对所有事情都可以有毅力和恒心。首先,这事情得让你感兴趣,然后如果这事情能对自己有帮助,别人(例如朋友,亲 人)也认同,那就更好。但归根到底,你自己得很希望做成这件事情,并愿意为此付出代价。以我自己的例子来说,算法为什么现阶段比电子游戏更加重要,是因为 良好的算法基础是一个优秀的软件工程师的基本素质,也是进入微软和Google工作的一道不可被忽略的屏障,而我非常希望成为一个优秀的软件工程师,并进 入微软或Google工作。就这么简单。说到底,毅力和恒心体现出来的就是你的精神和时间,是你想得到某一样东西而付出的代价。正如一个正常人不会先掏钱 再决定买什么一样,我们必须先找到现阶段什么是我们感兴趣并愿意付出时间,精力,耐心的事情。
另外一个基本条件是你得在主观上有时间做这 件事情。这世界上有太多的不公平,但有一点是公平的,就是每个人一天只有24个小时,不管你是爱因斯坦还是小混混。当你想干的事情的对你来说足够重要了以 后,你在主观上才有时间去做这件事情,而不是拿工作很忙,累了该休息,无聊了该看看电影之类的事情当借口。
我想,大部分能把文章看到这里的朋友们,以上两点都不成问题。也就是说,战略方向是对了,那么接下来我们说说执行层面上的战术问题。
在上面两个基本条件都满足的情况下,不能坚持的主要原因,在我看来有两个:一是诱惑太多,二是越做越累,最后中途而废。
我 们先说说诱惑。这里说的不是那些看电影,玩耍之类的“低级”诱惑。当你把要做的事情想得足够重要时(基本条件2),低级诱惑一般来说是容易对付的(低级诱 惑也有变得难以对付的时候,后面会详细说)。这里说的是一些似是而非的“高级”诱惑。拿我自己当例子,现阶段主攻的是算法,但学习算法的最终目的是成为优 秀的软件工程师。但一个优秀软件工程师的优点不只是牢固的算法基础,你说操作系统原理不重要么?多线程多进程多核编程不重要么?设计模式等OO设计原理不 重要么?极限编程,测试驱动开发,重构等软件设计方法学不重要么?数据库相关知识不重要么?计算机组成原理不重要么?时刻掌握业界动态不重要么?认识网上 网下志同道合的牛人不重要么?了解软件产业运行规则,生态链不重要么?项目管理不重要么?这些都非常重要,可是别忘了,我们的一天,只有24个小时。
这就是为什么那么多的成功者在他们的访谈当中都不约而同地提到“专注”很重要的原因。
直 到最近这一两年,我才真正弄懂了“专注”这两个字的含义和价值。在这以前,我一直把自己往“通才”的方向上发展,昨天学习了一点算法,今天弄两下子 Java,明天又学学C#,后天看看设计模式,大后天又看看管理...到最后,身边的朋友去了微软,去了Google,去了Yahoo,去了华尔街,去了 德勤,而自己,至少在外人眼里,还在原地踏步。一开始我是非常的不解:自己这些年也没有少努力,为什么人家一步一步往前走,自己却只有看的份儿?有一天我 终于想明白了,让朋友们成功的,是专注,他们的毅力和恒心都放在了那么一两样东西上,成为了这方面的专家。有的朋友不知道什么是C#或Java,但算法玩 的非常的好,代表学校参加ACM获奖无数,他们进了微软和Google;有的朋友不知道极限编程,重构,设计模式是什么东东,但数据库玩的非常的好,他们 进了Yahoo和Oracle;有的朋友号称对编程兴趣一点兴趣都没有,但数学非常的好,进了华尔街的基金公司和投行。在别人在一个地方打出了一口“井 ”,喝上甘甜的“泉水”时。我这个号称什么都知道一点的“通才”,看着背后自己挖出来大大小小的坑,可悲的发现,自己不但没有喝上“水”,而且那些“坑 ”,由于知识的过时和记忆的遗忘,也一一慢慢地消失掉了。于是今天,我不得不又重新踏上了“挖井”的旅程。
好像扯得有点远,但这里想强调 的是,诱惑是毅力和恒心的大敌。接下来说说我是怎么应付这些诱惑的。既然现阶段属于诱惑范畴的东西很多其实是有用的,我们不妨把他们排一下序,找出一到两 个当作自己完成现阶段目标以后的下一阶段目标。当被"诱惑"得有点把持不住时,跟自己说:“别急,下一个就轮到它”。过了一段时间以后,你会发觉生活开始 变得“简单”,在每天可以自由支配的一段时间里,以往你也许觉得举棋不定,什么都想做,但现在,只剩下计划中的那一件事情,其他事情,都排在了“以后”, 都成为了下一轮的“候选”。这有点像高三准备高考那时的感觉,早上上课是在准备高考,晚修是在准备高考,吃饭睡觉以外的时间,除了准备高考还是准备高考。
当 我们对一件事做到了专注以后,在前进的旅途中难免觉得枯燥和乏味。三分钟热度过后,前进的速度开始慢下来,注意力开始变得不那么集中。这时候原来的“低级 ”诱惑开始作用:有朋友说那套什么什么电影挺感人的,要不今晚先看看;今天上班挺累的,今晚就算了吧,明儿继续看书也行;唷,PS3上 的<Killzone 2>终于出来了,Gamespot的评分还不错嘛,要不买来玩玩?也有一段时间没有玩游戏了,可以轻松一下的;<街霸4>,<生 化危机5>这两个大作也快出来了,是不是风尘的xbox应该拿出来见见阳光;华硕新的tablet上网本马上要出来了,关注一下测评吧.....不 瞒你,这些声音每天都在我的耳边缠绕,尤其是在累了的时候。
这时候,我的秘诀是:只做加法,不做减法。
累了我宁愿停下 来,什么都不干,这最多就等于停止做加法运算,等休息好了便可以继续上路。可是,一旦开始了玩游戏或干其他会上瘾的事情,便等于在做减法:游戏开始玩了肯 定想通关的,通关了以后意犹未尽怎么办?玩下一个游戏吧,想想该停止了,但感觉又特难受,看着算法的时候脑子里不自觉又涌现出精彩的通关画面,激动人心的 游戏时刻....与其到时候又花大的力气调整心态,然后悔恨当初,还不如让自己面对诱惑时“懒”一点:我累了我就耗着,就算不作“加法”我怎么也不作“减 法”。
其实在累的时候适当做一些调节也是很有帮助的,问题是自己得区分这是不是在做减法。我累的时候,特别喜欢看看自己的书架,要么找本 名人传记读上一段,或者读读其他书里面的某一个小节,例如介绍游戏AI的一些著作。看的时候就抱着“看看这是怎么一回事”就好的放松心态。或者干脆放飞自 己的思想:例如总结一下这一段时间以来的得失,例如琢磨一下人生道理等等。
无论使用什么技巧,该硬撑的时候,还是该硬撑下来的。自己试过 有一段时间,看一阵子就感觉“累”了,尽管按照“不做减法”的原则来休息,但休息完看一阵子,很快又“累”了。这时候就得靠自己的意志了,没有什么技巧可 言。又拿自己当例子。我是个长跑特别差的人,开始跑不到两分钟,就想停下来了;停下来一阵子后再跑,没两分钟又停下来了,这样跑自己都觉得特没劲儿。于是 有一天,我跑的时候,想停的时候我就挺住,跟自己说“我就不停下来,看你能怎么样”,然后慢慢觉得难受的感觉没有那么强烈了,又过了一段时间,又开始难受 了,还是跟自己说“无论如何是不停下来的了,你还是想点别的东西吧”,然后难受的感觉又过去了,就这样凭意志坚持着一直跑,跑到自己的目标距离为止。当我 们专注做事的时候也一样,跟自己说,没有那么容易就累的,不断挑战自己的极限,你会发现自己想像中的“极限”往往不堪一击。
另外一个坚持 不懈的好方法,就是制定适当的计划。我觉得把长期目标划分为具体的短期目标的方法特别有用。短期目标是你在一段时间内努力的主题,只要可以,都把时间往实 现短期目标身上砸。继续拿自己当例子,我的目标是成为优秀的软件工程师(其实这只是一个中期目标),那么这一段时间内(例如3个月)的短期目标是把算法学 好总结好,那么下班回来晚上只要没有别的事情,我都会把时间花在看算法相关的东西上,例如看第二遍《Algorithms in Java》。但主题归主题,并不是生活的全部,例如周末我还是出去和朋友聚会,上班的时候还是会把工作做好,有时间会出去踢踢球,跑跑步,看看牛人们的 blog等等,但算法就是我这段时间的主题,我空余时间的大头都花在了这上面去了。在某一时刻,短期目标达到了,不要吝啬,狠狠地夸自己一把吧,反正也没 有人听到。然后,回顾一下看有什么地方能做的更好,休息一下,便朝下一个目标奔去吧。你会发现把长跑变成若干的短跑,远比一开始就朝看不清摸不着的长期目 标奔去来的更容易。
后记:
很久很久,也许从来没有,把自己的感悟写成那么长的文章。有时候不禁会想,自己又不是什么成功 人士,甚至连大家身边“牛人”级别的角色都不是,凭什么就把自己所思所想拿出来丢人现眼?但换一个角度想想,在金字塔顶端的人说的感悟,我们未必有能力去 深刻地体会,和我一样在“道”上苦苦摸索的人,一定是占绝大多数。也许我的经验,真正和自己生活最贴切的经验,才是大家真正需要的经验。也许根本没有多少 朋友有耐心把这篇文章看完,也许根本没有多少朋友有时间在读完这篇文章以后还留下只言片语作思维的碰撞。但是但是,再换一个角度来想,能把自己的思想总结 出来那么多的文字,对自己来说已经是非常了不起的事情了,又何必在乎它的点击率是多少呢。