【技术修养】如何学习一门新技术/领域

引言

作为一个软件工程师,时刻都面临着新的技术,新的领域。做新的需求,需要用到不曾学过的技术,换了公司,业务方向有了大的改变。如何快速的了解一个新的技术/领域,是我们经常面对的难题。这里我简单聊聊我自己的一些想法和实践。

总的来说,我将如何快速学习一门新技术/领域的过程分为三步。enter new tech or territory

Research

Research 即学习资料的获取,好的资料是学习效果的第一前提。于我而言,我一般倾向于下面这几种渠道来获取资料。

  • google 搜索

    一般来说 Google 搜索的结果的质量会高一些。

    google + 英文搜索 > google + 中文搜索 > Baidu + 中文搜索

  • github

    打个比方,如果你想学习 java,你可以直接在 github 上检索 awesome java,这样你会找一个别人整理好的 repo, 里面是关于 java 学习的资料汇总。对 golang, python 等同理

    另外,如果你想学习某个技术栈,你可以直接搜索这个技术栈的 git 仓库,一方面,你可以研读这个技术的代码实现,同时,你也可以从这个 wiki 中找到相关的指引。

    另外,从官方的一些 repo 中,你可以关注一下里面的 PMC,commiter, 一般来说,这些都是对这个技术有过深入理解的人,你可以关注下这些人是否有写什么博客,是不是和你想学的技术相关。

  • 官方文档

    官方文档是学习技术的第一手资料。

  • 经典书籍

    我一般会在知乎和豆瓣上搜索相关的书籍,根据图书的评价来决定是否值得一读。另外,一般你在知乎上搜索如何某个领域的图书推荐,一些知乎的用户也会给出自己的推荐。

  • 极客时间

    极客时间里面的有些课程还是挺好的,值得学习。

  • 开源博客或文档

    就像我现在维护的自己的小站,网上也有很多开源的博客和开源文档。其中不乏高质量的。当然,一般你可以通过 google 来找到这些网站。

  • YouTube

    youtube 上有很多技术博主和技术教程,而且对于有些技术来说,先看一遍视频,感受一下技术最终的落地效果会加快你的学习进度和你对技术的理解。

Learning&Practice

当检索好资料后,就进入了学习阶段。一般来说,如果是工程性质比较强的技术,光阅读资料是不够的,还得动手实践才行。

我个人的实践是,先看一遍资料。有了一个基本的理解之后,我会开始做一个小的 demo 项目,先跑起来。感觉只有这样,这个技术才算是初步的技术落地了。跑 demo 是我个人认为学习技术栈和组件最重要的一步。

至于学习计划的执行,这个就看每个人的自制力和时间安排了。

Summarize

学习的总结是很有必要的。

在上一步学习和练习的过程中,最好是有做笔记的习惯。好记性不如烂笔头,在记笔记的过程中,也会加深你的理解,并且方便你日后复习和总结。

另外,在学习完一门技术/领域之后,可以做一个简单的归纳或者脑图,梳理成一个知识框架,加入到你原先的知识框架之内。这样方便我们站在一个全局的维度去理解。

笔记软件来说,我个人是采用 markdown + git repo 的形式来进行管理的。当然有些人习惯用 notion 或者其他的笔记软件也都 OK。重要是合适自己的习惯就行。