17611538698
webmaster@21cto.com

《程序员的思维修炼》:从新手到专家的奇妙旅程

资讯 0 1741 2017-06-22 12:01:38

1.png


21CTO社区导读:
 
做一名程序员,就意味着要不断地学习,不但要学习新技术,还要学习怎么解决应用领域的问题,要了解用户社区的奇思妙想等等。在这本书中,作者将带领大家共同经历一次有关认知科学、神经学、学习和行为理论的旅程,探索人类大脑令人惊奇的工作机制,并研究如何克服这一系统局限来提高自己的学习和思考技能。
 
书中主要内容包括:成为一名专家级程序员的关键要素,大脑运行机制简介,如何正确使用和调试大脑。改进学习能力的具体技巧,如何通过自我引导积累经验,控制注意力的方法等。
 
Andy Hunt,敏捷开发权威人士,敏捷宣言首倡者之一,著名 IT 图书出版公司 Pragmatic Programmers 创始人。除本书外,他还与人合著有多本获奖图书,深受读者欢迎,包括《高效程序员的 45 个习惯——敏捷开发修炼之道》、《程序员修炼之道——从小工到专家》等。


写在前面

  在阅读本文之前,希望你准备保持一种开放的心态,并渴望对日常生活尝试某些新的方法。
  作为吃技术饭的人,我经常觉得我自己和『平常』世界的其他人不太一样。分析式思维、关注于解决问题、构建事务、连续几个钟头玩游戏。所有这些对我来说正正常不过。我喜欢学习新东西。
  我喜欢努力工作,渴望付出不亚于任何人的辛苦,以便能够按时完成项目。我喜欢听老板说:『干得真棒!』。当然,我的想法是这样的,工作出色,获得晋升。生活在某种程度上有些恐怖,至少在从技术进入管理,或者自己成立一份事业——创业是。总是有道看不见的屏障阻挡着大批有才能的人向上走,或者事业有进一步的发展。这道神秘的屏障反映出人们软技能的缺乏,阻碍着那些人向更高的阶梯前进。
  希望本篇小文能帮助你成为合格的程序员、架构师,更优秀的架构师,技术负责人,并在这条路上越走越广。
  /uploads/fox/22111339_0.jpg
  
导读:从新手到专家的奇妙旅程
 
  这是一本与编程有关,却又和编程无关的书。作者 Andy Hunt 十年的软件开发经验,让他在工作中遇到了不计其数的问题,在处理问题的同时,他始终保持着对身处情景的警觉和思考,不满足于解决问题,更愿意去找寻问题出现的根本原因,尝试更好的解决方案。最终,将其经过验证后的思考结晶汇聚成了此书。
  在不断的摸索中,Andy Hunt 找到了自己的人生哲学 —— Pragmatic(注重实效),本书围绕着注重实效的原则,对思维、学习、知识积累、个人发展等领域提出了自己的思考和诀窍。这些从编程中来,却不限于编程行业,作者结合各学科优秀思想的整合,用浅显易懂的表达教会我们真正的屠龙技。不论你是不是程序员,只要你愿意,以一个勤于思考程序员的视角去发现世界的另一面,这本书就是为你而写。
  这本书也可推荐给任何在做事、或无事可做的友邻。
 
黑暗旅者
 
  如果说生命是场漫长的旅途,我们就是黑暗空间的探险者,怀抱者抵达光明的使命,踏上漫长的旅程。可每个人的路不同,结果也不同,有人一直摸索却无法达到想去的终点,有人停留在某处放弃了继续追寻,有人踉踉跄跄陷入歧途,也有人走到了令人瞩目的巅峰之地。对你来说,面对四周的黑暗,该往哪里走,如果完全靠自己,一点点的探索四周的黑暗空间。你不知道哪里有山川河流,哪里有天堑通途?是否有前人的经验供你参考呢?
  幸运的是,前人把走过的路线绘制成地图流传下来,但即使你获得了前人的地图,也未必能够找到必达之地。如果那份地图只有绘的人自己读得懂,或许你根本无法解读地图上的标记,甚至这就是一份错误的地图,与现实世界的完全不同,那么有生之年你永远也到不了目的地,这时又该怎么办?
  /uploads/fox/22111339_1.jpg
 
  情况很不乐观,如果只靠自己的力量,也许要花足够多的时间,犯足够多的错,才能明白哪些路可以走,哪些路走不通。可这并不是我们想要的,这些错和苦,已经被前人经历过,我们要吸取教训,避开那些致命的错误,利用好前人的智慧与经验,在此基础上更进一步。
 
  如果有一种检验地图好坏的方法,是否就能避免被错误的地图误导至错误的方向?用实际的世界作为参考,评判哪些地图是好的,哪些地图是坏的。你学会了自己去判断地图是否能帮助你抵达目的地,那是通往光明世界的钥匙,听从他的指引,你就能找到智慧。然而那个教你识别地图的人,他才是真正的智者。相比地图的绘制者, 更值得尊重。
 
