马斯克坐在他们前面一排,正在电脑前打字。“我们心想,“这个呆子,他现在还能干吗?”这时马斯克突然转过身来,亮出了他制作的电子表格。“兄弟们,”他说,“我觉得我们可以自己造火箭。”
马斯克把他的笔记本电脑递给格里芬和坎特雷尔,他们惊呆了。表格里详细列明了建造、装配和发射一枚火箭所需的成本。根据马斯克的计算,他需要建造一枚大小适中的火箭,以满足那些搭载小型卫星和研究设备的细分市场的需求,这样就能节省一笔发射费用。他在表格中还列出了假设的火箭性能特性,内容十分详细。“我说,‘埃隆,你从哪里得到这些数据的?”'坎特雷尔说。
马斯克用了几个月的时间研究航天工业及其背后的物理原理。他从坎特雷尔和其他人那里借来了《火箭推进原理》( RocKet Propulsion E1ements)、《天体动力学基础》( Fundamentals of Astrodynam-ics )、《燃气涡轮和火箭推进的空气动力学》( Aerothermodynamics of Gas Turbine and RocKet Propul-sion ),还有其他各种专业书籍。马斯克仿佛又找到了童年时的状态,他努力吸收关于太空的一切知识,在这一系列近似冥想的学习过程中,他终于意识到,自己制造的火箭可以,而且也应该比俄罗斯人的更便宜。忘了老鼠计划吧。忘了可以回传生长影像的植物吧,它有可能在火星上死掉。通过更低的太空探索成本,马斯克可以激发人们重新思考太空探索。
——摘自《硅谷钢铁侠》
造火箭这种事,对于绝大多数人而言,也就吹吹牛逼而已。但马斯克勇于挑战,最后还真让他干成了。
对于跨学科的领域知识,马斯克也是花了不少时间先从基础教科书入手,然后将知识点与现有知识和经历进行关联,以转化为自己的知识,再作迁移学习与应用。哪怕最后他搞出来的可回收火箭比NASA还牛逼,技术上更加创新,但他也是先从底层的基础技术入手,以不变应万变。像计算机科学迅速发展了这么多年,出现了许多新技术,但底层的那些基础知识还是那一些,变化不大。
通常每个学科领域都有一些基础专业课,比如医学有四大基础课程:药理、病理、生理、解剖;计算机也有五大基础课程:操作系统原理、计算机组成原理、计算机网络、数据结构与算法、编译原理。
不过,对于刚接触新领域的人,一般不知道刚开始要学什么,这时搜索引擎就派上用场了。如果有认识的专业人士,问下自然是最快的,但这种情况可遇不可求,所以还是老实地google下吧。
刚准备学安全的时候,鬼知道要学啥,要看啥书。一头扎进图书馆,随便挑有“黑客”二字的,能看懂的就借来看,再后来发现“黑客”之书看多了没什么提升,于是开始学一些计算机专业的基础课,就这样不断地来回挑书借书读书,久而久之就知道该学什么了。
所以,判断一个人对新领域是真的感兴趣,还是仅仅好奇而已,最好的方式就是把他扔进图书馆,让他自己挑书看,一本不行再换一本,来回折腾个五六遍,看他能否坚持学习下去。
之前看过一则寓言故事:两个农夫上山砍柴,挑柴回家的路上,累了就在中途休息一下。期间一位农夫突发奇想,就问同伴:你说这皇帝每天会用什么挑柴?另一个人回答:肯定是用金扁担。
农夫受自身阅历限制,对不了解的事情,只能凭借已有知识来理解和猜测。不知与不会是两个概念,业余与专业的区别就在于此:专业者知道自己的不足,业余者则感觉专业的还不如自己。也就是说,专业者知道自己不会什么,业余者不知道自己不会什么。
自己都不知道哪里不足,就不知道要去学什么。帮助我从“不会”进阶到“不知”的是看雪学院,它让我知道了逆向工程、软件漏洞、内核驱动这些知识盲点。在看雪上知道了《加密与解密》、《网络渗透技术》、《0day安全:软件漏洞分析技术》这些经典书籍,但当时的我哪看得懂这些天书。最先看到的是网渗一书,当我翻开第一章的时候,我就懵逼了,什么GDB、SoftICE调试器、IDA反汇编器一类的工具,都是什么鬼啊?然后在安全焦点上看到介绍如何学习网渗一书的建议,其中就提到了《深入理解计算机系统》,然后我花了好长时间把这书读了两遍,还做了笔记。再跟着看雪精华集里的文章都多动手实践,crackme破解一遍,exploitme利用一遍。当时我就一个目标:读懂《网络渗透技术》。后来我大约花了三四年时间才达到这一目标(没办法,天赋不足,后天来凑)。所以,一个好的技术社区可以帮助自己提升认知,认清自己的知识盲点,从而找到适合自己的学习方向。
学习金字塔告诉我们,通过主动学习后,知识的留存率最高。什么是主动学习?就是说、写、教、做的输出式学习。
说:给学弟学妹们分享些技术,给企业/学校作培训,上学术/工业顶会演讲,都可以作为主动学习的方式。
写:作演讲也要写ppt或文章,给一些杂志/门户网站投稿,都可以帮助加深对知识的理解,有时还能顺便赚点稿费。直至后来出版社因为之前的技术文章找过来,才有了《漏洞战争》一书。
教:自己理解了是一回事,教会别人又是另一回事,要求更高,除了理解知识本身之外,还要以受教者可理解的话也讲述。特别是向非专业者讲述专业知识时,对教授者的知识理解程度更高。
做:就是应用实践,比如打CTF,刷漏洞悬赏平台。计算机技术是一项重实践的学科,编程、调试和挖洞无不如此,若毕业生刚来就大谈架构设计、设计模式,那谁来写代码呢?
兴趣是第一动力,但不是唯一的。
大学时代,很多人会去勤工俭学,牺牲自己休息和学习的时间。但我没这么干,因为我觉得勤工俭学与学习是个零和游戏,两者此消彼长,而我希望达到1 1>2的效果。当然,自己也不想去端盘子就是。
于是我选择给《黑客防线》投稿,一开始边翻译边学习,边学习边投稿,再拿稿费吃饭上网买书(当时没个人电脑),然后继续保持学习,从翻译到原创。为了写稿,就要不断地学习新知识,不然也没钱吃饭买书。就这样:
学习 —》写稿 —》赚钱 —》买书/上网 —》学习
自此建立起良性循环的学习动力,而内在的学习驱动力比努力的被动学习更加有效。
2013年,“自媒体”成为热词。2012年年末,“简书”上线,“今日头条”上线,“知乎”开放用户注册,微信推出订阅号。每个人都可以是媒体,每个人都可以提供知识服务。这一年,人均每周上网时间大幅增加到25小时,阅读一篇文章的平均用时却降到57秒。
——摘自《这样读书就够了》
现在每天快餐式的知识太多了,文章更多的是表达观点、方法或某些知识点的碎片化知识,一般都是不成体系的(但也不是绝对的,有些论文就写得很系统完整),需要自己加工吸收,将其与己有的知识领域关联并应用起来。
《这样读书就够了》介绍了一种方法,教你如何将碎片化知识进行加工,转化为自成体系的知识。
什么是体系?不是点,不是线,而是网,是立体的网络。
最初,你接收到的是一个知识点:
然后,你给这个碎片信息加上前因(为什么要这么做)后果(行动之后的结果):
其后再加上适用边界(如特定场景、前提条件、使用条件等等):
但这样的信息仍然是线性的,需要再加一个维度,让它变得立体,即与自己关联和互动起来:反思和行动。反思(A1)指向过去,行动(A2)指向未来。
这就是“举一反三”:为一个信息或知识点构建3个维度。加工后的信息不再是一个孤立的点,而是伸出了6根触角,等待与其他信息连接。当你有了多个这样加工过的知识点之后,不同知识点会相连,互相对接、榫合、支撑,形成一个晶格体系,这就是你自己的知识体系。
之前付费知识兴起时,我也在“得到”app上买了几门课,听的时候感觉很有道理,听完之后感觉啥也没留下。其中有门课叫《有效训练你的研究能力》,共6篇短文而已,网上搜索下就有,可以不用购买。虽然学完并不能有效训练你的研究能力,可操作性差些,但其中讲到的三种意识可以借鉴下。
作品意识:刻意地追求卓越
本质上就是刻意练习地去追求更好,也不是单纯地完成任务。比如做饭,多数人虽然做一辈子饭,但大多成不了专业厨师,缺乏的就是不断练习不断反思提升的作品意识。
目标意识:防止研究过程跑偏
在研究学习前,经常要收集资料,有时遇到自己感兴趣的资料,可能会多深入学习下,但学着学着就容易忘记原有目标了。所以,搜集资料既要足量,又要克制,避免过多偏离目标的资料干扰。
局外意识:保持研究的客观性
有时我们在调研对比竞品安全检测能力时,可能会直接用自己的测试样本库,而自研的安全系统已经专门针对自己的测试样本库作过对比,那对比结果肯定是有失偏颇的。最好的方式是使用多方样本库进行对比测试,以保证结论的客观性。所以在研究过程中,有时就要跳出局外,以旁观者的角度来看待以保证研究结论的公平可靠。
我是个容易产生知识焦虑的人,所以也干过一些伪学习的事。伪学习完全脱离了学习本身,仅仅是为了满足自我的良好感觉,帮助自己摆脱焦虑。个人认为的伪学习主要有以下几种情况:
- 单纯拼数量的学习:鼓吹一年要读100,300本书,一年要听多少在线课程,10分钟读透xx书籍等等。
- 追捧“大神”式的学习:缺乏辨别能力,盲目追随“大神”,网上各种买课程,想当然地以为听了“大神”的课,自己也变成大神了。
- 沉迷于不解决实际问题的学习:一整年看的都是不用思考的书籍,比如小说,只图一时爽,对提升能力无任何帮助。
- 干货收藏式学习:看个标题和开头,直接微信收藏,或存印象笔记,然后就没然后了。之前我也有过这种做法,后来一些看得慢的资料就干脆打印出来慢慢学习了。
本文主要介绍了一些学习方法和个人入门安全领域的一点经验,更多是想强调基础知识的重要性,输出式的主动学习能够实现更高效的学习,也介绍了知识体系建设方法和研究过程中需要注意的三个点,最后提醒大家避免进入伪学习的坑。第一次在手机上写这么长的文章,且个人经历有限,如有误欢迎指正探讨。