http://timyang.net/programming/mythical-5/ Bruce Eckel(Thinking in Java/C++作者) 在他的 5%的神话 (Mythical 5%) 中提到:5%的程序员开发效率是其他95%程序员的20倍 (5% of programmers are 20x more productive than the other 95%)
按照80-20法则,80%的程序员几乎不看书,不读Blog,不参加技术会议,不持续学习。这些人也可能会进入大公司,他们日复一日的做着重复的 工作。另外20%则在专业方面比较主动,他们喜欢阅读,喜欢学习,喜欢参加技术活动。这20%当中又会有80%的人可能不会特别成功,他们仍然走在通往成功的路上奋斗。剩下20%,也就是总数的5%的开发人员具备20倍的开发效率。
那如何成为这5%中的一员呢:Bruce Eckel 的观点:阅读,分析,总结,实践
这5%的人会习惯经常阅读新技术,并喜欢参与各种有潜在价值的新概念的实践,他们会有非常有选择性的参与会议,大部分时间都花在有效率的事情上,将事情做成。要 想比别人效率高出20%,则需要在各个方面达到平衡,而不单只是能将事情搞定那么简单,因此你要使用最好的工具,最优秀的技术,并尽最大的努力。平衡点并 不是从明显的事物上就可以轻松获得,或者是被人告知的经验,或者是大众化的经验。它需要自己摸索并发现事物背后的规律,需要自己去总结并发现。比如我们通常对各种编程语言优缺点熟记于心,我们通常可以脱口而出比如erlang适合大并发场合等等。但是大部分人不会意识到很多场合语言并不重要。因此如果你要成为那5你必须持之以恒的坚持学习,多学习编程是有好处的,但是仅仅局限于了解编程是不够的,比如类似以下经验:
所以除了精通编程之外,最好多看一些编程方法与协作的书,如并不传授编程技巧的《代码大全》之类的书。
当然也有持不同观点者,如Jeff Atwood(coding horror作者)则认为经常分享自己的技术体会比coding更重要,能写的人才能成为那5%。他曾经横穿北美,从美国西岸San Francisco到加拿大的东岸Montreal去给一个大学的学生讲技术Blog的重要性。他在这篇Is Writing More Important than Programming(ppt, 3mb)演讲中提到:
大部分我景仰的程序员都是通过其blog让我景仰,而不是他的代码
……大部分不写blog程序员的理由有:太忙;写了也没人看;没有合适内容可写;觉得自己不善长表达等。
Jeff Atwood大部分观点我是深表赞同的,可喜的是身边乐于分享的越来越多。比如新浪开发者博客今年2月才开张,现在已经有100多篇高质量文章了。另外我很敬佩的TopLanguage创建者刘未鹏也写过一篇很有名的为什么你应该(从现在开始就)写博客,想必很多朋友都看过。
国内曾翻译过Erlang程序设计的Trustno1则认为这5%的人必须是钻研paper的人, 而只是看看rss,热衷于参加各种技术会议,搞搞各种可替代性很强的技术的人是不够格的,他在某帖子中提到:
很简单的两个标准.
标准一,你看到一个问题的第一感觉”这个事情不学3-4年数学算法光靠捣鼓捣鼓API设计模式肯定搞不定”
案例一,老板让你做一个从视频里识别出人脸的程序.
标准二,但凡性能Critial又没有现成方案的东西.
案例二,老板让你做一个实时的全局照明渲染引擎.
原讨论在这里 http://www.javaeye.com/topic/380651 其中一些观点也是有争议的,不过话题已经被锁定不让讨论了;)
想必看了上面这一系列,你对怎样成为那5%已有自己的见解了。你要的答案或许不在这篇文章里,因为Bruce Eckel提到,大部分成为5%的人的经验是只可意会,不可言传的。
http://mindhacks.cn/2009/02/15/why-you-should-start-blogging-now/
『另外我很敬佩的TopLanguage创建者刘未鹏也写过一篇很有名的为什么你应该(从现在开始就)写博客,想必很多朋友都看过。』
(一)为什么你应该(从现在开始就)写博客
用一句话来说就是,写一个博客有很多好处,却没有任何明显的坏处。(阿灵顿的情况属于例外,而非常态,就像不能拿抽烟活到一百岁的英国老太太的个例来反驳抽烟对健康的极大损伤一样)
让我说得更明确一点:用博客的形式来记录下你有价值的思考,会带来很多好处,却没有任何明显的坏处。Note:碎碎念不算思考、心情琐记不算思考、唠唠叨叨也不算思考、没话找话也不算思考,请以此类推。
下面是我个人认为写一个长期的价值博客的最大的几点好处:
1) 能够交到很多志同道合的朋友。 我自己既写博客,也读别人的博客,在这个时代,对于生活中的绝大多数人来说,拓宽朋友圈子的途径几乎只有一个,通过网络,而如何在网络中寻找到气味相投的 朋友,如何判断别人和自己是否有共同语言?显然,通过天天在SNS上碎碎念的那些日记是难以做到的。我佩服的一些朋友几乎全都是长期用博客记录想法的人,因此,和他们即便不打照面,也是心照不宣。即便素未谋面也能坐下来就聊得热火朝天。
为什么博客在结交志同道合的朋友方面的潜力要远胜于原始的交谈方式?很简单,第一,博客无地域限制,整个互联网上从A到B只有一个点击的距离,而传统的建立朋友圈子的方法则受到地域限制。第二,也是更重要的一点,即如果按照以前结交朋友的方式,需要互相聊天,交流观点,然后才逐渐熟悉起来,这需要一个较长的过程,而且更糟糕的是,当你遇到另一个陌生人,又要把整个过程重复一次,表达你已经对老友表达过的那番想法。可博客却做到了“一次表达,无数次阅读”,当我看到一个写了好几年的博客,看完了之后我仿佛和这个人交谈了很久,用程序员们喜欢听的话来说就是,“博客极大地增强了话语的复用性”。
我曾在CSDN上写了近六年的博客,在一年半前建立了一个Google Groups(TopLanguage),由于我的博客的长期阅读者都是互相有共同语言的,因此这个Group一开始就热火朝天,而高质量的技术讨论则进一步吸引了更多的牛人的参与,雪球滚起来之后,就很难停下来了,将近一年半下来,从这个Group的讨论中我获益良多[1]。而对于非程序员朋友,科学松鼠会则是一个很好的例子。
2) 书写是为了更好的思考。我在《书写是为了更好的思考》里面详细总结了书写的好处,这里就不拷贝粘贴了。有些想法如果不写下来,也就忘掉了,有一个广为流传的《数学牛人们的轶事》(荣 耀属于ukim)里面讲了希尔伯特的一个故事:一次在Hilbert的讨论班上,一个年轻人报告,其中用了一个很漂亮的定理,Hilbert说“这真是一 个妙不可言(wunderbaschon)的定理呀,是谁发现的?”那个年轻人茫然的站了很久,对Hilbert说:“是你.……”。
3) “教”是最好的“学”。如果一件事情你不能讲清楚,十有八九你还没有完全理解。绝大多数人应该都知道在程序员行业面试官经常要求你讲解一个东西给他听,他会说他不懂这个东西(他如果真的不懂的话效果其实是最好的),而你的任务则是说到让他理解为止。
为了让一个不明白的人做到明白,你必须要知道从明白到不明白他究竟需要掌握哪些概念,这就迫使我们对我们大脑中整个的知识体系来个寻根究底,把藏在水面之下的那些东西统统挖出来,把大脑中的那些我们知道、但不知道自己知道的潜在概念或假设(assumptions)都挖出来,把它们从内隐记忆拉扯到外显记忆中。因为只有完全知道、并知道自己知道一切来龙去脉的人,才能真正把一件事情讲得通通透透。
但是,你可能会怀疑,那除了能够讲清楚之外,弄清自己到底知道哪些东西还有其他什么好处吗?如果没有其他好处,那我又何必费这个劲呢?我又不当老师。
TopLanguage上的一位朋友sagasw曾经讲了这样一个小故事:据说在某个著名软件公司里,开发组的桌上会放着一只小熊,大家互相问问题之前,先对着小熊把问题说一遍,看能不能把问题描述的清晰,基本上说的比较有条理以后,答案也就随之而来了。当然,你不一定要对小熊说,你可以在大脑中虚构一个听众,一个不懂行的听众,然后你说给他听。这是可行的,我经常在路上用。不过如果你能坐下来,我建议你还是说给实际的听众听——即写下你的思考,因为书写是更好的思考。
我们的绝大多数知识在绝大多数时候都隐藏在潜意识中,其实我们意识的窗口很小,我们的工作记忆只能容纳寥寥数个条目(记得那个“看你能够记住屏幕上同时闪现的多少个数字”的flash小游戏吗?),我们平时所作的推理过程很大部分都是自动的,发生在潜意识中,而我们只能感知到一些中间结论。不信你回忆一下你在和别人讨论问题的时候有多少次觉得“反正就是这样,我感觉得到它是对的,但是你问我,我也说不清到底怎么回事”,对此你 不觉得很奇怪吗?如果你都不能从逻辑上支持你的结论,你怎么就能确信它是对的呢?仅仅因为你的直觉强烈地告诉你它是对的?那如果旁边有另一个人,他和你持 相反的观念,而他的直觉也强烈地告诉他他是对的。这时候你又怎么想?“他的直觉错了,我的直觉是对的”?难道你这么自信你的直觉是世界上最可靠的?
我自己则是非常珍惜类似这样的机会,即当“我强烈地觉得它是对的,但我却说不出所以然来”,这时候往往是到大脑中翻箱倒柜的时候,弄清来龙去脉的时候,深入反思的时候,纠正一直以来错误的潜在前提假设的时候。另一方面,“我强烈地觉得这个说法有问题,但我却说不清它为什么有问题,到底哪有问题”, 这也是一个极有意义的瞬间,它几乎总是意味着你对一个问题的认识有潜在的偏差,肯定是在你自己都没有觉知到的地方引入了一个潜在的假设、偷换了一个重要的 概念,等等。而这种时候就是深入反思的时候,当你终于潜到问题的底层,触摸到问题的实质,把水面之下的冰山整体看清了的时候你会有一种通体舒泰的感觉。
为什么说以上这些?因为刚才说的是你必须等待这样的反思机会,但如果你选择经常总结自己的知识体系,并说出来给你的读者听,你就会发现你自己创造了这样的机会。如果我们平时不反思,我们觉得很多事情都是当然的,但结果如果要你一开口说给别人听,常常会发现事情就开始变得不那么明显了,你说着说着,就开始莫名其妙地发现自己需要用到“反正”这个词了。
于是,反思的机会就来了。
一旦你把自己潜意识里面的东西从幕后拉出来,你就有了面对并反思它们的可能,而不是任它们在幕后阴险地左右你的思维。很多时候我们的思路出了问题并不是我们不会反思,而是不知道自己的思维中有那些隐含的假设(assumptions),如果你只感觉到答案,却不知道你大脑得到这个答案之前做了哪些推理,你又怎么知道哪一环可能出了问题呢? 另一方面,一旦你弄清了自己到底是怎么想的,离意识到问题就不远了,很简单的道理——如果别人和你争辩的时候总是只摆立场,你就很难和他辩,但如果他把自 己的推理过程原原本本暴露给你,批判起来总是容易得多的。(也正因为这个原因有很多人总是把逻辑藏在背后,不敢暴露出来)
绝大多数时候其实我们都会不假思索地得出一些结论,就像上了发条的自动机, 但其实我们并不知道这些结论到底怎么来的,在思维的背后到底发生了哪些事情,故而当我们发现我们的结论错了的时候,一头雾水,没法着手寻找到底在哪错了。 如果你注意一下很多人的发言(论坛、博客等等),如果你把他们的发言分为“前提”、“假设”、“逻辑”、“结论”这四个部分,你会发现一大堆人只会不停地 下结论,摆立场,却见不到这些结论或离场的前提、假设和个中逻辑,倒也不是他们不愿意写出逻辑,而是因为反思自己的思维过程实在是一件困难非常的事情,我 们的推理过程很大一部分发生在意识的水面之下,只有当有了重要结论的时候这条逻辑链才会浮出来冒一个泡,让我们的意识捕捉到。更何况绝大多数时候我们用的 其实并不是完整严密的逻辑思维,而是思维捷径。
去教一个完全不懂的人,则是一种最最强大和彻底的反思途径—— 因为他没有任何预备的知识,所以要让他弄懂你所知道的,你就必须彻底反思你的知识体系,弄清这座大厦的根基在什么地方,弄清它的骨架在什么地方,一砖一瓦 到底是怎么垒起来的,你不能自己站在11层上,然后假设你的读者站在第10层,指望着只要告诉他第11层有那些内容就让他明白。你的读者站在第一层,你必 须知道你脚下踩着的另外10层到底是怎么构造的。这就迫使你对你所掌握的、或之前认为正确的那些东西作彻彻底底的、深刻的反思,你的受众越是不懂,你需要反思得就越深刻。
4) 讨论是绝佳的反思。另一方面,很多时候我们并不是有机会说给完全不懂的人听,更大的可能性是说给同领域有一定基础的人听,这个时候并不代表就不能促使反思了,实际上,你会发现,如果你公开你的想法,几乎总能看到与你持不同意见的人,然后你通过比较你和他的观念之间的差别,会发现你们在一开始的思路上就存在差异,差异从哪里来的?在进一步讨论中你们就会不断地迫使对方拿出更深层次的理由,这同样也是一种非常有效地促使自己反思的方法,在讨论的过程中双方的理由自然会变得越来越深入,越来越接近问题的本质,一些平时难以注意到的深层面的差异性就会逐渐浮现出来,你也就多了一次难得的机会去审视自己的思维中到底存放了哪些错误的信息。
5) 激励你去持续学习和思考。如果你没有持续学习和思考的习惯,你的博客很快就会没有内容可写,就只能整点碎碎念或者转载,然后你就会失去读者,然后你就会关掉博客,然后一旦关掉博客之后你也就死了写博客的心,然后就少了一条激励你去思考和总结的途径,然后你变得更不高兴总结和思考,然后…
为了打破这个死循环,不要永久停止更新你的博客,就算你两个月,三个月 都不写,只要你每篇都是写自己思考的产物,写有价值的东西,在互联网上,金子的确总是会发光的,因为有无数的信息聚合平台在期待这些有价值的内容,有搜索 引擎为你的内容提供海量的潜在读者,有海量的人肉在手动挖掘和转载那些有价值的东西。我们所能做的最差的一个决策莫过于停止做一件没有任何坏处,却有一大堆好处的事情。
为了让你的博客有价值,你必须不断总结自己学习的结果,你必须不断思考,给出比别人深刻、独到的见解。这看起来有点本末倒置,但很快本和末就会正过来。
6) 学会持之以恒地做一件事情。很多人在生活中容易觉得迷失,不知道想要做什么,是因为没有一件能够持续地做的事情,用俗话来说就是没有主心骨。用积极心理学的话来说就是没有一件能够创造流体验的事情,而书写自己的思想则是一件容易产生流体验的事情,在书写的时候,特别是理性地书写的时候,大脑逐渐进入推理分析模块,一切不愉快的情绪,烦躁感都会逐渐消隐下去。不过前提是你得开始,并且坚持过一开始的困难期,以后的一切便成了习惯成自然。
7) 一个长期的价值博客是一份很好的简历。这里的“简历”并非是狭义上的求职简历,毕竟现在还没有到价值博客的时代,很多人写博客都是到处转载或者干脆碎碎念,正因此面试官未必拿个人博客当成了解一个人的更可靠窗口。这里的“简历”是指一个让别人了解自己的窗口,虽然我们未必做得到像罗永浩、Keso这样的博客,个人的影响力已经足以支撑出一份事业(牛博和5gme),但至少你会因此而结识更多的人,你的博客价值越高,你结识的人就越牛,跟牛人交流又会让你的眼界得到极大的开阔,打开一扇又一扇你原本不知道的门,于是你就变得更牛… 这是一个良性循环。
(二)怎么做到长期写一个价值博客
注意到我并没有说“怎么做到长期坚持写一个价值博客”,因为当思考和总结成为习惯之后,诉诸文字以及借助书写来进一步思考就变成了一件自然而然的事情,就变成了一件“因为你在思考和总结从而必须书写下来”的事情,博客就变成了副产品。
一开始的时候你是因为要写博客而去使劲地思考和总结,指望给出令人眼睛一亮的东西,到了后来,就变成了因为你习惯了思考和总结,因为你意识到书写是更好的思考,你就必须使你的想法成为文字。至此本和末就会各归原位,不再颠倒。
怎样做到长期写一个价值博客?也许有人会给出很多有趣有用的小技巧来提供动机和激励,譬如如何做SEO,如何鼓励读者留言等等,但是这些我都不想说,我只想说最最重要的,那就是:
让你自己成为一个持续学习和思考的人,并只写你真正思考和总结之后的产物,其他一切就会随之而来。
就像那句经常被人传阅的话:只做你最感兴趣的事情,钱会随之而来[2]。
这方面的具体例子大家可以留意一下,随处可见,就不一一举了。我想再重复一下的是,千万不要碎碎念,我能理解每个人都想偶尔发发牢骚的冲动,但是现在已经有了一个很好的窗口:twitter,所以立即停止在你的博客上碎碎念,阅读博客的人希望得到信息而非噪音。如果实在忍不住想碎碎念的话不妨换一下位置,这么来告诉自己:如果你看到别人博客来上这么一段,你会有兴趣看吗?
(三)可能出现的问题以及怎样应付
即便上文给出了N条写博客的理由,但有时候只要一条不写的理由就会让人停止做一件事情。所以我特别加上一节“可能出现的问题以及怎样应付”,《影响力2》[3]第五章雄辩地证明,“Much of Will is Skill”,意志力很大程度上来源于有正确的方法,而非天生。
1) 担心别人认为没有价值。 事实是,你面临过的问题总会有人面临过,你独立思考了,别人没有,你的文章对他们就会有价值。当然,肯定会对某些人没有价值,他们早就知道了,但就算你再 厉害,也总是有人比你厉害的,不能说因为这些原因就不记录你自己的想法了,你自己思考了之后理解得最深刻,就算有别人想过了,总有人没有想到的。况且,思 考成了习惯,你的思考能力也会越来越强,你的文章也会越来越有价值。重复,无论你面临什么困惑,总会有很多人同样面临过,于是你苦苦思索之后的结果,肯定会对很多人有意义。
或者,你想通了之后觉得其实也很简单于是不愿意或者不好意思写了,但要知道,问题在想通了之后总是简单的,问题的困难程度不在于想通了之后还觉得有多难,而在于从你觉得它难到你觉得它简单需要耗费多少思维体力,你耗费的时间越长,说明有越多的人最终还是没有想明白(路越长走到底的人越少)。
最后,虽然我现在看一年前的文章觉得挺不成熟,但是如果没有那些不成熟的思考,也不会有现在更成熟的思考,我几年后来看现在写的东西,还是会觉得不成熟。
2) 担心想法太幼稚或有漏洞等等被别人笑话。人非圣贤。正是因为单个人的想法总是有漏洞,才值得拿出来交流(《书写是更好的思考》,讨论是绝佳的反思),被别人指出问题正是改进的空间,藏着掖着的想法永远不可能变得更成熟。
Much of intelligence is knowledge,有这么一个非常发人深省的经典心理学实验[4]:
将孩子们分成两组,通过给他们不同的阅读材料让一组相信智力是天生的, 不可在后天改变的,另一组则让他们相信智力其实只是知识和技能的代名词,完全是后天习得的。接下来让他们做一组任务,那些被相信智力天生说的孩子,倾向于 回避困难的任务,选择较容易的任务,这里的逻辑想必是这样的:如果做困难的任务,就增大了失败的几率,就在降低了自己在别人和自己心目中的智力的值。为了 保护这个智力的值不被降低,应该避免那些有失败风险的项目。而另一组孩子则对于有挑战性的事情跃跃欲试,并且在失败的时候明显没有前者沮丧,因为失败也是 学得新的东西,不管怎样都是“智力”的提高。
况且,只会批判乃至嘲笑别人的人是最不知道怎么建设的人,忽略他们。
3) 得不到激励。这其实是个最无聊的问题了,只有写碎碎念的博客才会面对“激励”的问题。如果写自己的总结,写自己独立的思考,那么书写下来、理解通透,本身就是一个极大的激励。就算放在自己的私密笔记本里面也一样有成就感。况且,如果你真做到了书写价值博客,那么绝对不用担心你的观点得不到传播,也许一开始会耗时长一点,但是这在任何事情上都是必要的初始阶段,Gmail小组的核心人物、FriendFeed创始人Paul Buchheit,和编程界名博Coding Horror的博主Jeff Atwood都曾经感叹过:Overnight success takes a long time ((1),(2)),不过对于价值博客来说,现在网络上的聚合类服务这么多,机器的、人肉的、半人肉的都有,情况又要好得多了,而且我相信情况还会越来越好。
4) 写不出来。 这个问题也比较无聊,思考本不是一件急于求成的事情。长期订阅我的博客的朋友知道我一般发文频率在一个月三五篇,实际上有不少次我个把月也不发布文章,原 因很简单,要么是有手头的事情要处理思考的时间被压缩了,要么是遇到比较大或者比较困难的问题需要长时间的思考和积淀,没有关系,如果没有想清楚就再想 想,爱思考的人和不爱思考的人有一个本质的区别,前者在生活中总是挂着几个问题在大脑中,它们时常都会冒出来骚扰你一下,让你琢磨琢磨,不爱思考的则是没 事不主动想问题,遇到问题还要先想想是否能找捷径(找人帮忙)解决。
无论如何,不用急于求成,在一个主题上深入下去思考,总能挖到别人挖不 到的角落。你能让一个问题在大脑中停留的时间越长,就越是能够发现新的东西,一般来说,我认为有价值的问题我会让他在意识或潜意识中待短则一个星期,长则 一个月(视问题大小而定),利用走路吃饭的时间琢磨(我发现很多我佩服的人也都有这个习惯),有时即便已经想通了写下来了发出去了,大脑仍然还是会在回味问题,还没有把它撤出潜意识,然后看到某篇文章或某本书的时候忽然又有所新的感悟。
能够把问题长时间停靠在潜意识中是一种技能,能够带来很大的好处,停留得越长你越琢磨得透彻,比别人看到的就越多。我们必须要带着问题的眼镜看待事物才能发现新的视角,否则就会出现视而不见效应,别的不说,广为人知的例子是阿基米德的“尤里卡!”,如果不是长时间琢磨着一个问题,一直把它放在思维中,是不会从洗澡领悟到“排水测体积”的,否则他洗了那么多年澡怎么不早发现呢?[5]
所以,如果你习惯了思考问题,就总会有东西写,先有思考,然后有总结,然后在总结中进一步思考。
当然你也可以试试把不成熟的想法写下来,试图整理成条理清晰的文字,然 后看看能否在整理的过程中走得更远。这往往是可行的。比如这篇文章在我的简记里面原本其实只有三行字(包含大约十来个备忘关键词),而最初在我的大脑里面 其实只有一个走路时冒出来的问题——为什么要写博客?
–
[1] 你可以看一下我收藏的一些精彩主题。
[2] 尽管我并不完全同意这句话本身,但它这种解决问题链上更基本环节的问题的精神是我赞同的。
[3] 《影响力2》这个名字起得很聪明,其实它并不是《影响力》的作者写的。
[4] 我忘了这则实验的出处了,但实验的精神是记忆犹新的,哪位同学记得原始出处的麻烦提醒我一下。
[5] 对于阿基米德这个故事的真实性是有争议的,毕竟几千年久远的事情谁弄得清呢。但是故事的道理是很本质的,我们平时也经常有类似的体验,加上阿基米德的“尤里卡”实在太出名了,所以我相信用用无妨。
文章转载自:罗索工作室 [http://www.rosoo.net]