<audio id="audio" title="加餐七 | 基础学科的知识如何转化成实际的技术生产力？" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/1f/8d/1f784dec9713ec7c8c8bc540c5929f8d.mp3"></audio>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

## 课堂讨论

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

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