【程序员必备软技能】之十步学习法

news/2024/5/19 0:44:35 标签: 程序员, 软技能, 学习, 读书, 嵌入式

文章目录

    • 1. 如何自学
    • 2. 体系背后的逻辑
      • 2.1 如何掌握一门技术
      • 2.2 基本思想
    • 3. 第 1 步到第 6 步:这些步骤只做一次
      • 3.1 第1步,了解全局
      • 3.2 第2步:确定范围
      • 3.3 第3步:定义目标
      • 3.4 第4步:寻找资源
      • 3.5 第5步:创建学习计划
      • 3.6 第6步:筛选资源
    • 4. 第7步到第10步:循环往复
      • 4.1第7步:开始学习,浅尝辄止
      • 4.2 第8步:动手操作,边玩边学
      • 4.3 第9步:全面掌握,学以致用
      • 4.4 第10步:乐为人师,融会贯通
    • 5. 最后的思考

最近在读一本书《软技能-代码之外的生存指南》,这是John Z.Sonmez写的一本关于软件开发人员自身发展的书。作者用职业、自我营销、学习、生产力、理财、健身、精神等七个篇章,阐述了软件行业从业人员需要掌握的“软技能”。

书中的建议都是作者从自身的工作与生活中总结出来的。读完以后觉得很有必要总结一下,早点接触到这本书或许能少走一些弯路。因此,我把书里我觉得重要的部分分享给大家。今天分享的是书中提到的十步学习

1. 如何自学

  • 如果想成为最好的软件开发人员,你就必须学会如何自学。很不幸,学校并不会教你自我教育这项技能。无论如何,学会学习是自我教育的核心技能

  • 将自己所学的东西教给别人,你不仅能记住,还能理解得更深刻。与其他学习方式相比,主动学习是效率更高的方式

  • 如果你想学习一些东西,你应该聚焦在如何让自己切实参与,并且尽早付出实践。

  • 一旦你已经实践过,并积累了各式各样的问题,立刻回到书本当中。当你回去重读这些参考资料的时候,你有强烈的冲动去消化吸收其中的内容。因为你已经积攒了很多想要找到答案的问题,你对哪些内容更重要早已了然于胸

  • 然后,你可以把自己学到的新知识重新应用于实践

  • 最后,你可以将自己所学的打包教给别人。你要用自己的语言将这些信息组织起来,把你的思想表述给别人

  • 这个过程可以归纳为:学习——实践——掌握——教授。

2. 体系背后的逻辑

2.1 如何掌握一门技术

我发现,为了能够掌握一门技术,我需要了解以下三个要点。

  1. 如何开始

要想开始使用自己所学的,我需要掌握哪些基本知识?

  1. 学科范围

我现在学的东西有多宏大?我应该怎么做?在开始阶段,我不需要了解每个细节,但是,如果我能对该学科的轮廓有大致的了解,那么,将来我就能发现更多细节。

  1. 基础知识

不止在开始阶段,要想使用一项特定的技术,我需要了解基本的用户案例和最常见的问题,也需要知道自己学的20%就能满足80%的日常应用。

2.2 基本思想

“十步学习法”的基本思想就是

  • 要对自己要学的内容有个基本的了解。了解自己不知道什么

  • 然后,利用这些信息勾勒出学习的范围,即需要学哪些内容,以及学成之后又会获得什么。依靠这些知识,你可以找出各种资源(不局限于书)来帮助自己学习

  • 最后,你可以创建自己的学习计划,列出要去学习哪些相关课程,筛选学习材料,只保留能帮助自己达成目标的优质内容。

3. 第 1 步到第 6 步:这些步骤只做一次

3.1 第1步,了解全局

  • 在这一步,你要做的就是了解自己将要学习的主题的全部。这个主题宏观上什么样?你能从中学到足够丰富的知识以了解自己所不知道的吗?以及自己所不知道的有多少?

  • 我们在这一步的目的不是要掌握该主题,只是对这一主题的相关内容有一个全局性的了解

3.2 第2步:确定范围

  • 根据自身的需求,决定学习的重点和学习的范围,在此阶段容易犯的一个错误就是:试图解决太大的问题而让自己陷入困境中。

  • 结合从第一步中获得的信息,明确自己的学习范围,尽可能的保持专注

  • 同时,也需要阐述自己的学习理由来帮助自己界定学习的范围。学习范围务必大小适当,既能符合学习理由,又能符合自己的时间限制。

