如何修练程序员的思维?

《程序员的思维修炼》这本书讲的内容比较多, 从能力模型开讲, 然后是理性思维和感性思维的关系. 算是交叉学科(软件开发与大脑思维)的总结. 

然后论证了一些敏捷开发的做法的合理性, 即为什么这么做, 因为这么做是可以更合理的利用人类大脑的思维.
其中最重要的部分是如何学习, 更准确的说是有效的学习.
我觉的其中比较重要的是:
1.积极实践的四个条件

需要一个明确定义的目标

目标需要有适当的难度(有挑战并可行)

目标可以提供大量的反馈, 以便能采取下一步行动.

允许犯错并纠正错误的机会.

一旦成为某个领域的专家, 在别的领域成为专家会变得相对容易.
没有实践就没有技能.

规则无法告诉你在某种场景下采用最合适的的措施和行为, 充其量也就是自行车的"辅助 轮", 可以帮助你启动, 但是却限制了以后的发展.

对规则的过度依赖会导致羊群效应而贬低个人创造力.

对新手可以创建一套规则, 对经验丰富的成员建立一套恶劣的规章制度则会直接导致离开.

规则只是针对典型情况, 而不是特殊情况

如果你需要创造力, 直觉或者独创能力, 那么必须打破规则.

新手需要与场景无关的规则, 高手采用与场景相关的直觉.

2.认识你的大脑

随时记录你的想法, 如果不记录你的想法, 你就不会意识到你拥有它们

积极的情感对思维有非常关键的作用, 处于高兴的状态可以扩展你的思维过程, 激活更多的大脑物质.

短暂接触一下苹果公司的商品会使人更具有创造力.

当你害怕或生气时(充满消极情绪), 你的大脑也开始提供更多的资源, 并为反抗或者逃跑做准备.

已知的问题如果不加改善, 就会像病毒一样扩展, 并造成更大的破坏(破窗理论)

如果你的想法过早的受到束缚, 那么你的创造力就会被扼杀

对于一个开发团队来说, 通过增强感官刺激可以提高项目成功几率, 这里的工具不是UML这样的建模工具, 而是玩具积木或者乐高积木.

学习的过程, 重要的不是记忆和学会, 而是先"适应"它, 理解其思想, 掌握其主旨.

3.结对编程

急中生智能够发现无关事物之间联系并突破思维限制, 一种值得在团队实践, 锻炼和提倡的技能.

历史上一些灵感通常来自于一些无聊的事情, 比如洗澡, 除草以及刷盘子等活动, 一种合理的解释是, 理性思维有些厌倦了这些常规的活动, 走神了, 这是感性思维开始发挥它的作用了.

理性是主动的, 通常发生在你集中精力的时候, 感性是被动的, 你不能命令它, 只能邀请它.

源代码阅读的次数多于编写的次数. 因此值得花一些时间让其变得适合阅读.

对于代码规范, 新手会很容易遵守, 高级初学者多半会拒绝, 抱怨这是一种浪费, 专家和精通者则因为很难发现其中惯用的模式, 而认为其十分糟糕.

当习惯了阅读几行代码的方法, 对于多行代码的方法, 你会不习惯, 认为是错的.

对代码采用一致的格式, 这不是浪费时间的愚蠢修饰, 而是一种重要的交流工具.

拥有创造力和解决问题的能力的关键在于寻找思考问题的不同方式.

黑天鹅理论告诉我们, 很少并不意味着没有

推迟下结论, 推迟选择, 以便有更好的抉择, 提高成功的机会

如果还没有准备好, 就不要急着确定细节, 要适应你不知道的事实

世界上大多数数据都存储在只有90天保质期的硬盘里.

相信直觉, 但要验证.

反馈是敏捷软件开发的关键所在, 因为软件开发主要靠人, 而人是有缺陷的. 虽然我们的初衷是好的, 但是我们需要自己检查自己和别人.

随着你在某个领域越来越专业, 获得自我反馈能力越强, 这件事儿做起来才会越来越轻松.

4.主动学习

技术本身并不重要, 持续学习才是最重要的.

最可悲的是把教育当成一种被学习者被动接受的事情--灌输, 而不是引导.

正确的学习培训观点:
学习不是强加于你的, 而是需要你主动做的事情
仅仅掌握知识而不去实践, 没有用
随机的方法, 而没有目标和反馈, 往往会导致随机的结果.

大脑不是用来灌输的容器, 而是一个随时需要点燃了的火焰.

可度量性:为了努力实现目标任务, 不管采用什么方法, 你必须能够度量它.

可控性:稳扎稳打, 采取循序渐进, 比较细小的里程碑. 当实现后, 你会更有动力去实现下一个里程碑.

不仅有每周任务来实现目标, 而且还会指定一些很小的任务甚至5分钟的任务, 以确保能达到目标, 任务的长度通常是一天, 当遇到麻烦时, 可以创建5分钟或10分钟的任务来开始.

