《刻意练习》:以学习编程为例

简介: 《刻意练习》是一本神奇的魔法书,它用大量的事实案例和数据来证明了刻意练习能给一个人带来的巨大改变。更为难能可贵的是,它不仅仅只是介绍刻意练习的好处,还给读者介绍了刻意练习的方法和注意事项,可以说是干货满满的一本书。

《刻意练习》是一本神奇的魔法书,它用大量的事实案例和数据来证明了刻意练习能给一个人带来的巨大改变。更为难能可贵的是,它不仅仅只是介绍刻意练习的好处,还给读者介绍了刻意练习的方法和注意事项,可以说是干货满满的一本书。


本文想以“学习编程”为例,结合《刻意练习》这本书教给我们的方式方法,阐述如何通过刻意练习来提高自己的编程水平。


关于练习


不断重复只是“天真的练习”,无法带来进步。“正确的练习”需要好导师、有目标、有反馈。所以如果想要提高编程水平,光靠一味闷着头努力写代码是不够的,有些人写了几年的CRUD,可能整体的技术水平还不及刚毕业的同学。


一个好的导师很难得,他不仅要自己在编程水平是有一定的成就,还应该具有一些教育方面的经验,才能更好的指导你。一般来说,大一点的公司都会有老人带新人的机制,可以利用这个来找一个比较好的前辈带一带。另外就是通过看书或看视频其实也是一种很不错的学习方式,写书和出视频的老师自然是具备上述条件的。


有目标指的是应该要有明确的目标,而不是一个宽泛的目标。比如“我要提高Java水平”明显就是一个宽泛的目标,无法量化。明确的目标应该是什么样子呢?比如,我要学习JVM的基础知识,我要学完23种设计模式等等。一个好的目标还应该是可分解的,有时间或成果量化的。比如,我需要在一个月内学习完Java多线程技术,第一周学习多线程模型,第二周学习多线程基本的类和接口,第三周阅读JDK里面关于多线程方面的工具类的源码,第四周写多线程案例Demo,最后产出一个Java多线程系列笔记或者博客。


有反馈指的是可以量化的反馈。比如写一篇技术博客,有多少阅读量,点赞量,评论量?写一个开源项目有多少star,做一个LeetCode有没有通过,耗时如何?

上述算是对“有目的的练习”的一个阐述。刻意练习是在有目的的练习基础上的。总结起来,有目的的练习应该具有以下四个特点:

  1. 有目的的练习具有定义明确的特定目标
  2. 有目的的练习是专注的
  3. 有目的的练习包含反馈
  4. 有目的的练习需要走出舒适区

对于任何类型的练习,这是一条基本的真理:如果你从来不迫使自己走出舒适区,便永远无法进步。


关于心理表征


《刻意练习》这本书用了大量的篇幅来介绍心理表征。作者认为,刻意练习的核心之一在于通过练习来创建大量的心理表征,然后再使用这些心理表征反过来帮助练习。

那心理表征到底是什么?

我认为它是一个人学习某样东西的时候,自己心中形成的一个体系架构。比如我们学习算法,就会形成一个关于算法的体系架构,也就是心理表征。而当我们再学习到Mysql的底层索引原理的时候,就会想到算法关于平衡树方面的知识;当我们学习JDK源码里关于集合框架的时候,就会想到链表、栈与队列、红黑树等等。

我们的知识形成了一个循环,学得越多,懂得越多。当我们积累了大量的知识以后,再学一样有关联的东西,就能快速学会。


刻意练习


刻意练习提倡“边干边学”,它使人们熟悉练习的习惯,并思考如何练习。这与我们学习编程的理念是一样的,几乎没有人会对你说:你只需要看书,看博客,看视频就能学会编程。有经验的前辈一般会告诉你,要有输入,也要有输出。学习了的东西,要通过写代码或者做笔记或者写博客的方式,让知识变成你自己的,更加牢固。

你通过写代码,不断地写代码来提高自己的编程水平,然后通过思考,反思来决定该如何写代码才能写得更好。

传统的方法也一直是先找出关于正确方法的信息,然后很大程度上让学生去运用那些知识。刻意练习则完全相反,它只聚焦于绩效和表现,以及怎样提高绩效和表现。

