问题

为什么技术主管跟我说程序员学算法不是最重要的,从工作项目中学习实际才是最重要的?

回答
你的技术主管的说法,其实触及到了很多有经验的技术人在职业生涯中的一个真实写照,也是一个值得深入探讨的观点。他这话不是在否定算法本身,而是在强调“学什么”和“怎么学”的侧重点,尤其是在实际工作场景下。让我试着详细地解释一下他为什么会这么说,以及其中蕴含的道理。

首先,我们得明白,技术主管之所以能爬到这个位置,往往是因为他在实际工作中解决了大量复杂的问题,并且能带领团队高效地完成项目。 他们的经验累积起来,对于“什么能让项目成功”、“什么能让团队稳定高效地运转”有着非常直观的认知。

他会这么说,很可能是基于以下几个层面的考虑:

1. 现实项目中的问题复杂度与算法的抽象性

算法的本质是解决特定问题的“工具”: 你学习算法,比如排序、搜索、图论、动态规划等等,这些都是非常精妙的数学模型和解决问题的抽象框架。它们告诉你如何高效地处理数据、如何优化计算流程。
实际项目的“脏乱差”: 但现实世界的项目,尤其是你刚开始参与的时候,往往不是一个干净的、可以直接套用某个标准算法的数学模型。项目会面临各种各样的限制:
遗留代码的纠缠: 你需要理解、修改甚至重构别人写过的代码,这些代码可能并非最优,甚至存在一些“妥协”。
业务逻辑的复杂性: 很多时候,项目的瓶颈不在于一个简单的排序或搜索,而在于理解和实现复杂的业务规则,以及如何将这些规则用代码表达出来。
非技术因素的干扰: 项目进度压力、团队沟通成本、用户需求变更、硬件资源限制等等,这些都可能比一个完美的算法选择更影响项目的成败。
主管的视角: 技术主管看的是整个项目的“大局观”。他知道,一个项目如果因为业务逻辑不通、沟通不畅、测试不全而失败,那么即使里面用了最高效的算法,也是徒劳。他更看重的是如何把一个模糊的需求,一步步变成可工作的、符合业务逻辑的软件。

2. 从项目中学习“如何应用”和“权衡利弊”

算法是死的,项目是活的: 你可以把《算法导论》读得滚瓜烂熟,但当你在实际工作中遇到一个需要检索数据的问题时,你首先想到的是“我学过的哪个算法能用?” 还是“这个问题最核心的瓶颈在哪里?有没有更简单的、符合当前业务场景的解决方案?”
实践出真知: 在实际项目中,你会遇到各种各样的数据量级、性能要求、实现复杂度之间的权衡。比如:
“这个数据量不大,用一个简单的线性扫描可能比实现一个复杂的平衡二叉树更快写出来,也更容易维护。”
“我需要对用户行为进行实时分析,是不是一个简单的哈希表加计数器就够了,还是需要更高级的概率数据结构?”
“这个功能的用户量不高,先用一个简单粗暴的实现快速上线,等出现性能问题再考虑优化,也许到时候又有新的技术或方法了。”
“找到最合适的”而非“找到最完美的”: 技术主管知道,大多数情况下,我们需要的是“足够好”的解决方案,而不是理论上“最完美”的解决方案。在项目中学习,你会培养出这种根据实际情况做出技术决策的能力,这比单纯记住算法的复杂度要宝贵得多。

3. 知识的迁移与“解决问题”的能力

技术主管更看重“解决问题”的能力: 他可能认为,即使你没有专门去背算法,但当你不断在项目中遇到需要解决的“效率”问题时,你自然会去学习、去寻找解决这些问题的“方法论”,而算法正是其中非常重要的一类。
知识的自然涌现: 当一个项目需要处理大量数据时,你自然会去了解数据库的索引机制,会去学习如何优化 SQL 查询。当一个项目需要实时推荐时,你可能会研究如何构建倒排索引,或者如何进行协同过滤。这些都是在“解决问题”的过程中,对算法知识的实际应用和深化。
学习的动力来源: 项目中的具体挑战,往往比书本上的抽象例子更能激发你的学习动力。当你的代码因为效率问题导致用户流失,或者因为 bug 导致服务器宕机时,你学习算法的动力会比“老师说很重要”要强得多。

