July 11, 2023
By: Kevin Li

为什么要学习数学结构, 操作系统?

0001

我发现, 面试人简历上罗列的课程, 比如数据结构,操作系统,编译原理,离散数学, 就好比酒席上用来摆盘的装饰品一样, 只能看不能吃.

一旦问起来, 会很吃惊的说这课程老师没有认真教, 自己在培训班学了java或者Vue的真本事, 甚至会反问这些课程有啥用.

确实, 他可能在工作生涯中永远不会直接用到这些知识。

当然我可以回答:“学习这些可以让你更好地理解编程”,这可能会引发他的困惑——"为何需要深入理解编程?"

而且, 为了更好地工作的答案也不太成立, 我招聘他的来做的工作并不直接需要这些基础知识, 那么为什么还会关心他是否了解编译原理或者操作系统呢?

我也曾有同样的疑问。即使我有时间去做深入了解这些基础,也无法完全投入,因为我也在想:

去学习这些在实际工作中可能永远不会用到的底层知识到底有何意义?

然而,工作多年以后,学习这些底层知识有一个非常好的理由:那就是证明你能面对挑战。

面对挑战的能力或许是你在自己的职业生涯中可以培养的最有价值的能力。而能证明你是一个能面对挑战的人,则可能是职业生涯中可以拥有的最有价值的资产。

我们的自我形象,是由我们的能力的历史证据塑造出来的。面对更多的挑战,就会更加信任自己的能力。如果能编写复杂的算法,设计底层的数据结构,那么处理复杂的业务逻辑将变得轻而易举。

如果我们总是回避挑战,那么即使是稍微有一点挑战性的事情也会看起来无法逾越。我们可能会因为一个小小的bug感到焦虑不堪,我们可能会觉得自己无法学习新的技术,无法应对新的工作挑战。能证明你能面对挑战,心理上和事实上都会让你变得更加强大.

我会坦诚对待面试者。我不会告诉他们,数据结构或者编译原理是至关重要的,是未来他是否成功的决定因素。

它们并不是,只要你有其他的规划。

这些底层知识是证明你能面对挑战的好方式。如果你在业余时间写开源代码,或者建设自己的项目,你其实已经在面对挑战。而这个挑战可能比学习底层知识更为艰难。

我并不特别关心我的同事们是否精通底层知识。但我真正关心的是他们是否持续地证明他们能面对挑战。底层知识是一个很好的证明.

培养一个习惯,学习一种技能,创造一些东西,无论是什么,只要能把你对挑战的默认态度从“那看起来很难”转变为“我能解决它”。

乔治·马洛里在被问及为何想要攀登珠穆朗玛峰时回答说:“因為它就在那裡。”(Because it's there.)

开始去证明你能面对挑战吧。

Tags: essay