透过用户思惟谈程序员的进阶之路

最近读了一本关于产品的好书《用户思惟+ 好产品让用户为本身尖叫》,虽然是一本产品相关的书,可是全书都在围绕如何让你的用户变得更优秀展开讨论。做者的观点很明确也很独到,可持续成功的产品都是由推荐(口碑传播)产生的。而激发这些推荐的是用户对本身的感受,也就是咱们的产品或服务帮助他们作了什么或成为何样子。这可能也是知识付费这几年火热的缘由之一吧。程序员

这本书的做者可谓将用户思惟挖掘到了极致,这一点在此书中随处可见。能够这么讲,这本书自己就很是的用户思惟,在关键的观点或知识点上,老是配有恰到好处的生动插图,读起来绝不费劲,想象一下《Head First》系列图书的画风。奥对了,这本书的做者Kathy Sierra就是Head First系列图书的策划人之一。数据库

我在读这本书的时候,更多的是将本身当成了书中的用户。因此读完以后最大的感触就是,我能不能运用书中讲的这些让本身变得更优秀呢?毕竟用户思惟就是一切从用户出发。思考事后,我以为是能够的。从这个角度而言,这本书已经超出了讨论如何作好产品的范围,着重的是用户思惟中的思惟这两个字。而这种思惟就是译者序中提到的成长型思惟模式。这也是我写此文的目的,但愿这种成长型思惟能对本身的进阶之路有借鉴意义。若是能对你们也有所帮助,那就再好不过了。编程

如何作到保持理想成长曲线呢?

用户理想成长曲线:微信

mark

如果顺着成长曲线向右上方移动,最终咱们将达到专家(某一领域)的高度。但其实咱们大多数人只是想变得更好一些而已,一点点进步就会很是明显。那么如何作才能顺着成长曲线向右上方快速移动,甚至接近理想曲线呢?或许能够从专家身上找到答案,首先咱们须要了解一下什么是专家?数据结构

专家不仅是指他们知道什么。重要的是,他们能将已有的知识应用到实践中。并且,他们可将这一过程一次次地重现。在一个领域中,给定一项具备表明性的任务,专家的完成状况更好、更可靠。post

而后咱们再来看看专家是如何作的?学习

  • 持续不断地构建技能
  • 保持渴望成功的愿望

持续不断地构建技能

构建技能

要想具有专业能力,就必须构建专业技能。技能的构建就是将一项技能由“不能作”移动到“能作”。能作又划分为两种类别:费力(不可靠)和精通(可靠、已内化)。搜索引擎

咱们设想中的技能构建过程多是这样:spa

mark

可是,这不是一条通向高水平专业能力的有效途径:设计

mark

咱们看一下专家是如何作的:
mark

  • 专家从不中止增长新的技能。
  • 专家既有意识地构建技能,也无心识地构建技能。
  • 专家会改进现有的技能。

咱们应该格外注意这个过程:

mark

刀不磨要生锈,那些无需咱们有意识练习的技能将慢慢退化。因此仅仅使用是不够的,还须要拿出来有意识的练习。

刻意练习

咱们常常会有这种感受,在某一项技能的练习上,咱们付出了努力,也付出了时间,可是效果就是不理想。不少人可能会将此归咎为本身笨,没有天赋;其实并非,颇有多是本身练习的姿式不对。

在时间同样的状况下,专家会将更多的时间放在刻意练习上,注意能够刻意练习不是刻意地练习。能够练习有助于防止陷入平庸,这是由于:精通半个技能完胜一堆半生不熟的技能

mark

一般状况下,更细粒度的子技能学习法是构建技能的最佳途径,可是没有人愿意把一周的时间都用在简单的练习上。刻意练习老是刚好超出咱们当前的能力范围(温馨区)。这一点很是重要,若是咱们练习那些远超出当前能力的技能,极可能会由于太困难、长时间没有反馈而放弃。而若是一直练习没有难度没有挑战的技能,后果可能会更严重,咱们在平庸阶段进行的练习越多,对平庸技能的强化就越大,而且练习形成的影响是永久的。

