极客时间已完结课程限时免费阅读

加餐七 | 基础学科的知识如何转化成实际的技术生产力?

加餐七 | 基础学科的知识如何转化成实际的技术生产力?-极客时间

加餐七 | 基础学科的知识如何转化成实际的技术生产力?

讲述:冯永吉

时长06:42大小6.13M

我相信,很多程序员都已经意识到基础知识的重要性,觉得要夯实基础,才能走得更远,但同时对于如何将基础知识转化成开发“生产力”仍然有些疑惑。所以,你可能看了很多基础的书籍,比如操作系统、组成原理、编译原理等,但还是觉得很迷茫,觉得在开发中用不上,起码在平时的 CRUD 业务开发中用不上。
实际上,这些基础的知识确实很难直接转化成开发“生产力”,但并不代表就没有用,今天,我们聊一聊为什么要学习基础学科知识,以及基础学科知识是如何转化成“生产力”的?
话不多说,让我们正式开始今天的内容吧!

没有直接用得上并不代表没有用

很多人反映,大学里学的很多基础学科都没用,工作之后都用不到。这种感觉是没错的。实际上,不只是基础学科,任何一门技术,能够经常用在工作中的那部分,都只占 20% 左右。这也符合我们常说的“二八法则”。
不知道你有没有听过这样一个故事:有一个人想要一个葫芦,于是他就种了一棵葫芦树。葫芦树叶子生了虫子,有人建议他赶紧杀杀虫。这个人却说,我要的是葫芦,管葫芦叶子干嘛。你可能会觉得,故事里的这个人的想法很荒唐,但其实我们也经常犯这种错误。比如说,类比到我们学知识,尽管常用的可能只有 20%,但这并不代表我们只需要学习那 20% 就够了。要想得到那 20% 最有用的知识,我们需要学习很多周边知识做铺垫才行。
实际上,我多次强调,构建一个完善的知识体系、知识框架很重要。有些知识能直接转化成生产力,有些知识是为了学习其他知识充当“脚手架”。要想对应用层的知识学得比别人快、学得比别人透彻,铺垫性的基础学科知识就必不可少。

现在用不到并不代表以后用不到

你可能会说,我科班出身、基础扎实,但跟其他培训出身、只会使用框架干活的同事,在工作中的表现差不多啊,并没有感觉到有太多优势。实际上,如果只是做比较“低级”的 CRUD 工作,项目本身没有难度、没有挑战,那基础再扎实、技术再好,可能也都发挥不了你的优势,跟其他人拉不开差距。这就相当于跟大妈在菜市场比算账,你高数、微积分学得再好都没用,都比不上大妈算得快。但换个有挑战的工作环境、换个有难度的项目,又或者当你成为更高级别的工程师的时候,这些基础知识可能就会用得上了。
编程这件事本来就不难,随便培训 3、5 个月,就能上手干活。基础知识掌握得牢固,在工作初期,可能确实体现不出优势,毕竟大家都是从最基础、最没有技术含量的活干起的。在初期,那些框架、工具用得熟练的人,反倒更有优势,更容易出活、干得更快。但是,只会框架、工具的人,技术天花板是很低的,很多东西都只能学得一知半解、无法深入,很快就会遇到技术成长的瓶颈。相反,基础扎实的人更经得起时间的考验,技术研究的越深入,优势就会越明显。尽管基础知识短期内没法给你带来收益,但长远来看会持续发挥作用。
很多知识用不到,可能只是暂时用不到。书到用时方恨少。等到用到了,再去学习,就有点来不及了。基础学科知识学起来比较慢,所以,还是要在平时多下功夫,提前学扎实。学习基础学科的知识,不能太急功近利,只看重眼前的利益。

学了记不住并不代表就是白学了

对于知识的学习,特别是偏理论的基础学科知识的学习,有很多人说,学完之后,关上书啥都回忆不起来,学完不用,过不几天就忘得干干净净。其实,这些现象是很正常的。实际上,如果你一直追求“记住”“不忘”,那就还是应试教育的思维方式。
知识是用来解决问题的,而不是用来记忆考试的。说句实话,你可能不信,我在写这两个专栏的时候,写完后面的就忘了前面的,全部写完之后,基本就都忘得差不多了。不过,因为我在脑海里构建了整个的知识框架,并且大部分知识难点都已经被我攻克,所以,当工作中需要某块知识的时候,即便细节记不清了,我也只需要稍微查看一下资料,就能全部回忆起来。
除此之外,学习本身就是一种能力的锻炼。比如,我们在学习算法和设计模式这两个专栏的过程中,从最基础的自学能力、理解能力、逻辑思维能力,到时间空间复杂度分析能力、分析发现解决代码问题能力,都有锻炼到。所以,即便知识的细节忘记了,也并不妨碍我们编写出高性能、高质量的代码。这种对能力的锻炼,比单纯的知识记忆要有意义得多。
我之前还听过这样一个故事。给一个 3 岁的小孩每天读一篇希腊文写成的文章,坚持 1 年的时间。等小孩长大一点之后,拿之前文章里的内容再考他,他完全回忆不起来。但当他开始学习希腊文的时候,他比其他同龄人学得都要快。从这个故事中,我们可以发现,忘记并不等于就白学了,学习对于一个人的影响是潜移默化的。基础学科知识的学习更是如此。你要相信,它总有一天会发挥作用的 ,机会都是给有准备的人,我们要学会“延迟满足”。
总结一下,比起编程语言、框架、工具,基础学科知识确实很难直接转化成生产力,但它却是你构建整个“技能树”的根本,构建整个“知识大楼”的地基。基础掌握不牢,你对很多应用层技术的理解就会不够有深度,略知皮毛,只能做个技术熟练工。相反,基础扎实能让你学东西更快、更有深度、理解更透彻,也就间接地增强了你的开发能力。可以这么说,在一定程度上,基础知识本身,就是技术生产力。

