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

王争 2020-07-03

108 - 图1

00:00

1.0x

讲述:冯永吉大小:6.13M时长:06:41

我相信,很多程序员都已经意识到基础知识的重要性,觉得要夯实基础,才能走得更远,但同时对于如何将基础知识转化成开发“生产力”仍然有些疑惑。所以,你可能看了很多基础的书籍,比如操作系统、组成原理、编译原理等,但还是觉得很迷茫,觉得在开发中用不上,起码在平时的 CRUD 业务开发中用不上。

实际上,这些基础的知识确实很难直接转化成开发“生产力”,但并不代表就没有用,今天,我们聊一聊为什么要学习基础学科知识,以及基础学科知识是如何转化成“生产力”的?

话不多说,让我们正式开始今天的内容吧!

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

很多人反映,大学里学的很多基础学科都没用,工作之后都用不到。这种感觉是没错的。实际上,不只是基础学科,任何一门技术,能够经常用在工作中的那部分,都只占 20% 左右。这也符合我们常说的“二八法则”。

不知道你有没有听过这样一个故事:有一个人想要一个葫芦,于是他就种了一棵葫芦树。葫芦树叶子生了虫子,有人建议他赶紧杀杀虫。这个人却说,我要的是葫芦,管葫芦叶子干嘛。你可能会觉得,故事里的这个人的想法很荒唐,但其实我们也经常犯这种错误。比如说,类比到我们学知识,尽管常用的可能只有 20%,但这并不代表我们只需要学习那 20% 就够了。要想得到那 20% 最有用的知识,我们需要学习很多周边知识做铺垫才行。

实际上,我多次强调,构建一个完善的知识体系、知识框架很重要。有些知识能直接转化成生产力,有些知识是为了学习其他知识充当“脚手架”。要想对应用层的知识学得比别人快、学得比别人透彻,铺垫性的基础学科知识就必不可少。

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

你可能会说,我科班出身、基础扎实,但跟其他培训出身、只会使用框架干活的同事,在工作中的表现差不多啊,并没有感觉到有太多优势。实际上,如果只是做比较“低级”的 CRUD 工作,项目本身没有难度、没有挑战,那基础再扎实、技术再好,可能也都发挥不了你的优势,跟其他人拉不开差距。这就相当于跟大妈在菜市场比算账,你高数、微积分学得再好都没用,都比不上大妈算得快。但换个有挑战的工作环境、换个有难度的项目,又或者当你成为更高级别的工程师的时候,这些基础知识可能就会用得上了。

编程这件事本来就不难,随便培训 3、5 个月,就能上手干活。基础知识掌握得牢固,在工作初期,可能确实体现不出优势,毕竟大家都是从最基础、最没有技术含量的活干起的。在初期,那些框架、工具用得熟练的人,反倒更有优势,更容易出活、干得更快。但是,只会框架、工具的人,技术天花板是很低的,很多东西都只能学得一知半解、无法深入,很快就会遇到技术成长的瓶颈。相反,基础扎实的人更经得起时间的考验,技术研究的越深入,优势就会越明显。尽管基础知识短期内没法给你带来收益,但长远来看会持续发挥作用。

很多知识用不到,可能只是暂时用不到。书到用时方恨少。等到用到了,再去学习,就有点来不及了。基础学科知识学起来比较慢,所以,还是要在平时多下功夫,提前学扎实。学习基础学科的知识,不能太急功近利,只看重眼前的利益。

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

对于知识的学习,特别是偏理论的基础学科知识的学习,有很多人说,学完之后,关上书啥都回忆不起来,学完不用,过不几天就忘得干干净净。其实,这些现象是很正常的。实际上,如果你一直追求“记住”“不忘”,那就还是应试教育的思维方式。

知识是用来解决问题的,而不是用来记忆考试的。说句实话,你可能不信,我在写这两个专栏的时候,写完后面的就忘了前面的,全部写完之后,基本就都忘得差不多了。不过,因为我在脑海里构建了整个的知识框架,并且大部分知识难点都已经被我攻克,所以,当工作中需要某块知识的时候,即便细节记不清了,我也只需要稍微查看一下资料,就能全部回忆起来。

除此之外,学习本身就是一种能力的锻炼。比如,我们在学习算法和设计模式这两个专栏的过程中,从最基础的自学能力、理解能力、逻辑思维能力,到时间空间复杂度分析能力、分析发现解决代码问题能力,都有锻炼到。所以,即便知识的细节忘记了,也并不妨碍我们编写出高性能、高质量的代码。这种对能力的锻炼,比单纯的知识记忆要有意义得多。

