读《程序员的思维训练》

《程序员的思维修炼:开发认知潜能的九堂课》 从程序员的角度去认清自己,思考问题,了解我们的大脑,进而发掘潜能。

作者是亨特(Andy Hunt),他曾经写过《程序员修炼之道——从小工到专家》,《高效程序员的45个习惯:敏捷开发修炼之道》,《Programming Ruby》,《单元测试之道C#版——使用NUnit 》、《单元测试之道Java版——使用JUnit》、《版本控制之道——使用CVS 》等等。

没错,他是敏捷宣言首倡者之一,敏捷开发权威人士,Pragmatic Programmers公司创始人。

以下是读书过程中摘录的部分笔记,以及一点点自己的思考。(以下只是书中部分观点,详情请阅读原版书籍)


![ThinkingAndLearning](http://img4.douban.com/lpic/s4548399.jpg)
> **1.一个开发人员声称拥有十年的经验,但实际上只是一年的经验重复了九次,那么这就不算是经验。**

我工作快8年了,参与过的产品从WPS,毒霸,月影传说OL,创业做的端游和手游,到现在的微信,做过的工作有测试开发,3D端游客户端,表现逻辑、游戏逻辑开发,Cocos2d-X手游开发,Unity手游服务端开发等等,倒是没有多少重复,但是跨界太多也未必是好事,我应该好好审视自己,如何让自己在某一领域钻的更深。


> **2.一个众所周知的极限编程方法的经验之谈是“测试一切可能出错的东西”。**

嗯,怀疑一切。很多人包括我自己,经常都会陷入这样的思维逻辑:“他们都这样做了,应该就没问题了啊。”,如果经常做这样的假定,很多问题都会被你忽略过去。


> **3.敏捷开发就是在一个高度协作的环境中,不断地使用反馈进行自我调整和完善。**

这个观点并不新奇,道理大家都懂,是否能做到做好就不一定了。这点其实和雷军说的小步快跑,不断试错道理是一样的。


> **4.专家根据直觉工作,而不需要理由。他们可能会对如何得到结论完全说不清楚。他们的确不知道,只是“觉得是正确的”。**

这点我曾深有感触。游戏创业前期,我们曾经有一个专家级制作人兼主策划(个人认为),他提出的一些想法和玩法遭到主要合伙人的质疑,在别人缜密的推理辩证和追问下,他没法解释清楚其中的逻辑,然后,然后他就被请走了。。。后来我和某君交流此事,我感觉这位制作人也许就是凭着多年体验此类游戏的直觉在做判断,当面临一个思维缜密却不怎么玩此类游戏的人的质疑时,未必能PK的过。


> **5.专家知道哪些是无关紧要的细节,哪些是非常重要的细节。也许不是有意识的,但是专家知道应该关注哪些细节,可以放心地忽略哪些细节。专家非常擅长做有针对性的特征匹配。**

这点感受颇深,却是不容易做到的。在之前游戏创业过程中,我们曾陷入这样的思维:“我们要做xxx功能,要加xxx玩法,打击感要强,人物模型要精细,场景物件要丰富,远景要有气势,要。。要。。”,我们什么都想要,结果就是我们怎么也完不成。微信第一个版本很简陋就上线了,朋友圈第一个版本连评论功能都没有,朋友圈不做滤镜功能,好友不做分组(现在有了),不做iphone用户在线标签…… 张小龙分享的创业观里,很多都是这个逻辑,我们不做什么。


> **6.达尔文说过:“无知往往来自于自信而不是知识。”反过来似乎也是对的。一旦你真的成为了一名专家,你会痛苦地意识到你知道的是多么少。**

我常常都感觉自己很水……


> **7.敏捷开发是非常有效的工具,但它不适用于一个完全由新手和高级新手组成的团队。**

说的太好了。不过,敏捷开发这个东西,已经被沦为了一个口号。即使有非常优秀的团队,也未必能把敏捷开发做好。


> **8.根据不同的研究成果,开发人员之间存在20∶1~40∶1的生产力差异**

生产力并不是指代码量,而是解决问题的能力,以及应付未来变化的能力。如果所有的老板都懂这个道理就好了,让优秀的程序员工资也能是其他人的几十倍:)


> **9.新手使用规则,专家使用直觉。大多数人都是高级新手。元认知(metacognitive)能力,或者自我认知的能力,往往在较高的技能层次中才会具有。**

很多人都常常高估了自己。看见别人成功了就会说,这有什么呀,还不是他命好,他怎么怎么的。自己失败了总会给自己找各种理由,一点小成就就高估了自己的作用。我们没法要求别人怎样,但我自己力求做到失败了多找找自己的原因,并且时刻保持一颗谦卑虚心学习的心。