mark

刻意练习的简明原则:完成一项细粒度的任务,通过一到三组45-90分钟的练习就能达到95%的精通度。

若是没法达到这一要求,咱们能够将任务划分为更小的子任务,或者下降要求和标准。

  • 若是这项任务或技能过于复杂(未精通的技能过多),就将其划分为更细粒度的子任务或子技能mark
  • 若是这一任务并不复杂,只是难度过高了,则下降要求或标准

mark

可是大多数人在大多数的专业能力成长曲线上遇到的最大问题是,阶段B堆积了太多东西。与一次只作一件事情相反,咱们想要同时学习和练习的东西太多了。这种形式的技能堆砌会拖慢进步速度、扼杀进步。

mark

专家将更多的时间放在刻意练习,给了咱们借鉴的意义。程序员这个职业,不学习就会被淘汰,学习就意味着要构建新的技能,丰富本身的技能库。这个时候就能够运用上面的刻意练习的方式。首先咱们要明确本身学习的目标,学习此技能能帮助咱们完成什么,是否值得咱们学习,切莫贪大贪全,应该肯定本身的核心竞争力是什么。以阅读优秀源码(至于为何阅读源代码,后面有提到)为例,通常一个项目的源码到了值得阅读学习的阶段,此项目应该已经比较成熟了。那么此项目的代码量以及代码难度应该都是不小的,若是从最新最全的版本开始看起,很容易就由于太困难放弃了。那么此时就能够进行任务拆解,能够从比较早期的版本看起,这个时期的代码量比较小,代码设计要比较好理解。或者是能够研究此项目中其中一个功能,掌握之后再切换到别的功能上。例如研究数据库,数据库发展到如今,其中的实现无比复杂。那么咱们就能够从其中的几个主要的功能特性入手,好比索引、锁之类。

此外咱们须要格外注意上面提到的两个问题,一个是阶段B堆积了太多东西,咱们想学习的东西太多,可是精力有限。此时应该收缩战线,专一构建最重要的技能。精通半个技能完胜一堆半生不熟的技能。另外一个是咱们在平庸阶段进行的练习越多,对平庸技能的强化就越大,而且练习形成的影响是永久的。有不少工做年限比较久的程序员,专业能力还不如刚工做几年的新人。究其缘由,都是由于不努力吗?否则,他们也努力了,只不过他们待在温馨区的时间太长了。

感性接触

咱们会常常听到这么一个观点,中国人学很差英语,是由于中国人历来不用英语,只是单纯的死记硬背。一样的道理,专家之因此成为专家,是由于专家周围的环境更好,他们接触了大量高质量的专业技能。中国有句古话,“近朱者赤,近墨者黑”,也是一样的道理。放在如今就是,若是你身边都是优秀的人,那你多半也差不到哪里去。可是,除非知足特定的条件,不然简单地接触专业人士并不能帮助你构建专业能力

书中有个很生动的例子,小鸡性别鉴定。辨别刚出生的小鸡的性别异常困难,可是更早的辨别出小鸡性别,将公鸡和母鸡分开,有助于更快的进入鸡蛋生产环节。在20世纪初,日本人开发了一套鉴别小鸡性别的方法,可是只有不多的几位专家掌握了这一技能。如今的关键是培训具有这一技能的新手,即可以大规模应用这一技能。问题是身为掌握这一技能的专家也不知道本身是如何作到的。你的大脑可以学习一些你没法学习的东西,这不是什么魔法,而是感性知识。

他们是这样培训新人的,让新人随意指出小鸡的性别,只是随意的猜想。而后小鸡性别鉴定专家给予新人反馈,对,不对,不对,对。新人的每次猜想都会获得专家的反馈。终于,随着时间的流逝,新人在小鸡性别鉴定方面的表现愈来愈好了。只不过这时候新人仍是不知道这是为何?

