今天,我要给算法泼冷水!
共 1487字,需浏览 3分钟
·
2021-12-09 16:05
hi,小伙伴儿大家好,我是轩辕。
昨天,我在知乎上看到了一个问题:
大学四年,计算机学生应该以数据结构与算法为重,还是应该以技术为重?
不出意外的看到了很多鼓吹算法的回答,忍不住回答了一波。
下面是我的回答:
如果说程序员行业有什么政治正确的话,那一定就是无脑吹捧数据结构与算法了。
现在有一股风气,动辄就是把刷题,LeetCode挂在嘴边,仿佛不刷LeetCode的人就要低人一等似的。
数据结构与算法重要吗?
确实很重要,本身就是做算法岗位的那自然是不必多说了,这是看家本领,肯定得重点攻克。除了算法工程师,在一些基础设施软件、大型后端服务器、游戏开发、系统编程等领域也很重要。同样实现一个功能,一个好的算法和好的数据结构设计,会让软件的代码层次感、可读性、执行性能都提升很多,对公司的业务也会带来非常直接的经济价值。
所以,无论怎么强调数据结构与算法的重要性都不为过。
但是,算法并不是一切,也并不是所有程序员,都要去做这些重算法的开发。
有相当比例的,尤其是半路出家的程序员,从事的都是数据库增删改查、接口开发、前端/小程序开发等工作。
很多自媒体天天把BAT、字节蚂蚁挂出来,搞的好像程序员只在这些大厂似的,好像不搞高精尖算法的程序员就不是程序员似的。(也包括我,嗨,恰饭嘛)
而实际情况是,在中国,从事软件编程开发的人有几百万之多,而这些个大厂人数加起来也不过10%,真正天天和算法架构打交道的就更少了,中小企业的程序员至少占了一大半。
而绝大多数的中小企业,他们没有高并发、没有人工智能、没有搜索引擎、没有推荐算法、没有大型后端服务器开发,甚至复杂一点的算法逻辑都没有,他们需要的不过是普通的后端开发和普通的前端开发,以完成功能按时上线为第一准则,你的功能逻辑是1秒钟跑完,还是0.1秒钟跑完,他们并不关心,他们更看重候选人对相应技术栈的熟练程度,能不能够把产品经理的设计进行实现,而不在乎你是不是一个算法高手。
退一步讲,即便是在大厂,也有相当部分开发岗位是做CRUD,根本用不到很多的算法知识,反而是对各种框架、技术栈要求熟练掌握。
所以,回到题主的问题。
如果你是立志要去大厂,立志要去做高性能高并发开发,数据结构与算法是必不可少的一块敲门砖,你必须得努力把它学好,少了这个,可能笔试这一关都过不了。
除了作为敲门砖,大厂提供的平台,一般都有很多机会让你处理海量的用户与数据,拥有扎实的数据结构与算法功底,也会让你在工作中派上用场,一展所长。
而如果你觉得自己对算法完全无感,数学能力不是很拔尖,反而对软件技术很着迷,那么,去把C/C++、Java、Python、VUE编程开发中的任何一个一整套技术栈吃透,多攒点编程经验,多积累项目经历在简历上,比盲目跟风刷题效果可能要好得多,而且同样有机会去到大厂。(当然了,基础的数据结构与算法知识还是要学的)
所以,大家要认识到自己的优势和长处,而不是人云亦云,盲目跟风。
算法和数据结构能够学的很棒,那自然是好事,但如果发现自己并不擅长,也不用丧气悲观,换条赛道,一样能奔向成功。
当然,以上都是我个人的一些看法,经历和阅历有限,可能也有失偏颇。大家看看就行了,只不过看到当下这个唯算法论的风气,忍不住啰嗦了几句。
你的看法是什么呢?欢迎留言交流。