课堂讨论

你觉得计算机的基础学科知识有哪些?聊一聊你对学习基础科学知识重要性的认识。
欢迎留言和我分享你的想法,如果有收获,也欢迎你把这篇文章分享给你的朋友。
分享给需要的人,Ta购买本课程,你将得29
生成海报并分享

赞 36

提建议

上一篇
加餐六 | 什么才是所谓的编程能力?如何考察一个人的编程能力?
下一篇
加餐八 | 程序员怎么才能让自己走得更高、更远?
 写留言

精选留言(32)

  • 成楠Peter
    2020-07-03
    最近在看《操作系统导论》,真的是操作系统中最易懂的一本书。
    共 5 条评论
    31
  • tingye
    2020-07-03
    深有同感,就像家人都觉得学计算机的应该会修电脑一样,对于我们专业的人来讲,其实那个层次不高,体现不出我们的价值。 又比如一直苦恼的学了就忘,确实更应该关注的是分析问题解决问题的能力,要用的时候知道搜索什么关键词,并且很快能用起来也是能力。 最理想的面试应该给出个实际问题,让人设计实现,不限制用搜索引擎,考察解决问题的过程,而不是死记硬背一些知识和算法,一到工作还是只会拧螺钉
    展开
    16
  • Monday
    2020-07-03
    数据结构与算法,计算机组成原理,编译原理,计算机网络,操作系统
    14
  • 数学汤家凤
    2020-07-03
    计算机组成原理 计算机操作系统 算法与数据结构 计算机网络 408四大金刚,去年考研准备了一年,半年没碰几乎忘光,前俩天翻了翻计组,一下午知识也回忆起来了七七八八
    11
  • Jxin
    2020-07-03
    1.基础知识: 数据结构与算法,计算机组成原理 ,编译原理,网络协议。 2.内功心法:编码规范,oo方法,设计原理与设计模式,ddd,分布式架构设计 3.《设计原理与设计模式》已经成了我的工具专栏,可以时常翻阅。
    9
  • 依韵
    2020-07-03
    知识不等于技能,到感觉有的知识是会长在你的脑子里,可以促进你对技能的掌握
    9
  • 南山
    2020-07-05
    越工作长,越想往前走,对基础的重要性感触越深,给自己加油,坚持住!
    6
  • Allen
    2020-09-17
    大学基础课程:计算机基础、计算机网络、数据库、操作系统、数据结构与算法其实都是非常有用的 了解计算机基础组成,才能深入理解CPU线程调度,磁盘、内存、CPU之间的联系 了解计算机网络,才能理解TCP/IP协议,HTTP协议等,甚至可以据此定位到问题出在哪一层网络架构,减少沟通成本 等等等等
    展开
    5
  • Jie
    2020-07-03
    前置技能不点足门槛,技能树最深层的大招是用不了的。 物理系毕业的码农表示数学是最重要的基础学科知识,不仅是很多其他基础的基础,锻炼出的思维能力也是受益终身的。
    共 1 条评论
    5
  • 微末凡尘
    2020-07-17
    罗马不是一天建成的,学习的过程也不是一个线性的过程,遇到瓶颈很正常,只要坚持学习,总会量变引起质变的,延迟满足感,向作者学习~
    2
  • williamcai
    2021-05-05
    操作系统,最复杂也最重要,因为它是我们程序运行的基座和载体;编译原理,词法分析,语法分析,优化比较枯燥,但是有助于理解编译到底干了啥;数据库,数据管理系统,做业务天天要用;计算机组成原理,比较抽象,讲了软件和硬件的体系结构,软件和硬件如何协调工作的
    1
  • Gopher
    2020-09-27
    就和学英语一样,上学的时候觉得背单词 学英文没啥用,也没机会说,但是到开发工作中,看英文文档和原版书籍就很需要了
    1
  • mghio
    2020-07-04
    操作系统 计算机网络原理 数据结构与算法
    1
  • 沁塵
    2020-07-04
    “抓大放小”很重要。
    1
  • 2020-07-03
    操作系统,计算机网络,数据库,数据结构+算法,计算机组成原理+计算机体系结构 基本上是科班的五大基石了
    1
  • 铁生
    2020-07-03
    我觉得操作系统和算法是最好理解的了。
    1
  • 业余爱好者
    2020-07-03
    基础知识的学习特点: 可能不会直接用上,更多充当幕后角色。 可能一时用不上,是个长期投资。 学了容易忘,但不代表白学
    1
  • 辣么大
    2020-07-03
    刚进项目组,很多工具还不太会用。早上起来的时候纠结了一下是学学工具怎么用还是看专业基础书。最后还是选择二刷汤老师的《操作系统》。
    共 1 条评论
    1
  • 东方奇骥
    2020-07-03
    操作系统,计算机网络,数据结构与算法……
    1
  • freesocean
    2021-10-29
    有一个直觉就是,基础知识就是那种你觉得挺枯燥,学不懂,费劲,但是听别人说起,就隐约觉得很牛逼的东西,往往就是基础性的东西。它们的共同点是不是一天两天,甚至不是一个月两个月就能掌握,所以往往需要花笨功夫,耐心去学,而这也是为什么有些人看起来很厉害,而有些人是真的厉害。