以摄影为例,你想学摄影,这个方面很广阔,现在知道了摄影分为风光摄影、人像摄影、人文摄影等等,现在你要明白你最想学哪方面的摄影。

比如,想拍好女朋友,拒绝直男称号的就想去拍人像摄影。这样我们就把摄影这样一个比较笼统的范围聚焦到了清晰的特定范围。

3.3 第3步:定义目标

  • 在全力以赴启动之前,明确“成功”的含义极为重要。

  • 在尝试学习任何东西之前,你都应该在自己脑海中清晰地描绘出成功的样子

  • 当你知道自己的目标是什么的时候,你就可以更轻松地使用倒推的方式,明确实现目标所需的步骤

3.4 第4步:寻找资源

  • 对于学习编程来说,你可以在网上找到大量的资源(这里的资源包括书、教程、视频、代码等)。试着在百度,CSDN,博客园, Google搜索相关关键字,然后根据描述或评论选择资源。尽量选择系统性的教程或书。对于编程语言、框架和工具来说,官方手册一般都不会太差。

3.5 第5步:创建学习计划

  • 在介绍之前,我们先来想想,书籍的目录是否是被分解成一个章节一个章节的,各章也循序渐进。

  • 学习是一个自然的过程。从A开始,前进到最后到达Z。你需要找出在最短的时间内从A到Z的正确路径,并且到达沿途的重要地方。

  • 现在我们手里已经掌握了足够的资源,那么如何有效利用这些资源呢?

  • 你需要创建自己的学习路径。一个好的方法就是观察别人如何教导你感兴趣的知识。例如,所学书籍的目录。当然有些书籍结构略差,你可以根据自己所需内容进行调整。

3.6 第6步:筛选资源

  • 你现在知道自己该如何去学习了,具体包括要学习的内容以及学习的顺序。

  • 你需要对已经拥有的资源进行筛选,只留下 1~2 个品质最高的资源即可。

  • 对于书籍而言,我们可以看网上评论和别人的心得;教学视频一定要选择高清以上规格的,视频不清晰会影响你学习的心情。

  • 要选择适合自己的,包括老师的水平,讲课方式等都可以作为参考依据。能让自己学下去、坚持下去的才是最好的

4. 第7步到第10步:循环往复

4.1第7步:开始学习,浅尝辄止

  • 学习过程中通常会犯两类错误:第一类错误是在知之不多的情况下就盲目开始,即行动太快;第二类错误是在行动之前准备过多,即行动太晚

  • 大多数人往往在没有准备的情况下,匆匆就开始了,等遇到了棘手的问题,往往手足无措,觉得难以入门难以学习,遂放弃。

  • 开始学习的这一步在于要适度。就怕野心太大,想要一口吃下整个蛋糕,已经知道了要学的所有内容,就想消化所有的资源。往往精力太过分散,导致各个部分内容均没有起色或成果很小,没有获得激励也就很难坚持下去。

4.2 第8步:动手操作,边玩边学

  • 单纯的学习书本、视频,进步往往很缓慢,一是动手操作的时候往往会出现各种各样的问题,二是看不到自己的进步,难以为继。

  • 这里的步骤是没有规则的,就是边学边做,将所学知识结合实际,达到学习效果最大化。纸上谈兵终觉浅,绝知此事要躬行。

4.3 第9步:全面掌握,学以致用

  • 好奇心是自学的重要组成部分

  • 根据你掌握的资源,解决你在实践中记录下的大量问题。同时深入了解各个主题。比如,阅读你要学习的语言、框架的源码。

  • 试着把自己正在学习的内容与最终目标关联起来。你掌握的每个模块,都应该以某种方式推动你向着终极目标前进。

4.4 第10步:乐为人师,融会贯通

  • 在这一步中,我会要求你走出自己的舒适区,将自己学到的知识教给别人

  • 要想确定你确实掌握了某些知识,这是唯一的办法;同时,在你将自己所学介绍给他人时,这也是查缺补漏的好办法。

  • 在这一过程中,你要切实剖析并理解自己所学的知识,将其内化到自己的思想;同时,你也要用能够让他人理解的方式精心组织这些信息。

