实用主义的思考与学习 读书笔记

实用主义的思考与学习 读书笔记

分类: Erlang   3955人阅读  评论(0)  收藏  举报

目录(?)[+]

手头的这本书是"Pragmatic Thinking and Learning: Refactor Your Wetware" 直译过来就是"实用主义的思考与学习:重构你的思维过程" 中文版被译作为"程序员的思维修炼-开发认知潜能的九堂课".
       这本书首先让我想到的是另外一本讲开发者思维方式的书:"系统化思维导论",不过很可惜温伯格的那本书的中文版被翻译得简直不知所云,糟糕至极.而且这本书除了中间换汤不换药炒了一下银年纪念版之外,并没有重新翻译,实在可惜.一本书能够遇到一个合适的出版社,译者太不容易了.
      回到这本"重构你的思维",这本书并没有产出什么新的东西,而是把一些更适合开发者的理论重新组织了起来,而价值就在于这种具体情景的分析和在组织能力.书中提到的很多内容是具有普适性的,在"冬吴相对论"中也经常被提及.下面一起回顾一下:

Dreyfus成长模型

新手
新手并不是特别想要学习,他们只想实现一个立竿见影的目标;他们不知道如何应付错误,所以出错的时候,他们非常慌乱;
他们迫切需要一个新手指南去按部就班的去完成一个目标.所以SOP是新手成长的捷径.但是新手指南只能让你启程,不会让你走的更远.

高级新手 
能够多多少少打破规则,可以独立的尝试任务但是难以解决问题.
他们想快速获取信息,并不像深究背后的机制,只想快速的拓宽技能;

比如我们学习某种新语言的时候,有一个阶段会快速了解API去实现更多的功能,解决更多的问题,不想过早的深入到底层机制刨根问底;实际上,没有足够的实践,也难以做深入的研究.
高级新手这一阶段是在拓展广度,看不深没有关系,先建立起全局思维;

胜任者
胜任者可以独立解决自己遇到的问题,并开始考虑如何解决新问题.他们开始寻求和运用专家的意见,并有效的利用.他们是团队的好人,可以指导新手,也不经常骚扰专家.这一阶段还没有足够的能力反思和自我纠正.

精通者
精通者具有全局思维,他们探索这个技能相关的更大的概念框架,如果信息过于简化,他们会非常沮丧.处于精通水平的从业人员有一项重大的突破:他们能够纠正以往不好的工作表现.他们会反思以前是怎么做的,并修改其做法,期望下一次表现的更好.到了这个阶段,自我改进才会出现.
精通者需要足够的经验,他们非常明确知道哪些计划需要取消,应该采取什么行动,可以有效的运用设计模式;


专家
专家是各个领域只是和信息的主要来源.他们总是不断的在寻找更好的方法和方式去做事.
十年成就专家
只是在一个领域十年是不够的,还要有积极的实践,什么样是积极的实践?
1.目标明确
2.目标有难度且可触及
3.实现目标的过程有大量反馈便于调整优化
4.提供犯错和纠错的机会
一个好消息是一旦你成为某一个领域的专家,在别的领域成为专家就会变得容易.至少有现成的知识获取能力和模型构建能力.
保持实践维持并提高水平.

 

经典理论回顾


自我认知能力

自我认知能力往往在较高的技能层次中才有,正确自我评估的唯一方法就是提高个人的技能层次,这反过来会提高自我认知能力.新手虽然能力差但是信心十足,而专家在情况异常的时候就会变得非常谨慎,专家会更多的自我怀疑.

我们总是难以开始
我们会遇到各种阻力,这种阻力表现形式五花八门:挥之不去的自我怀疑,漫无边际的拖延,各种边缘的问题阻碍你去开始行动.比如技术博客,一旦开始写,就不要停下来,不要为技术问题而分心,先写下来.可能内容杂乱,饮食男女,但是不乏能够改变世界的敏锐领悟和思想雏形.早晨自由书写可以在一个比较轻松的状态把思考的结果记录下来.还有一种方法就是自由写,随时记录你的想法和思考的材料.有了材料随时可以开始,随时可以展开深入.