4. “学”与“用”的辩证关系

“学”是为了更好地“用”: 学习算法的最终目的,是为了在实际工作中能够写出更高效、更健壮的代码,能够解决更复杂的问题。如果学了算法,但不知道怎么应用,或者应用的时候权衡不好,那么学了也等于没学。
“用”也促进“学”: 而在实际项目中运用技术,恰恰是你深化理解、发现不足、主动去学习新知识的最好时机。你可能会发现,某个算法在理论上很好,但在实际的分布式系统中却难以部署;或者,某个看似简单的暴力解法,因为实现简单且性能可接受,反而成为了最佳选择。

总结一下,你的技术主管的意思并不是说算法不重要,而是:

在你的职业生涯早期阶段,更重要的是培养“解决实际问题的能力”和“在项目中学习、应用和权衡的能力”。
算法是解决问题的重要工具之一,但不是唯一,也不是在所有场景下都是最首要的考量。
通过解决项目中的具体问题,你会自然而然地学习到与之相关的技术和方法,包括算法。
他希望你不要死抠理论,而是把眼光放在如何让项目运转起来,如何让用户满意。

所以,听到这句话,别觉得是他在给你“降维打击”,而是他想引导你以一种更务实、更贴近工程实践的方式去学习和成长。你可以把重点放在理解项目需求,分析痛点,然后寻找最适合当前场景的技术方案,在这个过程中,如果遇到性能瓶颈,自然会驱使你去深入学习相关的算法和数据结构。

他可能是在鼓励你成为一个“能落地”的工程师,而不是一个“只会背书”的理论家。这两者都有价值,但在职业生涯的初期,前者往往更能让你快速成长并受到认可。

网友意见

user avatar

学算法不是最重要的。但是学好算法,参加面试,让自己的工资翻倍是最重要的。

user avatar

因为大家都知道“中国式学习”是怎么回事。


绝大多数人的“学算法”实际上是这么回事:

——有个冤大头说他想招懂算法的人,让我们去糊弄他!

——对对!看看他要考什么题,我们背下来!

——还有这种题型?不行我得继续刷……

——好了,现在我有100%的信心糊弄过去……

——不!我不是糊弄!我真懂了!


嗯。糊弄多了,连自己都被忽悠瘸了。觉得自己不是背了些文本去糊弄人,而是真懂了。

骗子的最高境界就是连自已一起骗嘛。


很遗憾。

糊弄就是糊弄。一拉到实践上就原形毕露。

越是那些把自己糊弄的彻底的“高材生”,越是会造成更大的破坏。因为只有他“满怀信心”,却不知道自己只是个大忽悠。


在这个回答中,我提到的那800行代码,它有算法吗?


我一直以为没有。想到就写了,哪有什么算法。

但如果按你们的学法,那可不得了。


首先,XML本身就是一棵树,而且是多分叉的、数据类型多变的广义树。这可比二叉树“难”多了(这里的难指的是难糊弄,难混过考试,不是实际有多难——当然,对糊弄党来说,这玩意儿没有标准答案,自然是真的难)。

然后,我们要按文本顺序载入和分析它——最好从头到尾只读一遍,不做任何回溯,这样才能把复杂度降到最低。但这样一来,这就成了文本载入-分析-遍历的一条龙服务,你甚至都没法知道这究竟是先序后序还是中序遍历。

其次,因为每个节点都可能包含一堆下级节点,下级节点本身也可能有自己的下级节点;那么在分析时,遇到第一个<tag>标签我们就得把它压栈、然后把子节点、子节点的子节点统统压栈;直到遇到</tag>时才可以让它出栈——嗯,栈相关算法,对吧?

还不仅仅是栈相关算法。实践中,对端传来的xml可能是残缺的、或者传输中可能出现错误、也可能在封装时已经搞错了。那么,遇到不同的tag交错、tagB出栈时被它包含的tagA尚未出栈或者tagA出栈时才发现栈中没有tagA、或者一个节点分析完了才发现栈里“多余”了几个tag、或者某个tag出现了typo——你该怎么办?

