热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

系统性学习与碎片化学习

4-27在小密圈接到第一次付费提问,喜获8块。庆祝一下。这个话题也是我在小密圈里和那位同学的交流时产生的。他说他“学习的知识也不系统化”,“学习的知识也比较混乱”。“不系统”暂时没

4-27在小密圈接到第一次付费提问,喜获8块。庆祝一下。

这个话题也是我在小密圈里和那位同学的交流时产生的。他说他“学习的知识也不系统化”,“学习的知识也比较混乱”。“不系统”暂时没有好办法,但比较混乱一定是个问题,但是几句话说不清楚,所以构思了半天,准备写一篇文章来回应。

TL;DR: 中心思想:

我们以前熟悉的,以学校培训为主要形式,所谓“系统性学习法”,很难适应新时期互联网开发的需求。我们必须掌握碎片化学习法,即在快速建立起基础知识体系后,利用碎片时间,有目的有针对性的吸取专业知识,将其拼接到知识体系之上。使自己能够快速成长,在需要的时候还能及时切换学习方向。

系统性学习

我们最熟悉的学习方法,是“系统性地学习”。从6、7岁上小学开始,经过初高中,一直到大学,几乎都是“系统性地学习”。有人替我们把知识点总结归纳整理成教材,按照从浅入深,先易后难的顺序编排好;保证其中逻辑关系的循序渐进,前因后果;然后规定多长时间学多少内容为合适,多长时间为一个里程碑要进行一次怎样的考试。于是只要智商正常不要偷懒,跟着老师按部就班一二三四五地学,基本最后都能学会。至少,都能通过考试。

然而这套流程里面有一些隐含前提:

  1. 教材和大纲适应生产需求

  2. 考核考试反应生产需求

  3. 市场愿意等待学员慢慢学习,学成归来

在传统行业传统理念里,这样的模式不无不可。然而面对软件开发,尤其是前端开发,这样做就不合适了。近些年,前端的市场需求大大增加,带动大量从业人员涌入,也促使大家努力从其他语言和技术中吸取营养,或者想方设法用现有手段解决眼下的问题。于是,前端技术取得飞速发展,版本号和 API 的升级换代速度之快,连写书的人都追赶不上,更别提教材了。

这种趋势虽然不会持续太久,但另一个趋势随之而来:大家已经不甘于只做浏览器相关开发(本职),而是通过各种转译方案,向服务器端移动端开拓新边疆。其它语言的开发者也是如此。所以,我们必须认清这个现实:作为一名开发者,在可以预见的将来,指望像学校那样,有教材有教学计划,有每日作业定期考试,这样的系统性学习可能在也有不会有了。即使有,市场也等不到你学成归来,那时候,早有掌握新的学习方法,掌握新的工作技能的人占据要位。

碎片化学习

我们必须学会碎片化学习。

碎片化学习绝不是东一脚西一脚,学到什么是什么,而是像拼拼图一样,通过碎片化学习收集知识技能要点,最终拼出自己的知识框架。

碎片化学习也要讲究方法,比如我以前写的 谈学习:读源码 和 面试经:GitHub 都有提到碎片化学习的误区,并较之以正确的方法。那么,完整的正确的碎片化学习方法是怎样的呢?

人类认识世界的过程

我们回想一下人类认识世界的过程,很明显,那是一个循环往复的过程:

  1. 看到现象:日升日落,斗转星移

  2. 得到初级模型:我们生活在四头大象驮着的一块四方形棋盘式的大陆上,大象下面是巨型海龟,在宇宙中遨游

  3. 模型无法解释现象:航船从地平线出现,是先露出桅杆,然后才是船体

  4. 模型升级:地球是圆的

  5. 模型无法解释现象:星轨不是纯圆以地球为圆心

  6. 模型升级:日心说

  7. (如此反复)

重复这个过程,也可以帮我们建立现代开发的知识体系。

碎片化学习的要素

结合我的经验,它应该分为五个部分:

  1. 尽快建立起基础的知识体系

  2. 通过碎片化的学习收集知识,将其填补到知识体系之上

  3. 让知识体系慢慢成长

  4. 通过真实项目的实际操练,寻找自己知识体系的不足之处,学习补足

  5. 关注本行业内的高人名家,帮助自己确定方向