不需要记住
信任记录而不是记忆,每一次思维的输出都是一次输入.不要把很容易轻易找到的东西放在脑子里面.


如何阅读
相比于任何经验式的学习方法,阅读是效率最低的学习方法.
阅读需要更主动一点,而不是拿起一本书就开始下功夫.SQ3R阅读方法:
Survey 扫描目录和每一章,得出总体看法或者概念 印象
Question 提出记录所有问题
Read 阅读全部内容
Recite 复述 总结做笔记 用自己的话来描述
Review 回顾 重读扩展笔记 讨论

 

 

目标

如果你不知道去往何处,那么你必须多加小心,因为你很可能无法到达那里.
随机的方法,没有目标和反馈,往往会导致随机的结果.

目标制定的原则
[1] Specific 具体
[2] Measurable 可度量
[3] Achievable 可实现
[4] Relevant 相关
[5] Time-boxed 时间可控

脑子里面记住你的最终目标,但不要试图把所有的步骤都想明白.只关注下一步,一旦达到下一步,再继续为实现下一个目标而努力.

在实践过程中

从错误中学习的积极心态 
平均需要20分钟返回到原来的状态
在信息很容易获取的时候,要注意控制注意力

 

 


  这几天一直沉浸在《黑客与画家》所营造的强大思维气场之中,该书是Paul Graham 的博客文集,涵盖了软件开发,思维方式,编程语言,创业,社会财富,社会价值,自由等话题的思考.在读过第二遍之后,我决定把书中对我触动较大的内容整理出来.笔记于此,注:文章内容版权归原作者和翻译者所有.喜欢本书请购买正版.

 

 

 

思维方式

  1. 文艺复兴时期的代表人物阿尔伯蒂名言"任何一种艺术,不管是否重要,如果你想要在该领域出类拔萃就必须全身心的投入".

  2. 我们这个世界,你向下沉沦或者向上奋进都是取决于你自己,不能把原因归于外界.

  3. 数学家Norbert Wiener说:如果你与奴隶比赛,你也会变成一个奴隶.

  4. 你把整个程序想清楚的时间点,应该是在编写代码的同时,而不是在编写代码之前,这和作家画家和建筑师的做法完全一样.

  5. 历史的常态似乎就是,任何一个年代的人们都会对一些荒谬的东西深信不疑.

  6. 如果你想要清晰地思考,你就必须远离人群.小时候每个人都会鼓励你不断成长,变成一个心智成熟,不耍小孩子脾气的人.但是很少有人鼓励你继续成长,变成一个怀疑和抵制社会错误潮流的人.如果自己就是潮水的一部分怎么能看到潮流的方向?

  7. 如果一个命题是错误的,这就是它所得到的最坏的评价,足够批判它了,根本不用在加上任何标签.但是一个命题不是错的,却被加上各种标签,进行压制和批判就有问题.因为只要不是错误的观点,就不应该被压制讨论.

  8. 丑陋的做法和聪明的做法有一个共同点就是不符合常规.

  9. Michael Rabin遇到难题的时候,会把问题重新定义成一个比较简单的形式,同时一定会假想一个对手在与他比赛谁更快的解决问题.

  10. 构思这东西有个特点,就是它会导致更多的构思.你有没有注意过,坐下来写东西的时候,一般构思是在写作的时候产生的?软件也是这样!

