框架 or 基础知识

前言

鄙人南下就业,以为掌握 DubboSpringCloud 等技术栈就比较占优,不曾想到各种碰壁,事与愿违,在准备面试题的过程中,开始思考,痛并思痛,自己是不是该改变学习策略了;框架和基础知识那个更重要呢?

第一家面试的是亚马逊中国,上来就是一顿算法题,懵了;

第二家面试的是懒人科技,上来也是一顿 Java 基础知识,GC 优化,多线程、并发编程,底层原理,哎… 又被打败了;

刚好看到 极客时间 有相关的文章,甚是欣喜,特意引用,以史为诫。

极客时间 | 技术人员应该停止学习框架,专注基础知识

作为一名开发人员,需要不停地学习新技术。那么,我们应该学习什么样的技术?关于这个话题,有着 15 年工作经验的软件工程师爱德华·兹西佐夫(Eduards Sizovs)发文表达了自己的看法。

他认为,开发者需要掌握最新的技术,每天学习编程语言、框架和库,知道的工具越新越好,但这一切都是在浪费时间。科技以光速变化,这场比赛没有赢家,因为它没有终点。

技术的未来预期寿命与其当前存在时间成正比,每一段额外的生存期都意味着更长的剩余预期寿命。技术存在的时间越长,学习它就越安全,对于技术人员来说,不要急于学习新技术,因为它有很高的消亡概率;时间是最好的导师,它会证明哪些技术值得学习,所以需要学会等待。

曾经,兹西佐夫的导师给他上了重要一课。他的导师询问他正在做什么,他回答正在阅读一本关于如何用 GWT 构建现代 Java 应用程序的书,GWT 是必须跟进的技术。在此之前,他还读了一本 500 页的关于 Apache Tapestry 的书,但他现在根本没用到 Apache Tapestry ,这也没办法帮助他很好地解决 GWT 相关的问题。

因此,导师建议他正确地设置优先级,把 80% 的时间花在基础学习上,然后剩下 20% 的时间留给框架,库和工具的学习即可。

现如今,十年过去了,他经历了 50 个不同的软件项目。上述这些建议让他学到的所有东西都可以跨公司、团队、跨领域使用。他认为,只有深入研究项目本质,才会发现它们都是相似的:

  1. 编程语言是不同的,但设计是相似的。
  2. 框架是不同的,但设计模式是可以通用的。
  3. 开发者是不同的,但与人打交道的规则是统一的。

框架、库和工具是会变化的,但时间是宝贵的。开发者应该将宝贵的时间花在可移植的技能上,比如框架进化体系结构,干净的代码,设计模式,DDD、安全精简编码原则、容错模式、HTTP 和 REST 等技能上。