其实在接触足够多的反馈以后,你的大脑在无需意识介入的状况下,开始发现模式和潜在的结构,伴随着更多的接触,你的大脑开始精心调整它的感知能力,最终找到真正的解决方案。你的大脑可以觉察更加细微的特征,将信号和噪声区别开来,即便你没法解释其中的原理。

全部领域的专家都在学习和利用无心识的感性知识,他们的大脑知道的东西远比展示出来的多得多。

mark

当你接触了大量多样化的实例时,你的大脑便开始观察什么是不变的。在感性学习可以发挥做用的地方,“发现”其实比“讲授”更有效。咱们的目标就是经过展示更好的实例,帮助本身变得更加优秀。

如今知道为何要读源码学习了吧,并且要读优秀的源码。你无需观察优秀程序员是如何编写代码的,只须要阅读不少优质代码便可。因此不要把本身写不出好代码的缘由归咎于身边没有大牛,也不要妄想着要是有个大牛带带我写代码就行了。

那么要不要看烂代码呢?要看!由于有时候这不是你想不想看的问题,而是你不得不看,是项目就会有烂代码。当你确实须要展现或者阅读错误或不良的实例时,要营造不适感。我曾经和个人组员说,有时候阅读烂代码反而比阅读优秀代码进步更快。可是前提是你要能识别出什么是好代码,或者什么是烂代码。当你看到烂代码时,你就会打心底里嫌弃,而后就是想办法去改造它,这就是进步的机会啊。学习鉴别“不良”实例的最佳办法,就是学习“优秀”实例的潜藏模式。《重构 改善既有代码的设计》这本书就是这样作的,首先明确指出烂代码都有哪些特色,而后才是针对这些特色的代码重构方法和解决方案。

保持渴望成功的愿望

排除障碍

如何能保证本身顺着理想成长曲线不断前进呢?要知道在愿望和现实之间存在着一条鸿沟。有一些东西干扰了咱们,有两种不一样类型的干扰性鸿沟。

  • 技能鸿沟

mark

  • 关系鸿沟

mark

第一次学习编程的你会遭受不少痛苦。任何一件值得你付出的事情,都是如此。因此当咱们面对困难时,第一件事就是要认可困难。人们之因此在遭遇困难时放弃,并非由于他们遭遇了困难。这是由于他们不知道他们的境遇是正常的。这是由于他们不知道他们的努力方向是正确的。这是由于他们不知道其余人也会在同一阶段遭遇困难。那些放弃的人们,没有意识到,困难只是暂时的,也是正常的。

在认可困难以后,咱们还要对成长曲线上可能会遇到的问题作出预测和补偿。预测出可能会干扰咱们前进的因素。好比我本身在看书时,会将手机静音放到本身够不到的地方去。这样我就不会一直惦记手机会不会有消息,等到看完书再处理就是了。而后要对本身遇到的困难作出补偿,以编程为例,咱们遇到的问题基本上前辈们都遇到过,这个时候善用搜索引擎就很是有用了。论坛和社区也很是重要。

进步+回报

咱们知道了阻碍咱们前进的因素,可是吸引咱们前进的因素是什么呢?我以为是成就感。成长路线上所收获的,会让咱们得到成就感。若是咱们没能从进步中得到任何好处,一切将变得没有任何意义。因此规划好成长路径图就很是重要了,仅仅知道有这么一条成长路径存在,就是强烈的动机来源。

对于程序员而言,制做一份技能清单,内容涵盖从初级到高级的技能。而后将其划分为不一样的级别和层次。一种可行的作法是,在每一个层次所花费的时间是前一个层次的两倍。即便这条路径不是最佳也无所谓,由于重要的不是路径,而是取得进步。让咱们大胆一些,尽管尝试就是了。另外使用领域特定的专业术语进行交流,不只有用,并且也是一种激励。因此和同事交流,或者写博客分享咱们的技巧都是很好的激励方式。

维护认知资源

1999年,Baba Shiv教授以及165位大学生一块儿开展了一项简单的实验。他要求一半的学生记忆一个7位数,其他学生记忆一个2位数。