编程也是一样,老板和上级其实真正在意的并不是你懂多少理论,而是你写得代码质量好不好,你能不能快速地实现他们需要的功能,能不能解决技术难题。

你的代码写得比别人快,你的代码写得比别人漂亮,你能快速解决别人不能解决的难题,那你就牛逼。


关于专注与坚持

刻意练习里面有一个观点颠覆了我以前的认知。我一度认为,一个人能不能专注,能不能坚持做一件事,除了热爱,那必然是意志力越高的人越能专注和坚持。

然而刻意练习告诉我,意志力根本不存在!所谓意志力,其实是保持动机与专注的结果。


我们先来看看如何让自己保持专注,不专注的练习是没有效果的。刻意练习提供了一个观点,如果练习的时间更短,那就会有更好的注意力

对于这个观点我是绝对认同的。比如看书,如果想一次性看完一本书,那对于一般人来说绝对是非常困难的。但是如果把它拆成一章一章,每天看一点,那就会好很多。而在日常的工作中或者学习中,我们可以使用“番茄钟”来管理自己的时间与保持专注。这里不具体介绍番茄钟,有兴趣的同学自己去了解一下,亲测有用!一个番茄钟25分钟,不多不少刚刚好。


再来谈谈动机。对于一个程序员来说,动机是再明显不过的了:升职加薪变大佬。但有时候这个动机并不能转化为一种强有力的动力来促使我们去学习,去提高技术水平。而某些太强烈的动机(比如想跳槽)又很难持续保持。

《刻意练习》告诉我们,我们要保持动机,要么强化继续前行的理由,要么弱化停下脚步的理由


仍然以学习算法为例。要强化继续前行的理由,我们可以在学习到一定阶段给自己一些小的奖励,比如刷完100个算法题,给自己买个好的键盘或者耳机。还有来自朋友、同事、家人乃至默认人的鼓励也很重要。我在网上写博客分享给大家,如果读者的点赞或者好评,那也是非常能激励我们继续学习的!

而弱化停下脚步的理由。比如练习累了就合理休息一下,学习累了就暂时玩一下,如果觉得自己一个人学技术太孤独,就找一群小伙伴一起学习或者加入一个技术社区。目标要精心设置且合理,这样才能得到达到目标的成就感,不会因为达不到目标而气馁放弃。


目录
相关文章
|
6月前
【错题集-编程题】春游(模拟 - 分情况讨论)
【错题集-编程题】春游(模拟 - 分情况讨论)
|
6月前
|
安全 网络安全 网络架构
网络开发过程详细知识点
网络开发过程详细知识点
59 0
|
6月前
|
机器学习/深度学习 自然语言处理 API
有一点python基础,想玩大模型,不知从何入手。快速入门。
有一点python基础,想玩大模型,不知从何入手。快速入门。
675 0
编程学习之路第一步
编程学习之路第一步
35 0
|
设计模式 算法 开发工具
软件设计师总结-含括学习方法和学习过程,可参考(上)
软件设计师总结-含括学习方法和学习过程,可参考(上)
|
设计模式 算法 搜索推荐
软件设计师总结-含括学习方法和学习过程,可参考(下)
软件设计师总结-含括学习方法和学习过程,可参考(下)
117 0
|
SQL 安全 搜索推荐
学编程遇到问题,如何更好地提问?
不要只把你不懂的地方拿出来问而不提及问题的前因后果,否则回答者可能无法明白你的问题。尽量客观描述问题,而不是只说自己的理解和假设。在客观描述的基础上,你可以再加上自己的判断和尝试解决的结果。
|
运维 程序员
程序员成长第九篇:真实项目中的注意事项
程序员成长第九篇:真实项目中的注意事项
67 0
|
前端开发
前端学习案例-你可能没见过的
前端学习案例-你可能没见过的
90 0
|
设计模式 算法 数据库
零代码以“王者荣耀”为例解析设计七原则,助你面试拿“五杀”
面试设计原则还在死记硬背?一文助你深入理解设计模式七大原则。
15189 0
零代码以“王者荣耀”为例解析设计七原则,助你面试拿“五杀”