5. 最后的思考

“十步学习法”并非一个神奇公式,能够让你瞬间变得聪明伶俐,但这种方法可以将你的学习过程更为结构化,而不是漫无目的地一头扎进浩瀚的知识海洋之中;这种方法通过利用人天生的好奇心来帮助你吸收更多的知识,而我们中大多数人正是在好奇心的驱使下才学到很多本领的。

这些步骤本身并不重要,这一学习过程背后的理念才是真正重要的。重点就是你要开发出一套适合自己的自学体系,一套你可以持续不断地加以运用而获得丰硕成果的方法体系

需要电子版书籍的小伙伴可以扫描侧边栏二维码,我整理了10G电子书,免费分享给大家。


http://www.niftyadmin.cn/n/1315085.html

相关文章

Java获取随机数的3种方法

方法1(数据类型)(最小值Math.random()*(最大值-最小值1))例:(int)(1Math.random()*(10-11))从1到10的int型随数方法2获得随机数for (int i0;i<30;i){System.out.println((int)(1Math.random()*10));}(int)(1Math.random()*10)通过java.Math包的random方法得到1-10的int随机数…

【硬核】MMU是如何完成地址翻译的

文章目录1. 什么是虚拟内存&#xff1f;2. 虚拟内存的作用3. 虚拟内存与物理内存3.1 CPU存取数据3.2 物理地址常用术语3.3 虚拟地址常用术语3.4 页表常用术语3.5 页命中/缺页4. 为什么有了高速缓存&#xff0c;还需要TLB呢&#xff1f;5. MMU是如何完成地址翻译的&#xff1f;5…

[日常训练]Z国特色社会路

Description 小$W$非常喜欢社会主义&#xff0c;这天他开始研究它的优越性。 他发现它们国家十分乐于修建特色的社会主义道路。具体的说&#xff0c;$Z$国有$n$座城市&#xff0c;由$m$条有向边连接&#xff0c;城市从$1$编号。 特色的地方在于&#xff0c;时不时会有一些$LD$下…

《深入理解计算机系统》(CSAPP)实验七 —— Malloc Lab

文章目录隐式空闲链表分离的空闲链表显示空闲链表1. 实验目的2. 背景知识3. Implicit listmm_initextend_heapmm_mallocfind_fitplacemm_freecoalescemm_realloc4. explicit listmm_initallocate_from_heapextend_heapinsert_to_free_listmm_mallocfind_fitplacedelete_from_fr…

【MIT6.S081/6.828】手把手教你搭建开发环境

文章目录1. 简介2. 安装ubuntu20.043. 更换源3.1 更换/etc/apt/sources.list文件里的源3.2 备份源列表3.3 打开sources.list文件修改3.4 刷新列表4. 安装SSH4.1 SecureCRT 报错4.2 解决方法4.3 修改ssh_config4.4 修改sshd_config4.5 重新启动服务并测试5. 配置静态IP6. 安装RI…

详解Linux中的fork,exec,wait

fork举例 #include "kernel/types.h" #include "user/user.h"int main() {int pid;pid fork();printf("fork() returned %d\n",pid);if(pid 0){printf("child\n");}else{printf("parent\n");}exit(0); }在第12行&#xf…

【MIT6.S081/6.828】Lab util: Unix utilities

文章目录1. sleep1.1 实验要求1.2 代码实现1.3 测试2. pingpong2.1 实验要求2.2 分析2.3 代码实现2.4 测试3. primes3.1 实验要求3.2 代码实现3.3 测试4. find4.1 实验要求4.2 ls代码分析4.3 代码实现4.4 测试5. xargs5.1 实验要求5.2 代码实现5.3 测试哈喽&#xff0c;大家好&…

嵌入式Linux必读经典书籍

最近&#xff0c;在知乎看到一个问题&#xff0c;“嵌入式Linux有哪些好书推荐”。我读研期间也喜欢收藏一些书籍&#xff0c;每次看到京东有活动&#xff0c;总是忍不住想买一些书籍回来。 随着时间越来越久&#xff0c;我买的书越来越多&#xff0c;但是都看完不太现实。后来…