95%的程序员都用不到的“算法”,是不是没必要死磕?

开发 前端 算法
对于软件工程而言,写出易懂、易合作、易维护的代码,显然比写出效率高一点,代码却很复杂要重要许多。这样看来算法就显得很“鸡肋。

写代码快十年了,没写过一次插入排序,也没有写过一次红黑树,甚至递归也很少涉及到。这是绝大多数程序员的工作现状。

然而,许多人对“算法”却情有独钟,认为它是评判一个程序员技术水平高低的重要标准之一。

有句话叫做:程序员=数据结构+算法。为此许多人痴迷于刷leetcode不能自拔,执意追求算法,却忽略了在工作项目中学习的重要性。

另一部分人则走向另一个极端——算法无用论。公司项目的核心代码都是我写的,几乎都是“评论回复功能”怎么实现,“点赞功能”怎么实现,“充值提现功能”怎么实现,根本不会涉及所谓的算法,花大量精力去刷算法题,根本就是浪费时间。

在面试过程中,“算法”往往扮演着智力题的作用。因为计算机科学知识深度较浅,培养起来不难,大公司在招聘初级开发工程师时,都会用算法知识,来考察面试者的学习能力及潜力,而不是会使用某种技术。

在实际工作中,绝大多数情况下也不会用到算法,更多的是增删改查、API的对接,数据格式的调整。只有在做比较底层、比较尖端和敏感的场景,才可能涉及算法的实现,但这些场景的需求也远远不止算法。

对于软件工程而言,写出易懂、易合作、易维护的代码,显然比写出效率高一点,代码却很复杂要重要许多。

这样看来算法就显得很“鸡肋。”这也是许多写了多年代码的程序员,坚持算法无用论的原因之一。

另外一部分人认为,算法非常之重要。

大公司非常注重基础,编程语言、数据结构与算法、Lnux、操作系统等等。算法也是发掘程序员学习能力和成长潜力的关键手段。此外,算法能力的强弱,也能判断程序员面对新问题时,分析和解决问题的能力。

懂算法和不懂算法的程序员,完全是两个水平,一个天一个地,所以算法非常重要。

其实不论哪种看法,都十分极端。算法究竟有多重要,到底是算法重要还是项目经验重要,在许多人心中都有答案。

这个问题与“学历还是能力重要?”“选择重要还是努力重要”类似。当你偏执地认为A很重要,所以B不重要的时候,就犯了一种逻辑谬误。势必要为此付出代价。

死磕算法,不了解常见的技术方案,就要付出代价。

轻视算法,过于重视项目经验,同样要付出代价。

因为工作中所需要的技能太多太多,沟通能力、管理能力、商业、规划、招聘、架构、工程等等,都会共同决定一个人能达到的高度。

在庞大的职场技能体系中,算法仅仅是其中的一环,缺算法行,缺了算法也不行。把算法替换成上面所述的任何一种能力,结论都是一样的。

 

责任编辑:赵宁宁 来源: 蔚可云
相关推荐

2016-11-29 09:56:37

Linux

2019-01-02 07:50:02

程序员技能代码

2022-01-29 00:08:30

程序员编程语言Java

2021-03-10 15:49:32

算法数据结构前端

2015-06-23 16:14:42

程序员优秀程序员

2014-02-18 13:45:39

bug程序员

2015-10-30 08:47:15

2013-04-28 11:03:41

编程语言程序员私有云

2018-01-30 22:07:18

Python区块链比特币

2017-11-24 08:30:05

Python代码区块链

2021-02-08 22:32:43

程序员 静态网页

2017-11-14 11:28:49

程序员索引数据

2019-12-19 16:22:38

程序员征文

2019-03-20 09:59:40

硅谷程序员失业

2021-08-28 23:26:14

程序员编码电脑

2012-12-13 09:55:23

2021-03-18 13:58:43

程序员技能开发者

2017-12-21 07:54:23

JavaPHP程序员

2017-11-23 10:39:22

程序员Android人工智能

2012-08-20 09:26:17

程序员算法排列算法
点赞
收藏

51CTO技术栈公众号