我之前还听过这样一个故事。给一个 3 岁的小孩每天读一篇希腊文写成的文章,坚持 1 年的时间。等小孩长大一点之后,拿之前文章里的内容再考他,他完全回忆不起来。但当他开始学习希腊文的时候,他比其他同龄人学得都要快。从这个故事中,我们可以发现,忘记并不等于就白学了,学习对于一个人的影响是潜移默化的。基础学科知识的学习更是如此。你要相信,它总有一天会发挥作用的 ,机会都是给有准备的人,我们要学会“延迟满足”。

总结一下,比起编程语言、框架、工具,基础学科知识确实很难直接转化成生产力,但它却是你构建整个“技能树”的根本,构建整个“知识大楼”的地基。基础掌握不牢,你对很多应用层技术的理解就会不够有深度,略知皮毛,只能做个技术熟练工。相反,基础扎实能让你学东西更快、更有深度、理解更透彻,也就间接地增强了你的开发能力。可以这么说,在一定程度上,基础知识本身,就是技术生产力。

课堂讨论

你觉得计算机的基础学科知识有哪些?聊一聊你对学习基础科学知识重要性的认识。

欢迎留言和我分享你的想法,如果有收获,也欢迎你把这篇文章分享给你的朋友。

25人觉得很赞给文章提建议;)

108 - 图2

© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。

108 - 图3

张创琦

Ctrl + Enter 发表

0/2000字

提交留言

精选留言(32)

  • 108 - 图4
    成楠Peter
    最近在看《操作系统导论》,真的是操作系统中最易懂的一本书。
    2020-07-03
    _4
    _26

  • 108 - 图5
    Monday
    数据结构与算法,计算机组成原理,编译原理,计算机网络,操作系统
    2020-07-03

    __13

  • 108 - 图6
    tingye
    深有同感,就像家人都觉得学计算机的应该会修电脑一样,对于我们专业的人来讲,其实那个层次不高,体现不出我们的价值。
    又比如一直苦恼的学了就忘,确实更应该关注的是分析问题解决问题的能力,要用的时候知道搜索什么关键词,并且很快能用起来也是能力。
    最理想的面试应该给出个实际问题,让人设计实现,不限制用搜索引擎,考察解决问题的过程,而不是死记硬背一些知识和算法,一到工作还是只会拧螺钉
    2020-07-03

    __11

  • 108 - 图7
    数学汤家凤
    计算机组成原理 计算机操作系统 算法与数据结构 计算机网络 408四大金刚,去年考研准备了一年,半年没碰几乎忘光,前俩天翻了翻计组,一下午知识也回忆起来了七七八八
    2020-07-03

    __9

  • 108 - 图8
    依韵
    知识不等于技能,到感觉有的知识是会长在你的脑子里,可以促进你对技能的掌握
    2020-07-03

    __8

  • 108 - 图9
    南山108 - 图10
    越工作长,越想往前走,对基础的重要性感触越深,给自己加油,坚持住!
    2020-07-05

    __6

  • 108 - 图11
    Jxin
    1.基础知识: 数据结构与算法,计算机组成原理 ,编译原理,网络协议。
    2.内功心法:编码规范,oo方法,设计原理与设计模式,ddd,分布式架构设计
    3.《设计原理与设计模式》已经成了我的工具专栏,可以时常翻阅。
    2020-07-03

    __6

  • 108 - 图12
    Allen
    大学基础课程:计算机基础、计算机网络、数据库、操作系统、数据结构与算法其实都是非常有用的
    了解计算机基础组成,才能深入理解CPU线程调度,磁盘、内存、CPU之间的联系
    了解计算机网络,才能理解TCP/IP协议,HTTP协议等,甚至可以据此定位到问题出在哪一层网络架构,减少沟通成本
    等等等等
    2020-09-17

    __4

  • 108 - 图13
    Jie
    前置技能不点足门槛,技能树最深层的大招是用不了的。
    物理系毕业的码农表示数学是最重要的基础学科知识,不仅是很多其他基础的基础,锻炼出的思维能力也是受益终身的。
    2020-07-03
    _1
    _3

  • 108 - 图14
    微末凡尘
    罗马不是一天建成的,学习的过程也不是一个线性的过程,遇到瓶颈很正常,只要坚持学习,总会量变引起质变的,延迟满足感,向作者学习~
    2020-07-17