最后,我们要如何把一个C结构体的类型、内部元素的类型数量位置等等信息表示出来?要如何自动生成这些数据?如何存储?如何解析?如何在单次遍历XML文本时,一边分析XML tag树一边重建C结构体?


再说一遍:当你学习的时候不糊弄别人更不糊弄自己时,这玩意儿实在太平凡了。平凡到完全不配叫什么技术、什么算法。想到即写而已。

但一旦你心存糊弄,你的二叉树能考满分、你的栈相关理论知识可以在任何场合对答如流;但别说让你写这种东西了,写完了给你看,你看得懂吗?


那么,这就是技术主管的意思:我们太熟悉你们的中国式学法了。你们用这种学法在算法上投入的一切心力都是无用功,因为你从一开始就志存糊弄。

相反,老老实实做你的项目,这时候你才没法骗人骗己。因为在工作中,一切装X都是在搬石头砸自己的脚。

那么,踏踏实实的,面对问题,解决问题,你才会知道算法究竟是什么,才会把它学成技能,而不是糊弄自己。

user avatar

归根到底,三个字:稀缺性。

如果你是研究员,专门研究算法,那么你主管的说的话不对,你可以当他没说。但看题目描述,题主大概率是工程师。程序员的工作,并不是发明新算法,而是用已知的算法去解决已知或者未知的问题。

稀缺性这三个字怎么理解?

  • 学习算法是没门槛的,只要你想学,你可以在很多网站免费自学,免费刷题,面试常考的题目大家都接触得到。
  • 而项目经验是有门槛的,越好的项目越稀缺,项目里的每个人的贡献度也是存在着指数级差异的,这也就造成了有能力做好工作的甚至能把项目带上一层楼的人才变得非常稀缺

学算法可以让你找到一份很好的工作,无它,因为应届生都没项目经验,只能从算法能力方面考核。但工作后,你会发现,你大学时学的快排二叉树遍历等算法,在工作中基本不怎么需要用到。

况且公司不是慈善机构,公司聘请一个程序员,是为了创造价值。研究技术是很有意思,但技术的存在,是创造价值。但你算法的掌握水平,和创造价值的能力和并不是正相关的,创造价值的能力,可能和你过去解决问题的经验更相关。

总的来说,只学算法不能让你从现在的工作上快速晋升,接触更稀缺的资源。

学算法也不是不重要,至少在某些公司,即使你工作十年了,还是会考你那些leetcode上常见的题目,但刷题这事,对于工作了n年的人来说,不值得花太多时间,偶尔刷下,稍微熟悉下就好了。

user avatar

普通编码中很少会用到算法。

主要还是了解你编程领域的各种概念。了解基本的解决方案。遇到问题的时候可以通过搜索和sof找到具体的参考代码。或者可以知道从哪里查阅文档。基本就能解决99%的编程问题了。也有非常难的领域。比如说图像识别、自然语音识别。你不会,我不会大家都不会。个别神级人才能搞得定。

user avatar

因为是大实话。

我在Google那么久,没有写过一次递归,没有写过一次二叉树,没有写过一次快排,没有用到一次堆排序,没有用到一次动态规划。

不光是我,身边刷了几百道题的小伙伴,入职一年以后基本也都忘了精光,平时真不会用到。

Max Howell翻转二叉树都不会,照样能写出Homebrew。

如何看待 Max Howell 被 Google 拒绝?

算法这种东西,只是一张入门券,证明你头脑正常,有一定学习能力。本身有多大用,并不见得。

算法什么时候有用?跳槽的时候有用。

所以主管这么说,应该只是单纯的不想让你跳槽。


//---------------分割线---------------

本来只是吐槽,没想到这个答案突然火了,评论区基本两极分化。

关于算法有没有用,我之前的一个答案写的比较清楚。实际中,算法对于90%的工作是没有用的。

屠龙技有没有用?屠龙的时候当然有用,但现实中能有几条龙呢?