设定目标只是第一步, 下一步行动是创建小任务帮助你每天或每隔一段时间都能达到某种程度, 小任务越多, 越能看清你与目标的距离.

制定计划是一种非常有效的步骤, 而大多数人通常会: 等到有空闲的时候去学习一门新语言或者新技能, 而你会快会发现, 你根本没有空闲时间, 时间就像硬盘空间, 很快就会填满. 时间无法创造和销毁, 只能分配, 主动的安排你的学习, 合理的安排你的时间, 这样会使你更有效率.

计划是会变的, 但是必须与目标保持一致.

5.思维导图

线性大纲是一种层次结构, 往往阻碍了人的创造力, 因为有些想法并不适合采用这种层次结构.

思维导图通过不同的颜色和符号, 来增加表达的丰富性, 并且通过非线性的空间结构向你传达信息, 更强调事物之间的线索和关系.

建议手工绘制思维导图, 可以更好的实现头脑风暴, 学习和探索性思维.

听讲座记笔记可以帮助我们记忆讲座的内容, 即使这些笔记再也没有看过.这里更强调的是记笔记的过程

思维导图也是一样, 开始画一个草图, 然后重画, 在重画的过程中形成更多的关联.

当你不确定你会发现什么时, 思维导图是最有效的.

如果你在解决一个问题, 却不知道该如何做, 思维导图可以帮助你.

思维导图不需要完整的长篇大论, 以关键词为标题即可, 重要的线索采用粗体, 次要的关联采用细线, 将所有已知的内容展现出来即可.

思维导图的最重要的作用就是帮我们理清思路, 尤其当你陷入馄饨状态的时候, 用思维导图来帮我们指引方向.

如果文档不能提供价值就不要提供.

写文档的过程比文档本身更重要.

学习某项事物最简单有效的方法就是尝试教别人.

通过向他人解释某个复杂的东西的过程也是练习从听众的角度观察问题, 并创建隐喻的好机会.

6.控制注意力

注意力是一种稀缺资源. 当自制力很差的时候, 一些无关紧要的事情会分散我们的注意力.

我们并不是没有时间, 只是我们的注意力不够用而已.

冥想训练可以提高人的注意力.

冥想训练:
找一个安静的地方
舒适的坐立, 背挺直
闭上眼睛, 将注意力集中在呼吸

如果你不能给出一件事情出错的三种方式, 或者提供一个问题的三种解决方式, 那么你的思考还不充分.

不要在头脑中填满能轻易找到答案的信息和知识.

wiki是一种基于文本的思维导图

多任务处理会耗费20~40%的生产力.

试图将注意力分配到几件事情上, 意味着你在每件事情上都不会做到最好.

不停的中断手头上的事物而去处理邮件或回复即时消息, 你的智商会下降10分.

无论你做什么, 都不要同时做.

当你有一个想法时, 最好把它放在合适的地方, 无论是待办事项还是电子邮件, 然后回到你正在做的事情上.

不要在头脑中保留清单, 尽量用外部系统来帮你维护更新.

坚持持续做正在处理的事情直到完成, 避免上下文切换.

每个人在一天中应该有一段时间是效率最高的, 必须尽量避免在这段时间内被干扰.

少发邮件, 你就会少收邮件.

减少上下文切换的一个不错的做法就是提高上下文切换的成本(防止犯罪, 就是提高犯罪的成本)

为了减少你随时打开笔记本上网的诱惑, 直接将笔记本关闭而不是休眠. 从而提交开机的时间成本.

如果打扰不可避免, 那么最好留下一些线索, 这样有利于更好的返回到当前的状态, 继续处理.

比如在写邮件的时候, 有人来打扰, 最好几下几个关键字, 保留接下来的想法, 以便结束打扰之后能马上回到写邮件的状态.

多使用一台显示器, 可以提高20~30%的生产力. 因为多一台显示器可以减少上下文切换.

随时集中注意力, 随时意识到自己要集中注意力做什么.

7.超越专家

将一种新的行为变成习惯至少需要三周, 请给这个新的行为足够的机会

你的想法会改变你大脑的机能和化学成分, 如果你认为自己会失败, 你的预感就是实现.

开始目标设低一些, 当完成时, 奖励一下自己, 但是脑中只要记住最终目标, 然后一步一步去实现, 不需要一次全部想清楚.

人总是喜欢安于现状, 当尝试改变时, 总会有一种惯性阻碍这种改变, 因此我们需要克服这种惯性的阻力.

尽量保持桌面和代码的美感, 通过让大脑接受美的事物, 来提高感性思维能力.

让散步成为你每天生活的一部分.

阅读 3.6k
1 个回答

这本书非常好

以前上学时候记录的
有时间的话,感觉有必要再看一遍

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
101 新手上路
子站问答
访问
宣传栏