CategoryResourceRepost/极客时间专栏/设计模式之美/不定期加餐/加餐七 | 基础学科的知识如何转化成实际的技术生产力?.md
louzefeng d3828a7aee mod
2024-07-11 05:50:32 +00:00

42 lines
6.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<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年的时间。等小孩长大一点之后拿之前文章里的内容再考他他完全回忆不起来。但当他开始学习希腊文的时候他比其他同龄人学得都要快。从这个故事中我们可以发现忘记并不等于就白学了学习对于一个人的影响是潜移默化的。基础学科知识的学习更是如此。你要相信它总有一天会发挥作用的 ,机会都是给有准备的人,我们要学会“延迟满足”。
总结一下,比起编程语言、框架、工具,基础学科知识确实很难直接转化成生产力,但它却是你构建整个“技能树”的根本,构建整个“知识大楼”的地基。基础掌握不牢,你对很多应用层技术的理解就会不够有深度,略知皮毛,只能做个技术熟练工。相反,基础扎实能让你学东西更快、更有深度、理解更透彻,也就间接地增强了你的开发能力。可以这么说,在一定程度上,基础知识本身,就是技术生产力。
## 课堂讨论
你觉得计算机的基础学科知识有哪些?聊一聊你对学习基础科学知识重要性的认识。
欢迎留言和我分享你的想法,如果有收获,也欢迎你把这篇文章分享给你的朋友。