接下来逐一解释。

首先,应该建构起基础的知识体系

碎片化学习仍然需要完整系统的知识体系。只不过这里的知识体系是由我们自己建立起来的,只包含基础概念,我称它为知识体系v2.0;相对于传统系统性学习建构的、意图在结束学习后立刻解决所有专业问题的知识体系v1.0,它要简单得多:只由这个知识体系的不可变的基础概念构成。

不用担心它小,不完整,我们接下来就是不断丰富不断扩展它。

碎片化收集知识,将其填补在知识体系之上

离开校园之后,我们很难找到大块的时间集中专门学习,只能把学习环境搬到地铁上、公交站、电梯间,利用各种碎片化的时间,见缝插针进行学习。这个时候,想啃掉一本几百页的大部头变得非常困难。但是利用这些时间,一次只记住一个属性或者一个选择器的用法,就还算简单。

我常用的碎片化学习方法包括:

  1. 在微博上 Twitter 上关注一些技术达人,技术营销号,及时了解技术发展动态

  2. 关注一些常用项目的官方博客,必看更新日志

  3. 时不时去一些技术论坛翻看一下

  4. 遇到不确定的地方,立刻去翻官方文档;文档无法直接说清楚的地方,自己写成博客记下来

碎片化学习的知识点一定要拼到知识体系上才算数,无论是“读源码”还是“上 GitHub 看别人的项目”,都很难把别人知识拼到自己的拼图上,所以,自然就是不科学不推荐的学习方式。

知识体系也要碎片化

系统性学习的知识体系,比如我们上学时候学语数外政史地物化生,都很庞大。其中概念的关联也很紧密。这建立在前人大量投入教育领域规划总结的基础之上。我们开发领域没有人做这样的事情,也没有那么完整的时间让我们去尽善尽美,所以这个时候我们就必须把知识体系也碎片化,每个知识体系只包含完整语言的一部分内容,然后让它慢慢成长。

通过真实项目的操练,查缺补漏

这一点很重要!

只是跟着别人学,很容易产成“学到”的感觉,即:“哦,原来是这样。”不得不说有不少同学都停留在这个层次,尤其是的面试的时候,很多同学都会在自己简历里堆砌关键词,但是稍微往深处一问就卡壳了,这多半是因为没有实操过,没有真实的经历踩坑与爬坑。

实操的方式有两种,一是在公司的正式项目中使用。这一方面需要自己付出,先摸索个大概;另一方面也要争取领导和同事们的支持。不过一旦推进起来,会给自己带来巨大的提升。当然,在公司里推进新技术新想法未必需要那么激进,直接一上就是完整的框架,推翻之前的重做。完全可以一点一滴,从小处入手,循序渐进。

另外一种就是做业余项目。不过这个项目一定要是完整、目的明确的项目,做出来后有人用,你才会去改进它,才会发现绕不开的坑,填上之后才会获得提升。如果只是弄个小仓库,把范例 Hello world 丢进去能跑起来,是完全不作数的。想不出来做什么,仿一个别人的项目也是可以的;做出来至少自己要用,用的不爽改一改,慢慢的,就能感受到进步了。

关注前辈高人,寻找前进方向

有些同学只依赖公司业务成长,公司只做某些事情,他就只会做某些事情,一段时间后,觉得学不到东西,就跳槽,然后目标薪资随便涨个30%就可以(原帖找不到了)……这样自然是不科学的。所以很有必要关注一些前辈高人,以他们为目标修订自己的方向。

PS:最近面试了不少人,大家普遍比较关注阮一峰,这里提醒大家一下阮先生的文章一定要批判的看,一定。

碎片化学习实例:CSS

这里我们拿 CSS 来举个例子:

a {
color: red;
}

它的基础知识体系非常简单:

  1. 选择器 + 属性名 + 属性值

  2. 可以 标签赋予新的样式

