今天看了三篇文章。 《停止学习框架》 《驳 《停止学习框架》》 《驳 《驳 《停止学习框架》》》
说实话,我凑热闹的心态超过辩论(抬杠)的心态。本文只是借此机会表达一些观点,至于切不切提不重要,能引发你的一些思考才重要。 上面三篇文章或多或少都能给读者提供一些思考,希望大家结合自己的能力、所处的环境找到适合自己的方向,不要完全跟着作者的思路走。
技术是工具
当你掌握了某种框架,你就有能力用它来解决问题,这个情景和大猩猩用石头砸开核桃没什么区别。我写的《如何成为10倍速的程序员》中有提到,要善用工具。你的大脑的运算力是有限的,你的精力、你的生命都是有限的。你一生可以做的事情是有限的。懂得寻找捷径让人类成为了智慧生物。 框架,无疑是程序员解决问题的工具。至于要把工具掌握到什么程度,取决于你需要解决的问题。 那么要不要学习框架呢? 当然要。但要在你精力允许的范围内,选择性精通。什么是选择性精通呢?就是你把你感兴趣的、业务需要的、技术展示的(跟同事、面试官胡吹)知识点弄清楚。 大家也看到了,原文来自国外,讲究work life balance,想想自己的国情,不可尽信。 那是不是算法真的永不过时,掌握算法就一通百通呢? 这么说吧,即使你懂得Leetcode的全部算法,你也要懂业务。当你沉浸在某个局部的细节去实现时,你会专注进去,此时你无法从宏观的角度去审视整个业务,每个人都是这样。要想站在更高的角度考虑问题,就要“片面”的掌握某些东西来保持头脑清醒,以做一些更宏观的判断和决策。这听起来有些反常识,大家可以仔细思考下。 业务与细节的平衡,恰恰是框架与算法的平衡。 这个平衡点大家自己掌握。
流水的工具
我用java最多,从SSH到Spring MVC, 从jdk1.4到java12,技术的更新换代速度可以说是“指数加速型”(加速度增长,而不是速度增长)变化。当你钻研透SSH框架之后发现它已经被淘汰了。 当你还在使用eclipse时,实习生已经用idea作为IDE了,你试了两下,觉得有些别扭,还是原来的开发工具顺手。你原有的习惯,成为了你接受新事物的阻力。越是深入掌握某种旧的事物,越是如此。 这就是程序员35岁(30岁?whatever)到达职业瓶颈的根本原因。 最最现实的是,程序员本身,就是公司实现业务的工具。 像国外常说的”make the world a better place”,你想想就好。
至于铁打的算法?不好意思,算法也是工具。拿NLP来说,从传统的规则模型到基于统计的深度模型,历时25年之多,这其中算法的改进不知凡几,为什么?算法是人类对世界认识的归纳总结,看似不破的真理一直在被颠覆。只是这个周期较长,大家体会不深而已。
吃饭
最近失业、降薪的不少,大家有没有想想原因?其中一定不乏算法牛人,也一定不乏精通框架的。他们之所以被裁(降薪),是因为他们是可替代的。
我们其实很容易得出结论,大家趋之若鹜的方向,一定是不可替代性最差的。再狭隘点来讲,大家越认同哪个观点,往往这个观点就越容易是错的。 不要选择人人竞相追逐的方向作为你的核心竞争力!
算法、语言、框架都是程序员赚钱的工具。想想晚上吃什么才是真格的。再说,你们难道真要new 一个Object?
我的意思是,虽然深入技术能让程序员赚更多的钱………… 算了,程序员也赚不了什么钱,不说了。