mark

上图中的结果,可能不少人认为是大脑在工做以后须要更多的卡路里,须要吃点蛋糕补充能量。可是研究人员向咱们揭示了一个违反直觉、使人震惊的事实:

意志力与认知加工能力从同一个资源池中获取能量。

记忆7位数的参与者选择蛋糕,不只是由于他们大脑须要更多的热量,还由于这项记忆性任务耗尽了他们抵抗蛋糕诱惑的意志力。因此咱们应该确保本身把稀缺、易耗的认知资源用在正确的事情上。核心任务就是减小资源泄露

减小认知泄露

  • 要想减小认知泄露,应该把认知工做委托给外部世界(这样它就不会滞留在用户的大脑中)

    咱们的大脑每次只能专一于一件事情,对于未完成或者中断的任务,咱们的大脑会为其保留一个“后台进程”,多任务切换会耗尽大脑的能量。人们更容易记住未完成或不完整的任务,这就是蔡加尼克效应

  • 要想减小认知泄露,不要让用户选择

    选择是一种代价昂贵的认知开销。以前看过一篇文章,讲的是不要在你的卧室内学习或者工做。这一点我深觉得然,学习原本就是一件违反人性的行为,选择在卧室内学习或者工做,极可能整个周末都是在起床学习工做仍是躺在床上休息中的纠结中度过。因此干脆不要给本身选择的机会,我如今就是周末会抽一天很早起床,而后直接去公司,断了本身想偷懒的想法。

  • 要想减小认知泄露,帮助用户内化技能

    位于阶段B的技能会消耗大量的认知资源,位于阶段C的技能所消耗的认知资源则不多。因此咱们宁愿只精通一项技能,也不要同时学习过多的技能。

  • 要想减小认知泄露,减小对意志力的需求

    自控力和意志力是昂贵的认知资源开销。要想减小用户对意志力的需求,就假设它们根本不存在,帮助他们养成习惯。习惯只须要不多的意志力或者无需意志力。可是咱们的关注点应该不只仅在于养成新的习惯,咱们必须升级或者替换掉那些容易招致平台期和中等技能困境的不良习惯。

穿越大脑的垃圾过滤器

咱们的大脑老是努力区分噪声和信号,这实际上是好事,只不过咱们没法控制这个过滤器。因此咱们须要作另一件事,阻止大脑把咱们应该关注的事情当成垃圾

咱们必须帮助大脑赞成:

  • 这是一件值得关注的事情
  • 这是一件值得集中注意力的事情
  • 这是一件值得记住的事情

大脑喜欢即学即用式学习,而不是储备式学习。这也是为何一样的工做时间,不一样的人能力提高却差异很大。若是你的工做是极具挑战性的,那么你就须要一直学习新的技能来知足工做的须要,而且都是即学即用式学习,这但是咱们的大脑所喜欢的。相反,你的工做没有任何挑战性,即便你在不断学习,可是始终用不到学到的新技能。咱们常常会有这种感受,不少当时学会的东西,过一段时间基本就忘却了,由于咱们的大脑不喜欢储备式学习。因此咱们能够利用技能映射验证知识的有用性,经过将知识映射为技能来验证(减小)必须学习的知识。直接把多余的知识删除、删除、删除。

mark

利用应用场景说服大脑。当咱们学习很抽象的技能,很差理解和记忆时,能够尝试利用应用场景来讲服大脑。例如在学习Redis的5种基本数据结构(如今是6种了)时,就能够思考每种结构能够应用在什么场景?hash能够用于记录帖子的点赞数、评论数和点击数;zset能够用于记录热榜帖子ID等等。

最后

努力吧,骚年,成就卓越的本身

mark

做者:CoderFocus

微信公众号:

声明:本文为博主学习感悟总结,水平有限,若是不当,欢迎指正。若是您认为还不错,不妨点击一下下方的推荐按钮,谢谢支持。转载与引用请注明做者及出处。

相关文章
相关标签/搜索