注重实效
 
  Pragmatic Thinking and Learning 是原书的题目,关于中文的书名,读者褒贬不一,两种书名各有各的意义。Andy Hunt 如同一支火把,照亮我们的前路,让我们能够看的远一点,走的远一点。

  他在全书的开头写道:


不要盲目地听从任何建议,包括我的建议。你可以用开放的思维来阅读本书,尝试执行一些建议,再判断哪些对你有用。


  我们能看出,作者充分尊重每个能够独立思考的头脑,他深知自己的局限,也愿意相信有人能够做的比他更好。如果说现在的时代,程序员正在改变世界,作为改变世界的主角,他们的优秀思维尤其值的我们学习。
  最为注重实效的方法就是改造思维,尤其是那些操作代码,并将要改变世界的程序员们。对程序员来说,重要的并不是如何提高编程技艺,而是对客观世界抽象思考的能力,代码是思维的产物,在构造之前考虑到每个细节和实现方式,这要求极强的思维演绎能力。况且任何事物的产生,都是被创造两次,一次在头脑中,一次在现实世界。那么不仅仅是编程一类的创造工作,想做好任何事情,都要提高思维的能力。让头脑成为我们解决问题的利器,而不是阻碍。
  注重实效的人,无法容忍思维出现漏洞,它是我们最需打磨的利刃。

学习思考

  我们生来就会思考,大脑即是思考的主体,有时也会成为思考的障碍。本能限定了思考的质量,学习正确的思考帮我们发现错误的思维模式,并做出调整。有时我们甚至会坚持错误的思维偏误而不自知,无法正确的思考和处理问题。就相当于在黑暗中选择了错误的方向,越努力,离目的地越远。
  在任何知识体系中,深入研究至一定的深度,就会找到通用的准则,这些准则是最为合理的客观世界的描述。也是我们评判自我思维的标准。所以思考需要通过符合认知科学的准则来训练,你不会担心被带上歧途,而是会懊悔自己懂得的太晚。这是训练自己解析地图和绘制地图的能力,将真实的世界与脑中的世界统一起来。
  注重实效强调,面对复杂的事物,抓住核心,从能够改变的地方入手,解构为细小的行动。保留那些有用的,摒弃那些虚无的,将精力放在思考与演绎中,当我们充分理解了现实世界,掌握了注重实效的思考方式,就如同挥舞起被打磨锋利的斧子,任何问题都会在思考和分析中,找到解决方案。在日常的思维定势外,得到另一种视角来看待自以为熟悉的世界,一切既陌生又熟悉。
  /uploads/fox/22111339_2.jpg
  作者带领我们认识自己的大脑,将大脑分为两种思维类型:
  • 负责线性思考的L型,具有分析性和语言性的特点;
  • 另一种是非理性非语言的R型思维,注重整体偏重直觉。

  凭借科学的研究结果,用实例印证两种思维对我们生活的影响,并根据大脑的特性,给出不同的改善方法,鼓励读者训练大脑的两种思维。用最可行的建议,提供训练两种思维的最佳实践。无论是对大脑的思维模型的训练方法,还是对思考偏误的纠正技巧,都是不可多得的。
  书末一句让人浮想联翩/发人深省: 大胆前进并且抓住方向盘。你有所需的一切:和爱因斯坦、杰弗逊、庞加莱或者莎士比亚一样的大脑。
 