类似的话题

  • 回答
    你的技术主管的说法,其实触及到了很多有经验的技术人在职业生涯中的一个真实写照,也是一个值得深入探讨的观点。他这话不是在否定算法本身,而是在强调“学什么”和“怎么学”的侧重点,尤其是在实际工作场景下。让我试着详细地解释一下他为什么会这么说,以及其中蕴含的道理。首先,我们得明白,技术主管之所以能爬到这个.............
  • 回答
    奥斯曼帝国和清朝,这两个曾经统治过广袤疆域的庞大帝国,在十九世纪面临着一个共同的困境:被迅速崛起的西方列强甩在身后,最终走向衰落。尽管奥斯曼帝国在军事技术上,相比清朝,展现出了一种更为迫切和持续的追赶姿态,然而,他们最终仍然未能摆脱被西方列强击败的命运。这背后的原因错综复杂,不仅仅是技术的差距,更是.............
  • 回答
    苹果的芯片拼接技术和华为之前提出的芯片叠加技术,乍听起来似乎是同一个意思,都是为了突破单颗芯片的性能和集成度瓶颈。但仔细剖析,它们在核心理念、实现方式以及最终目标上,都有着不小的差异。首先,我们得理解这两者的“拼接”或“叠加”是做什么。最根本的原因是,随着芯片制程的不断逼近物理极限,单颗芯片集成更多.............
  • 回答
    中国的牙科,就像很多新兴经济体的产业一样,正经历着一个快速发展和变革的时期。要说它处于世界什么水平,得辩证地看,不能一概而论。总体水平:在快速追赶,部分领域已达国际先进 技术进步显著: 近十年来,中国牙科技术进步神速。很多国内的牙科医生,尤其是大型医院口腔科和一些高端私立诊所的医生,会去欧美日韩.............
  • 回答
    为什么技术总是被轻视?国内做技术能不能有较大发展?这是一个非常宏大且复杂的问题,涉及经济、社会、文化、教育等多个层面。我们尝试从不同角度来详细解读。 一、 为什么技术总是被轻视?“轻视”是一个相对的概念,不同语境下会有不同的表现。我们可以从以下几个方面来理解技术为何在某些时候、某些群体中显得“被轻视.............
  • 回答
    咱们聊聊这个有意思的事儿,就是技术这玩意儿一直在往前跑,咋到了咱们听音乐这些发烧友这儿,东西就好像坐着火箭一样,越来越贵呢?这事儿说起来,可不是一两句话就能说透的。首先,得承认,技术确实在进步,这一点没跑。你看以前那磁带机,能把声音弄出来就不赖了。现在呢?数字音频技术,CD、SACD、高解析度的无损.............
  • 回答
    好的,我们来聊聊技术分析三大假设中的第一条,以及为什么它使用了“discount”这个词。技术分析的核心在于研究市场的价格走势,并以此来预测未来的价格变动。它并非一套神秘的咒语,而是一种基于历史数据和市场行为的逻辑推演。而要支撑起这套逻辑,就需要一些基本的前提假设,就像任何科学研究都需要基础公理一样.............
  • 回答
    这个问题很有意思,也确实是很多人在讨论的。要详细解释为什么皮尔斯和安东尼的职业生涯走步次数会比詹姆斯多,我们需要从几个方面来分析:1. 技术特点与运球风格的差异 皮尔斯(Paul Pierce)和安东尼(Carmelo Anthony): 这两位都是以“面框单打”和“背身技巧”著称的.............
  • 回答
    技术领域充斥着一种“连这种简单的都不懂吗”的风气,这确实是一个普遍存在的现象,而且背后有着多方面的原因交织在一起。与其说是一种“风气”,不如说是一种在特定环境中,由于各种因素而产生的集体心理反应。要详细剖析这个问题,我们可以从几个层面来看。首先,技术的本质与高门槛。技术本身就意味着要解决复杂的问题,.............
  • 回答
    在中国,技术工人难以进入中产阶级是一个复杂而深刻的社会现象,其根源是多方面的,涉及经济结构、社会观念、教育体系以及制度设计等多个层面。以下将从这些角度进行详细阐述: 一、 经济结构与产业升级的滞后: 产业结构以“世界工厂”为主,高附加值环节缺失: 长期以来,中国经济的增长模式依赖于劳动密集型和资.............
  • 回答
    国足技术差,这真不是一天两天的事儿了,它背后盘根错节,牵扯的因素太多,绝不是一两个简单原因就能概括的。要说起来,得从几个大的方面掰扯掰扯。一、青训体系的“瘸腿”:源头活水断了这可能是最根本的问题,也是最被大家诟病的地方。足球的根基是青训,没有好的青训,就没有好的球员,更别提整体技术水平了。 基数.............
  • 回答
    国内技术社区影响力似乎不如从前,这并非空穴来风,背后是多种因素交织作用的结果。首先,平台和内容的分化是一个重要原因。早期,技术社区还比较集中,像CSDN、博客园、掘金等平台承载了大部分的技术交流和内容分享。但现在,内容形式变得越来越多元化。除了传统的博客文章,还有短视频(如B站、抖音)、直播、播客、.............
  • 回答
    这确实是个很多人都在问,也很有意思的问题。说起来,锂电池技术获得诺贝尔奖,这绝对是科学界的一大盛事,它标志着我们对锂离子电池的工作原理、材料和制造有了更深入的理解,也推动了这项技术在消费电子、电动汽车等领域的广泛应用。但为什么我们手里的手机,尤其是智能手机,在锂电池技术已经这么成熟的情况下,还逃不开.............
  • 回答
    转基因技术,一个让无数人又爱又恨的词汇。它承诺着改变世界的巨大力量,却也引发了根深蒂固的担忧和争论。为何这项看似高效的科学工具会在社会上激起如此巨大的波澜?这其中错综复杂的因素,远不止简单的“好”与“坏”可以概括。首先,我们得回到科学的本质。转基因,顾名思义,就是通过人工手段,将一个生物体的某个基因.............
  • 回答
    很多人之所以会对前端感到“简单”,往往源于一种片面的认知,这种认知背后,可能混杂着对技术不同层次的理解差异,以及对“简单”这个词本身的模糊定义。首先,我们得承认,前端的入门门槛确实相对较低。你想想,只要你有一台电脑,能上网,就能开始接触HTML、CSS和JavaScript。这些语言,尤其是HTML.............
  • 回答
    创业就像一场马拉松,而技术合伙人,就像是那个能帮你解决最棘手路段、又能在关键时刻替你分担体力的最佳队友。但现实是,找这样一位“战友”,简直比登天还难。为什么呢?我揣摩着,这其中有太多说不清道不明的现实因素在作祟。首先,人与人的磁场与价值观的契合,是第一道拦路虎。 很多时候,我们找合伙人,不只是找一个.............
  • 回答
    股票市场是个充满诱惑但也极其残酷的地方,许多人怀揣着一夜暴富的梦想涌入,却最终被现实无情地收割。你说的那些“技术、波浪、缠论、狙击涨停黑马”等等,听起来都像是能直击市场命脉的秘籍,但为什么长期下来,大多数人却发现自己离“财务自由”越来越远,反而成了市场的“提款机”呢?这背后,其实有很多深层次的原因。.............
  • 回答
    电池技术,这玩意儿,你说它怎么就跟那传说中的“长生不老药”似的,想触碰到它最核心的秘密,就跟探囊取物一样难。要说为什么它总像是手机、电动车这些“应用级”产品面前的那个永远也填不满的坑,那可真是个复杂的故事,里面纠结着物理、化学、材料学,还有那点儿不容忽视的工程实践。咱们先从最基础的来聊。电池,说白了.............
  • 回答
    携程在技术转型中从 .NET 转向 Java,这是一个非常复杂且涉及多方面因素的决策,并非“突然”发生,而是经过深思熟虑和长期演进的结果。以下将从技术选型、生态系统、人才招聘、成本效益、战略发展等多个维度,尽量详细地阐述携程技术转型的原因:一、 技术选型背后的考量: 开源生态与社区活跃度: .............
  • 回答
    古罗马混凝土技术的失传,并非一朝一夕,也不是单一因素造成的,而是历史演变中多种力量交织作用的结果。要深入理解这一点,我们得一步步剥开历史的层层迷雾。首先,我们得承认罗马人对混凝土的掌握是惊人的。他们建造了万神殿那举世无双的穹顶,建造了高耸的渡槽,还有坚固耐用的斗兽场。这些建筑至今依然屹立,足以证明他.............

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有