不想通这些道理,只能一辈子做低级码农(一)——学算法有什么用

38 篇文章 0 订阅
15 篇文章 2 订阅

“算法都是封装好的,学了有什么用?”,这是几年前一个试用期员工问我的问题。

 

他有一年工作经验,基础一般跟过几个项目,属于可以干活的人。来了以后就问我,要快速提升应该学什么。面试的时候觉得他算法功底不太好,就推荐他把算法好好学一学。结果他反问:“算法都是封装好的,学了有什么用?”。

 

一直认为算法是编程的基础,学好算法是毫无疑问的事情。就好像学写字就要把横竖撇捺学好一样,但被人问起来,发现自己确实没有好好思考过这个问题。

 

还没过试用期,他就自己离职了。他说想做底层开发,而我分配给他的任务都是简单的应用逻辑,觉得没成长。

 

1级的玩家技术好可以打2级的怪,但要打100级的Boss恐怕会死得很惨。没有哪个公司会冒这样的风险让算法都不懂的新人开发底层模块。

 

故事讲完了,那么学算法到底有什么用呢?除了算法,其实我还被问过:

我不写编译器,学编译原理有什么用?

我不做计算机,学计算机组成原理有什么用?

我不写操作系统,学操作系统有什么用?

总结来说就是:基础知识(原理),工作中用不上,学了是不是浪费时间?

 

磨刀到底误不误砍柴工?这个问题其实很难讲清楚,但我还是尝试讲几点。

1. 知识的普适性

所谓普适性,或者说通用性,是指一项知识到了其他领域是否适用。

我们学了加减乘除,物理能用上,化学能用上,生物也能用上,所以加减乘除具有很强的普适性。

 

学美术的同学,与其学“手的100种画法”,不如研究一下解剖和骨骼结构,因为掌握了这个可以随意画1000种手,所以手的100种画法这个知识不具有普适性,但骨骼结构有。

 

学编程的同学,学各种时髦技术,各种框架API,流行技术框架每几年换一次,就得重新学,那之前学的到底是有用还是没用呢?这些知识具有普适性吗?

 

基础知识和原理,虽然很少会直接用到,但它们有强大的普适性,无论做哪个领域的开发归根结底都绕不开那些基础。

 

2. 成熟的、可借鉴的方案

很少有人能从0到1发明新的东西,所谓的创新通常是站在巨人的肩膀上,从1到1.1做了一些改进。我们写的代码、解决问题的方案有多少是自己发明的?

 

基础知识和原理,包含了大量经典问题的解决方案和思维框架,越是做底层开发,越是能理解这一点。资源管理、内存管理、线程调度,不学一学操作系统能玩得转这些开发?靠自己的脑子可以想得出完善的方案?

 

3. 解决疑难问题

面试过几个号称主程的,用xxxx库为公司搭建了网络框架,认为自己精通网络开发。问他如何处理粘包问题,他:“什么粘包”。我想他们公司的项目可能活不过半年吧。

 

但凡要做一些基础架构,不懂基础知识将是致命伤。使用开源库可以帮你快速完成工作,但若是出现开源库未涉及的内容、或对库理解不足导致出现bug,而程序员又不懂基础原理,那就只能蒙圈了。

 

4. 造轮子

程序员都知道不要重复造轮子,使用稳定的库肯定是比自己撸代码来得高效安全。越是低级程序员越不需要造轮子,他们大多写应用层逻辑,各种库拿来用就行了。

 

当你级别越高,越是需要造轮子。公司需要积累自己的核心技术、别人的轮子不适用与自己项目的场景等等各种原因,你总是需要自己造轮子或改别人的轮子。你不懂基础知识和原理造不了轮子?那公司找高手来造轮子,你去写简单的逻辑,当低级码农就好了。

 

----------

 

如果觉得对你有帮助,请用力点赞

 

个人公众号:ACM算法日常

专注于基础算法的研究工作,深入解析ACM算法题,五分钟阅读,轻松理解每一行源代码。内容涉及算法、C/C++、机器学习等。

  • 13
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值