> **10.正确自我评估的唯一办法就是提高个人技能层次,这反过来又会提高元认知能力。专家会更多地自我怀疑。**

一山更比一山高啊,只有爬上了这座山,你才能看到后面的巨峰啊。


> **11.专家并不总是最好的老师。教学是一门技能,你在某个领域是专家,这并不能保证你可以把它教给别人。你可能发现处在胜任水平的人可能更合适教一名新手。**

如果你已经是专家了,也要好好教教偶们嘛~~~


> **12.一旦你成了某个领域的专家,在别的领域成为专家就会变得更容易。至少你已经有了现成的获取知识的技能和模型构建的能力。**

先努力成为某一领域的专家再说。。。


> **13.保持实践以维持专家水平。**

专家的世界我不懂,反正我每天除了实践,也,只能实践。。。


> **14.捕获所有的想法以从中获益更多。准备好做记录的工具,并随身携带……**

作者提倡随时携带笔和纸记录,但是对我来说太困难了,字写的太丑,很多汉字还写不出。所以,我平时是用手机的为知笔记,随时记录一些想法。


> **15.“设计并不是创造美,美来自于选择、共鸣、同化和爱。”**

设计是没有绝对正确的,搞民主投票是错误的。作为主美或者主设计师,你做了一些选择,表达了你的想法,不能让所有人喜欢,但是获得了一些人的共鸣,就是好的设计。


> **16.晨写是早晨要做的第一件事——在喝咖啡之前、在收听交通广播之前、在洗澡之前、在送孩子上学之前、在遛狗之前。**

这个习惯不好实施啊,每天起早贪黑,哪有时间喝咖啡听广播。。。


> **17.离开键盘去解决难题。**

当一个问题绞尽脑汁都解决不了的时候,尝试把它完全忘掉,然后出去走走,走的时候不要再去想这件事,也许你放松心情做别的事情的时候,灵感突然就会到来。


> **18.使用武术来提高注意力**

小时候没开始练,现在也晚了。。。不过我一个前同事武术很厉害,以前晚上的时候看见过他打拳,还会耍棍子。膜拜~


> **19.百分之七十五的人偏于外向型,剩下百分之二十五的人则希望单独呆着。**

我就是那个希望单独呆着的二十五。。。


> **20.有很多办法来制定出一个解决方案并达成妥协。唯一一个不会起作用的方式是试图改变别人的性格以适合自己。**

不要去尝试改变别人的性格和习惯,要学会观察和了解别人,从而找到好的解决方案


> **21.需要平均20分钟返回到原来的工作状态。**

进入工作状态的时候,把QQ之类的关了吧,手机开着总会弹出来就把Q群屏蔽了,设置接收但不提醒。因为不断被打断的话,效率非常的低。


> **22.试图把注意力同时放在几件事情上,意味着你在每件事情上都会处理得很差**

专注,即使同时做两件事,就像单CPU两个线程,每次都要切换上下文,最后导致两件事情效率都不高。


> **23.英国的一项有争议的研究:如果你持续中断正在进行的任务,去检查电子邮件或者回复即时消息,你的有效智商会下降10分。**

这果然是“有争议”的研究,也许是对的吧。。。智商减了10,还够用吗?。。。


> **24.我最喜欢的便携式写作工具之一,就是我的夏普Zaurus。在它的生命即将走到尽头时,我去掉了它里面所有的东西,只剩vi编辑器。我卸掉了无线网卡,仅使用CF存储卡同步。此时的设备使我很少分心**

自动用了Kindle,我也能专心的看书了:)


> **25.在Mac上可以使用Think!屏蔽焦点以外的所有程序,或者是DeskTopple,它可以隐藏你的桌面图标,替换你的墙纸,并定时自动隐藏应用程序的窗口。你可以使用QuickSilver工具来设置一些基于按键的快捷命令。**

Mac我还买不起,Windows上的Launchy、TotalCommand、Vim等等还是必不可少的。


> **26.反反复复的“你有封信”的提示音也是如此。如果可以的话,把它们全部关闭。加大检查邮件的间隔。不要每分钟都检查邮件。**

工作用的台式机一般是不会有声音的啦。。。每天选择几个固定的时间查看邮件,也许效率会高一些。


书中还有大段的篇幅介绍了左脑与右脑的区别,如何运用左脑和右脑等,个人认为理论居多,以后有感觉了回头再看看吧。

欢迎关注我的微信公众号:hacker-thinking,谢谢支持!


hacker-thinking

posted @ 2015-05-17 09:30  CoderZh  阅读(7975)  评论(1编辑  收藏  举报