互联网产品

  1. "你的电脑"这个概念正慢慢成为过去式,取而代之的是"你的数据".你应该可以从任何终端上获取你的数据.

  2. 硬件需要考虑的地方不仅仅在于怎样才能避免出问题,还在于怎样做才能最大地发挥它们的作用.

  3. 如果软件是经常性发布,每次只有很小幅度的变化,那么就不容易产生复合式Bug,这好比是扫除,你一直在打扫大厅,掉落在地板上的东西会被被立刻清理,省得它们时间一长与其它东西粘在一起.软件运行不了就不发布,一旦能运行了就立刻发布;你的软件是连续性渐变的,某些更新也许比较重大,但是"版本"这个概念并不适用于互联网软件.因为你能得到用户数据,所以就不用依赖基准测试了,基准测试不过是在模拟用户,而你现在能看到真实的用户.你想知道该优化什么地方,就登录到服务器,看看什么程序最消耗CPU,你会知道什么时候应该停止优化.当我们发现ViaWeb编辑器的瓶颈是内存而不是CPU时,就知道可能应该停止优化了.

  4. 大公司的做法不是立刻实现新的功能,而是先对新功能做一个计划,我们没有任何计划,我们有改进的想法,但是我们如果想到怎么改进,我们就已经把它实现了.

  5. 提高软件可靠性的关键在于开发时的全神贯注,而不是降低开发速度.正因为飞行会员的全神贯注,他在能在夜间让一架18吨的飞机以225公里的时速平安降落在航母的加班上,做的比小孩子切面包还要安全.

  6. 正如人月神话指出的,向一个项目增加人手,往往会拖慢项目进度,随着参与人数的增加,人与人之间的沟通成本呈指数式增长.

  7. 只要你还在很活跃的开发产品,就免不了亲自做系统管理.互联网软件是获得,每时每刻都在你的服务器上运行.

 

工作,价值与创业

  1. 人们无法考核你的工作,甚至误解你的工作,都不是最糟糕的事情.更大的危险是你自己也误解自己的工作.

  2. 工作就是在一个组织中,与很多人共同合作,作出某种人们需要的东西.

  3. 你的职位产生的业绩应该是可测量的,否则你做得再多,也不会得到更多的报酬.

  4. 我认为,真实世界的关键并非在于它是由成年人组成的,而在于它的庞大规模使得你做的每件事都能产生真正意义上的效果.

  5. 从经济学观点看,你可以把创业想象成一个压缩的过程,你所有的工作年份被压缩成短短的几年,你不在是低强度的工作四十年,而是以极高的强度工作四年.在高技术领域,这种回报极其丰厚,工作效率越高,额外报酬越高.

  6. 技术就是某种手段,就是我们做事的方式.如果你解决了一个热门的技术难题,别人都会使用你的解决方案,这就是可放大性.

  7. 假定软件有两个候选的新功能,它们创造的商业价值完全相同,那么我们总是选择比较困难的那个功能.不是因为这个功能能带来更多的收入而是因为它比较难,我们在创业初期筋疲力尽解决难题,但是我们很高兴,如果那些问题我们都觉得那么困难,那么竞争对手就会更认为不可能解决.VC知道这个道理,为它取了一个名字:barriers to entry 进入壁垒

  8. 用户数量也许不是最好的测量指标,但是应该也相差不远了.买家(收购方)关心它,收入依赖它,竞争对手恐惧它,记者和潜在用户则是被它打动.无论你的技术水平有多高,用户数量都比你自己的判断更能准确反映哪些问题应该优先解决.

 

社会财富与自由

  1. 技术肯定加剧了有技术者和无技术者的生产效率差异,这毕竟就是技术进步的目的.

  2. 技术应该会引起收入的差距扩大,但似乎在缩小其它差距;1900年只要你有一辆马车,你就是富人,根本就没有人问你马车的牌子;今天,即使美国最穷的人也有自己的汽车,那么厂商只好通过广告训练我们识别品牌;技术无法使其变得更便宜的唯一的东西就是品牌;

  3. 创造财富不是致富的唯一方法,在历史长河中它甚至不是最常见的方法.快速致富的方法可以是继承,婚姻,征服,没收,很自然的财富的名声不好.积累财富最常见的方法其实是偷窃,游牧社会是偷别人的牲口,农业社会是征税(和平时期)和直接掠夺(战争时期).不管是战争还是政治斗争,本质上都属于偷窃;在控制程度更高的社会,统治者和官僚阶层都会使用税收代替直接充公,但本质没有变.

  4. 每个人的技能不同,导致收入不同,这才是贫富分化的主要原因.

  5. 一个人们拥有言论自由的和行动自由的社会,往往最有可能采纳最有效的方案,而不是采纳最有权势的人提出的方案.专制的国家会变成腐败的国家,腐败的国家会变成贫穷的国家,贫穷的国家会变成弱小的国家.经济学里面有一条拉佛曲线,认为税率上升税收收入会先增加后减少.政府的力量也是如此.

  6. 两个事情发生了变化:一是法律的变化保护平民的血汗钱不被强盗掠夺;二是工业化的来临.创造财富的人能够心安理得的享用自己的财富,没有财富的激励,技术革新就会逐渐停顿.

  7. 欧洲在历史上为什么变得强大?答案可能就是欧洲人接受了一个威力巨大的新观点:允许赚到大钱的人保住自己的财富.只要懂得藏富于民,国家就会变得强大,让书呆子保住他们的血汗钱,你就会无敌于天下.