初期我们知道它可以修改元素呈现的样式,然后知道它由三个基础元素组成,然后我们就可以围绕选择器、属性、属性可选值来进行碎片化学习。这个时候我们可能认为 CSS 只能改改字体样式、改改边框、弄弄布局尺寸,没关系,这很正常。

一段时间之后,我们突然发现有人用纯 CSS 做出来非常炫酷的组件和效果,原来 CSS 还可以这样用!很好,我们把它纳入我们的知识体系。如此,慢慢的,知识体系就从小小的幼芽,茁壮成长,开枝散叶,直到能应付大部分工作。

在工作的时候,我们要主动把新学到的知识应用到作品中。比如以前布局只会 float,但是经过学习,我们了解到 flexbox 更适合做横向布局,并且几乎所有浏览器都支持,那么我们就可以开始应用它。

工作一段时间,我们感觉 CSS 已经没什么难得倒我们的了,就可以看看张鑫旭的博客,了解一下这个行业最舍得伏下身体研究的人在琢磨什么,有哪些可以借鉴的。

总结

一不小心扯了很多。回顾一下,我认为至少在开发领域,离开校园加入工作之后,再想系统的学习已经不太可能了,一方面几乎没有真正可靠的服务,另一方面市场也等不及。所以我们必须掌握碎片化学习的方法:先建立一个基础的知识体系,然后通过碎片化学习讲知识点填补在这个体系之上,让它生根发芽,开枝散叶,直到覆盖大部分必须的场景;接着还要想办法进行实战演练,保证自己是真的学到了;最后,通过关注行业达人,寻求新的方向。

同步发于我的博客


推荐阅读
  • 高效解决应用崩溃问题!友盟新版错误分析工具全面升级
    友盟推出的最新版错误分析工具,专为移动开发者设计,提供强大的Crash收集与分析功能。该工具能够实时监控App运行状态,快速发现并修复错误,显著提升应用的稳定性和用户体验。 ... [详细]
  • 深入理解OAuth认证机制
    本文介绍了OAuth认证协议的核心概念及其工作原理。OAuth是一种开放标准,旨在为第三方应用提供安全的用户资源访问授权,同时确保用户的账户信息(如用户名和密码)不会暴露给第三方。 ... [详细]
  • 资源推荐 | TensorFlow官方中文教程助力英语非母语者学习
    来源:机器之心。本文详细介绍了TensorFlow官方提供的中文版教程和指南,帮助开发者更好地理解和应用这一强大的开源机器学习平台。 ... [详细]
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • 本文详细探讨了Java中的24种设计模式及其应用,并介绍了七大面向对象设计原则。通过创建型、结构型和行为型模式的分类,帮助开发者更好地理解和应用这些模式,提升代码质量和可维护性。 ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • 本文详细介绍了Java中org.eclipse.ui.forms.widgets.ExpandableComposite类的addExpansionListener()方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。这些示例来源于多个知名开源项目,具有很高的参考价值。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 本文详细介绍了macOS系统的核心组件,包括如何管理其安全特性——系统完整性保护(SIP),并探讨了不同版本的更新亮点。对于使用macOS系统的用户来说,了解这些信息有助于更好地管理和优化系统性能。 ... [详细]
  • 2023年京东Android面试真题解析与经验分享
    本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ... [详细]
  • 在使用 MUI 框架进行应用开发时,开发者常常会遇到 mui.init() 和 mui.plusReady() 这两个方法。本文将详细解释它们的区别及其在不同开发环境下的应用。 ... [详细]
  • 解决微信电脑版无法刷朋友圈问题:使用安卓远程投屏方案
    在工作期间想要浏览微信和朋友圈却不太方便?虽然微信电脑版目前不支持直接刷朋友圈,但通过远程投屏技术,可以轻松实现在电脑上操作安卓设备的功能。 ... [详细]
  • Ralph的Kubernetes进阶之旅:集群架构与对象解析
    本文深入探讨了Kubernetes集群的架构和核心对象,详细介绍了Pod、Service、Volume等基本组件,以及更高层次的抽象如Deployment、StatefulSet等,帮助读者全面理解Kubernetes的工作原理。 ... [详细]
author-avatar
岁月如风晓
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有