发布于 2026-01-06 15 阅读
0

计算机科学基础知识仍然很重要。

计算机科学基础知识仍然很重要。

我不好意思承认,2005年我刚加入微软时,竟然不知道如何实现广度优先搜索(BFS)。当时,我已经从事软件工程工作六年,并拥有计算机科学硕士学位。

几年后,我仍然对此一无所知。一天午餐时,有人提到他们之前面试的那位候选人“甚至连图中最短路径都找不到”。这让我感到非常沮丧——我知道自己也做不到。短短几秒钟,我就从微软一位看似成功的软件工程师变成了一个冒牌货。这件事促使我开始加强计算机科学的基础知识。

虽然我最终学会了广度优先搜索(BFS),但我的例子表明,在软件工程领域取得稳步发展并不需要死记硬背 《算法导论》  (又名CLRS)。这一点在今天比二十年前更加适用。如今,我们的工作抽象层次要高得多。大多数常用算法,例如二分查找,都已包含在标准库中,实现它们纯属浪费时间。

尽管如此,我仍然强烈建议每位开发者学习计算机科学的基础知识。

为什么要学习计算机科学基础知识?

答案很简单:学习计算机科学基础知识可以提升你的职业发展。方法如下。

你会很快理解不熟悉的系统

一旦你掌握了基本的算法和数据结构,你会发现它们无处不在。你会意识到 HTML 和 XML 文档本质上是树,键值存储可以概念性地理解为哈希表,而从单个消费者的角度来看,Kafka 主题就是队列。这非常强大,因为它能让你即使对这些系统没有深入的了解,也能理解它们的行为和局限性。

我刚开始用 Git 的时候,感觉完全不知所措。我搞不懂它的工作原理,那些命令也让我摸不着头脑。有一天,我在 YouTube 上又看到一个 Git 讲解视频,里面提到 Git 是一个 DAG(有向无环图)。一夜之间,我就成了 Git 高手,帮团队成员修复代码仓库。

你将能够解决具有挑战性的问题

软件开发人员日常遇到的绝大多数问题并不需要高深的计算机科学知识。然而,偶尔也会遇到一些棘手的难题。这时,了解算法和数据结构就显得尤为重要。我记得曾经在一个依赖关系图的问题上苦苦钻研了好几天,直到我的同事指出,如果我应用拓扑排序,就能很快解决这个问题。

你会在编程面试中表现得更好

许多面试,尤其是在大型科技公司,都会包含编程题。通常,这些问题可以用一些标准算法来解决。如果你熟悉这些算法,面试时就更有可能表现出色。

如何保持技能与时俱进。

大多数技能都会随着时间推移而退化,算法技能也不例外。即使你还记得某个算法或数据结构背后的原理,细节也会随着时间推移而变得模糊。因此,定期复习技能非常重要。有很多方法可以做到这一点。我最喜欢的是定期参加“代码降临节”(Advent of Code)。“代码降临节”是一个在十二月举行的线上活动,每天都会提供两个问题,直到圣诞节结束。解决这些问题非常有趣,也让我能够温习自己的算法和问题解决能力。但最棒的部分是 解决方案汇总帖——专门的子版块,其他人会在那里发布他们的解决方案。我会在解决当天的问题后查看这些帖子。它们就像一座宝库,里面充满了令人惊叹的见解、非常规的方法和我从未想到的编程技巧,我从中受益匪浅。

图片:https://cs.stackexchange.com/a/107190


💙 如果你喜欢这篇文章……

我每周都会发布一份面向软件工程师的简讯,帮助他们提升职业发展。我会分享我过去20年作为软件工程师所犯的错误以及吸取的经验教训。

点击这里注册,即可将此类文章直接发送到您的邮箱。

https://www.growingdev.net/

文章来源:https://dev.to/moozzyk/computer-science-fundamentals-are-still-important-5h5i