设计

  1. 当你被迫把东西做的简单的时候,你就被迫直接面对真正的问题.当你不能用表面的装饰交差的时候,你就不能不做好真正本质的部分.

  2. 飞机设计师凯利约翰逊的观点:如果解决防范是丑陋的,那就肯定还有更好的解决方法,只是还没有发现而已.

  3. 好设计是解决主要问题的设计

  4. 好设计是具有启发性的设计,你应该提供一些基本的模块,使得他们可以随心所欲的自由组合,解决个各种问题.

  5. 好设计是看似容易的设计 科学和工程学上一些最重大的发现在形式上往往非常简单,会使你觉得自己也想到过,可是如果它真的那么简单,为什么发现的人不是你呢?

  6. 好设计是能够复制的设计:我们对待复制的态度经常是一个否定之否定的过程.刚入门的新手不知不觉的模仿他人,逐渐熟练之后才开始创作原创性的内容.最后他会意识到,把事情做对比原创更重要;等你逐渐对一件事情产生热情的时候,就不会满足于模仿了.你的品味就进入了第二阶段,开始自觉的进行原创.

  7. 好设计是成批出现的,好设计是大胆的设计

  8. 创造优美事物的方式往往不是从头做起,而是在现有成果的基础上做一些小小的调整,或者将现有的观点用比较新的方式组合起来.

 

编程语言

  1. 整个语言进化过程中,某一种语言的位置到底在哪里?找到进化的主干,它会启发我们去选择那些靠近主干的语言,这样对当前的编程最有利.

  2. 在长期的职业生涯中,我发现冗余的代码会导致更多冗余的代码,不仅软件如此,而且像我这样性格懒散的人,我发现在床底下和房间的角落这个命题也成立,一件垃圾会产生更多垃圾.

  3. 编程语言进化缓慢的与原因在于他们并不是真正的技术.语言只是一种书写法,而程序则是一种严格的符合规则的描述,以书面形式记录计算机应该如何解决你的问题.所以编程语言的进化速度更像数学符号的进化速度而不像真正的技术比如交通或通信技术那样的进化速度.数学符号的进化是缓慢的渐进式变化,而不是真正技术的那种跳跃式发展.

  4. 一旦未来硬件的性能大幅提高将会发生什么事情?新增加的运算能力会被糟蹋掉.要是以及十年前的标准衡量,有一些使用新语言开发的热门应用程序对硬件资源的浪费非常惊人.不仅编程语言有这种现象,这实际是一种普遍的历史趋势.随着技术的发展,每一代人都在做上一代人觉得很浪费的事情.

  5. 一种让程序员做无用功的语言才真正称得上很烂.浪费程序员的时间而不是浪费机器的时间才是真正的浪费时间.

  6. Lisp很值得学习,你掌握它之后,会感到它给你带来的极大的启发.这回大大提高你的编程水平,是你成为一个更好的程序员.尽管在实际工作中极少会用到Lisp.

  7. 大家都知道徒手使用机器语言写整个程序是一件很蠢的事情,但是把这个观点推广到一种更为普遍的情况,知道的人就不多了.如果你有好几种语言可以选择,在不考虑其他因素的情况下,不选择最强大的那种语言就是一件很蠢的事.

  8. Lisp的最大优势体现在编程任务的另一极端,就是在激烈的竞争条件下开发那些解决困难问题的复杂程序.

好吧,看这本书对我最直接的影响是:我决定看看下面两本书,哈哈

        ANSI Common LISP                    Land of Lisp 


1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值