思考学习

  Andy Hunt 当然也没有忘记去谈论学习这一件贯穿终生的话题,还有关于学习的思考。


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


  我们需要点燃火焰,照亮求知的前路,作者对传统的羊浸式学习法深恶痛绝,他认为单纯密集、脱离情境的课堂教育并没有什么效果。而推崇 SMART 的学习方法、SQ3R 的阅读方法等着重强调主动的、可以实践并反复验证,符合规划且有目的学习方法。

  这世上有太多的学习方法,哪种方法最有效?答案也是因人而异,或许没有哪个方法放之四海而皆准。如果以注重实效的标准来衡量,找到符合人类大脑认知习惯的学习方法,让学习活动避开大脑的盲区,以科学的方式充分利用大脑的优势。终究会帮助我们避免那些弯路,最终我们会自我审视学习对于我们,对于人生的意义。
 
  就如同我们充分了解的自己的大脑是如何运转之后,它的优点缺点都一目了然,它就像是一台精密的仪器,但也会有瑕疵,使用者如果用错误的方法使用它,也许会达不到预期的效果,若是能够正确的使用,避开那些会出问题的领域,也许会达到意想不到的惊喜。
 
语境切换
 
  『如果同时做两件事,那么哪件事也做不成』。程序员这样的一件角色,需要有一种能够快速切换角色情境的能力。包括所处环境,要处理单位内广泛事务,包括平级的或上级的事务,处理与产品经理的问题,可能还有并发处理多个项目的事物。
  我们要关注的第一个语境是自我意识,即知道自己在哪儿。级别越高的程序员越需要在不同语境中切换。切换的关键是,能够放下手头刚做的事,把注意力集中在现在的事情上,焦点在目前的人、问题及其周围的环境。
  如果来不及处理特定的问题或需求,要让对方马上知道自己还要把手头的事情做下去然后与他约定一个随后处理的时间。电话或见邮件就可以晚些处理,以免打断思路。把注意力充分,完全没有干扰的交给与你交流的人,专心致志,干净利落。
  有些时候,我们最大的敌人是自己。当我们频繁切换语境时,对待某个问题的反应或解决方式。比如在假设条件不清晰时,是选择新技术还是旧技术,想延迟决定还是立即决定,想避免冲突还是在压力下敢作敢当。
  就是这些东西,不管你的强项或弱项在哪些地方,你都要意识和觉察到它们,在工作中,清醒这些弱项。

再谈注重实效

  在全书的结尾,作者重复了这个诀窍:


认识你自己,认识当前时刻,认识你所处的语境。Be aware.


  当我们回到黑暗的空间,举着 Andy Hunt 点燃的火把,再次面对眼前的黑暗时,不再感到迷茫和无助,而是充满了对未知探索的兴奋,前路会如何,谁都不会提前知道,唯一能够确认的是,我们需要保持警惕,不断以注重实效的标准评估我们自己和我们的条件,避免过去的习惯和智慧蒙蔽双眼,满怀希冀和勇气,抵达向往之地。
  你有所需的一切:和爱因斯坦、杰斐逊、庞加莱或者莎士比亚一样的大脑。相比历史上的任何时刻,你随处可得更多的事实、想象和观点。
  程序员需要不断的学习,不仅仅是学习新技术,还包括应用的问题域,用户的奇思妙想,同事的古怪习惯,行业的八卦新闻和项目演进的重要特征。
  我们必须学习学习再学习,持续不断的学习,然后把学习成果应用到解决日常遇到的一切新旧问题上。
  另外,生命中不仅仅有工作。解决完工作后的如沐春风,会很兴奋,过瘾。但也要在生活中求得平衡。要不,可能是在消耗你的生命。
  你的家庭同样受语境切换的影响。在陪家人时,要一心一意的和他们一起。忘掉工作和其它问题,随后再处理。专心致志,你和家人会更愉快。

远见与实现路线图
 
  成为一名有远见的程序员,需要我们构建一幅路线图。它包括:
  定义认知;找寻和创立引人注目的目标:包括发现自己的认知。从混沌现实讲出有说服力的故事;克服心智障碍。开发与建立战略路线图,将路线映射到你的认知,制定支持认知的战略。
  接下来确定志同道合的伙伴:认知需要同心协力。认知要求有关键的利益相关者。认知需要有资金支持。
  实践认知:将认知当做增加投入产出比的战略。使用认知灌输目标感。在项目评估时就应用认知,以让大家齐心协力。做出一个支出信封来为战略解决方案提供具有战术性的方法。
  学习成为一名有远见的程序员,能够牵引自己所负责的一系列项目,使它们枝繁叶茂,融入到认知里。通过花时间超越你日常的工作职责,通过奋力发展与公司一致的目标与架构认知,你能够大大提升自己的职业潜能,使你有一个令人兴奋的人生道路。

  相信我们会到达的,一定会的。
 


文章:曹帅
编辑:李亮(创智学院)


评论