如何学习一门技术

作为一个终身学习的实践者 , 我经常有学习一些新技术的需求 。 如何学习这些新技术不同人有不同的做法 , 早前我也写过一篇如何快速学习一项新技能?的文章分享我学习的理论框架 , 但这篇文章我会以我学习WebRTC这个技术为例分享我在学习新技术时用的一些方法 。
如何学习某个知识 , 在我看来 , 主要矛盾在于解决这三个问题 。
在学习一门新技术前需要解决的第一个问题是 。 就像买书最大的成本并不是买书的价格 , 而是看书的时间 。 花费大量的时间去看一本没有价值的书 , 无异于浪费生命 。 正是方向搞错了 , 越努力越尴尬 。
怎么确定一门技术的价值 , 可以从以下两个方面来考虑:
某门技术经常不是孤立存在的 , 而是一个积木般搭建的大厦的一部分 。 要学习顶部的技术 , 就需要掌握一定的底部技术 。 如果一个技术很基础很底层 , 被很多高层的技术所依赖 , 那学习这门技术就很有价值 。 如果一门技术很有市场“钱景” , 或者有潜在的市场需求 , 那学习这门技术就很有价值 。 毕竟我们学习目的很大的一部分在于赚钱解决自己的生活问题 。不过这里的难点在于从我们已知的信息来分析 , 很难判断某门技术的市场前景 。 如果分析判断错误 , 很可能会导致我们学习这门技术的时间被浪费 。 那最佳的选择的就是尽可能让自己所学的技术都满足这两点 , 哪怕最后没有市场前景 , 但如能成为我们知识体系的基础 , 也值得投入时间去学习 。
基于这两方面的考虑 , 我开始学习了分布式系统的一些底层知识:
如何学习一门技术
文章图片
之后通过搜索间接找到了基于webrtc技术的语音聊天网站speakrandom , 在分析这个网站技术栈的时候找到了pion/webrtc这个框架 , 最终决定从这个框架入手开始学习WebRTC 。
在制定了学习目标之后 , 剩下的问题是怎么怎么学?学习方法千万条 , 重要的是找到适合自己的学习方法 。
我的方法是 。 学习本身不应是一件复杂的事情 , 因为它不是做研究 , 不是探索未知的东西 , 只是站在巨人的肩膀上把已经被解决的问题学习一遍 。
但这里的难点在于资料千万份 , 一不小心就找到错误的资料 , 让本来简单的学习变得复杂 , 这就像天龙八部鸠摩智学了段誉给的错误的六脉神剑剑诀 , 很容易学的走火入魔 。
主动获取资料方式的要点在于从错误少的信息库筛选、交叉对比选择要看的资料 。 由于很多技术资料都是用英文写的 , 用Google英文搜索更容易获取高质量的资料 。 另外使用Google图片关键词搜索可以快速获得架构方面的资料 , 方便从高层次理解这个技术 。
一般我会从Google、YouTube和GitHub上搜索某个技术相关的资料、视频教程和开源库 。 以搜索切入 , 找到合适的开源项目或者技术标准 , 然后制定学习计划 。 很容易通过webrtc关键词在这些平台上搜索得到这些资料和教程:
GitHubYouTubeWebRTCCrashCourseGoogleBuildthebackendservicesneededforaWebRTCapp:STUN,TURN,andsignaling-HTML5Rocks从pion/webrtc这个库上了解到作者是@SeanDuBois , GitHub关注一波然后去YouTube搜索下他的演讲 , 又收获了一波高质量的教程:
如何学习一门技术
文章图片
另外一个高质量的资料是协议标准 , 比如IETFRFC文档 。 搜索一番后找到WebRTC相关的标准:
从这个W3C制定的标准里又可以看到很多IETFRFC的资料 。 了解这些技术标准有助于我从高层次理解这个技术的一些特性 。 当然这些标准的细节我暂时不会去看 , 等到需要了解细节的时候再去看 。