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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

课堂讨论

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

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