美文网首页低钻写作者群读书
程序员,请停止学习框架!

程序员,请停止学习框架!

作者: 良月柒 | 来源:发表于2019-05-23 10:32 被阅读5次

阅读本文大概需要 4 分钟。

作者:sizovs 译者:方应杭

来源:https://zhuanlan.zhihu.com/p/52814937

之前发过类似的一篇文章,这篇更加全面。

我们都是程序员,我们需要与技术保持同步。每一天我们都要学习编程语言、框架与库。

我们了解的现代开发工具越多越好,比如Angular,React,Riot,Vue,Ember,Knockout,和这些新技术保持同步真是一件很有意思的事情。

但是....我们却是在浪费时间!

时间是我们拥有的最为宝贵的资源。时间有限,它不可再生,你我都不能购买更多的时间。

为什么?就像时尚时装界一样,技术领域如光速一般发生着变化。要赶上它,我们需要快速的学习,这场比赛没有赢家,因为它永无止境。

马丁·斯科塞斯2013年作品《华尔街之狼》剧照

我的授业导师曾经教我这样一课:

导师:“艾德,你在做什么?”

我(自豪地说):“我在读一本使用GWT构建现代Java应用程序的书。”

导师:“你为什么要读这本书?”

我:“作为一个Java开发者,我需要紧跟趋势,GWT现在最火。”

导师:”在读GWT之前你在读什么技术书?“

我:”是一本500多页的Apache Tapestry的书,Tapestry当时非常流行“

导师:”这个Tapersty一直流行吗?“

我:”没有多长时间。GWT现在最火。“

导师:”你能重新用Tapersty的能力来解决现在的问题吗?“

我:”不能了。现在它没有什么用。“

导师:”Taperstry的知识能帮你对GWT理解的更好吗?“

我:”不能,没有太大用。但是我看到里面有一些设计模式有些相似“

导师:”是设计模式。这些能帮你解决现在的问题吗?“

我:”是的,帮助太多了。“

导师:”技术一直在向前发展。但是有一些是相通的,要找准重点,将80%的时间放在提升基础问题上,余下的20%再去学习框架,库和工具“

我:”Hmmm... 只留20%的时间学习框架,库和工具?“

导师:”是的。你在解决问题时自然就会学会框架、库和工具“

我:”谢谢指点“

导师: 现在不忙着谢,过一段时间,你自然会明白。

这次谈话可以说改变了我的人生!我把所有的讲框架、库的书从书架上全部撤下,一本都没留,那叫一个轻松啊!

我在书架上换了一些长期的基础技术读物,不会过时的那种,比如像下面这类书就占据了我阅读学习时间的80%:

程序员修炼之道 The Pragmatic Programmer

代码整洁之道 Clean Code

程序员的职业素养 The Clean Code

领域驱动设计和实践 Domain-Driven Design

测试驱动的面向对象软件开发 Growing Object-Oriented Software, Guided by Tests

持续交付 Continuous Delivery

我只买了一本关于最新技术的书,是关于 Spring 的。因为根据林迪效应,学习 Spring 是一项不错的投资。

林迪效应认为,对于不会自然消亡的事物,如一项技术或一个想法,其预期寿命与其当前的生命成正比;即,只要这一事物多存活一天,就意味着其预期生寿命会更长一些。

技术的未来预期寿命与其当前的“年龄”成正比,技术每延长存续一段时间,其剩余生命周期也会相应延长。

越是在市场上持续存活时间长的技术,投入时间学习越安全、越值得。

不要忙着去学习最新的技术,因为这些新技术很可能很快消亡。

时间会告诉你,哪种技术值得投入精力去学习,时间是你最好的顾问,学会等待是很重要的。

自那次与导师的谈话后,十年过去了。期间我陆陆续续参与了50多个不同的软件项目的开发。感谢导师的建议,我学到的一切东西都可以在不同公司、团队和领域之间顺利迁移。我学到的知识到今天仍然有用。我没有浪费时间。

电影《时间规划局》剧照

所有的项目看起来都不一样了。但是,如果剥离表面,往深处看不难发现其中的共通之处,比如:

编程语言不同,但设计风格相似

框架不同,但有类似的设计模式

开发人员不同,但与人打交道的原则却是一致的

永远记住,框架、库和工具的更替永不停息,而你的时间很宝贵。

一定要把你最宝贵的时间投入到可迁移的技能上。也就是说,在那些始终会用得到的技能上下最多的功夫,比如下面这些内容,可能会让你长期受用。

不要学习微服务框架,学习演进式架构(Evolutionary Architecture)。

不要学习新的编程语言,学习代码整洁之道、设计模式、领域驱动设计(DDD)。

不要学习 LeSS 和规模化敏捷框架(SAFe),学习精益生产原则(Lean manufacturing principles)。

不要学习 Hystrix,学习容错模式(Fault Tolerance Patterns)。

不要学习 Docker,学成持续交付。

不要学习 Angular、React 和 Vue,学习 Web、HTTP 和 REST。

热门评论:

我同意你的大部分观点,但是我觉得你不用这么坚决地不学习一些东西。

「学习工具」与「学习它所蕴含的设计模式」并不互斥。

2007 年的时候我曾经试图搞清楚到底什么是「数据层」以及怎么使用它,这是当时流行的 ORM 概念。我向别人问了一堆关于 NHibernate(译注:一个面向.NET框架的对象关系映射解决方案。主要用来把对象模型表示的对象映射到基于SQL的关系模型数据结构中去)的问题,很多人都回复我说「你应该先搞清楚原理,而不是学习这个工具」。但我心里想的是,shit,不行啊,因为我需要通过大量的实践才能理解这些原理啊。这是我学习的重要途径。

所以我觉得学习这些蕴含了丰富原理的工具其实是非常有用的。

同样的道理对很多工具都适用。比如 React,如果没有 React 谁能理解虚拟 DOM 呢?

不过我基本同意你的论点,但是过分强调不要学习工具就有一点何不食肉糜的意味了。

另外,Docker 也不仅仅是持续交付,「学习新的编程语言」和「学习设计模式和 DDD」也不是互斥的,Angular 最难的部分也不是 Web 和 HTTP,最难的是学习 Angular 提供的这些傻傻的工具和工作流(我不是很喜欢这些玩意)。

作者的回复:

看来我们达成了共识——学习基础常常意味着深挖某个框架、库或者工具。框架和基础都要学习,但是优先级必须是基础高于框架。

我的观点:

假设你面前有两个应聘者,一个对框架特别熟,但是对基础知识一点都不懂;另一个对框架一点都不熟,但是基础知识特别懂。

你会雇佣谁?

小公司雇佣前者,能用就行。大公司雇佣后者,能堪重任。

·END·

程序员的成长之路

路虽远,行则必至

本文原发于 同名微信公众号「程序员的成长之路」,回复「1024」你懂得,给个赞呗。

回复 [ 520 ] 领取程序员最佳学习方式

回复 [ 256 ] 查看 Java 程序员成长规划

往期精彩回顾

记住:永远不要在 MySQL 中使用 UTF-8

IDEA 调试图文教程,让 bug 无处藏身!

SSM 实现支付宝支付功能(图文详解+完整代码)

Java中的锁原理、锁优化、CAS、AQS详解!

架构师成长之路之限流漫谈

为什么程序员应该有一台 Mac 个人电脑

通过一个简书评论,挖掘一个商业模式

相关文章

  • 程序员,请停止学习框架!

    阅读本文大概需要 4 分钟。 作者:sizovs 译者:方应杭 来源:https://zhuanlan.zhihu...

  • 程序员们,请停止学习框架

    我们都是程序员,我们需要与技术保持同步。每一天我们都要学习编程语言、框架与库。 我们了解的现代开发工具越多越好,比...

  • 停止学习框架!

    我们作为开发者,需要时刻跟上技术的步伐。我们每天都在学习各种编程语言、框架、库,似乎我们知道的工具越多,我们的生活...

  • 停止学习框架!

    我的授业导师曾经教我这样一课: 导师:“艾德,你在做什么?” 我(自豪地说):“我在读一本使用GWT构建现代Jav...

  • 请停止无效学习

    我们继续阅读《请停止无效努力》,今天读的是第二章《学习如何学习:如何将知识转化为能力》。 不知道你有没有这样的体会...

  • angular.js

    angular google 框架 大 约束程序员 程序员听框架的话 遵循框架的规定 库 小 受程序员控制 ...

  • 请停止无效的学习

    现在生活压力大,平均五十个人里四十个人就在攀比,比学习,比生活,比恋爱,比幸福。为了能过上好点的生活,拼了命的工作...

  • 像善待别人一样善待自己

    请停止对自己使用恶毒的预言 请停止批判自己的外在形象 请停止在意陌生人的眼光 请停止所谓的规矩 请清除脑袋中的条条...

  • 自己手写一个 SpringMVC 框架

    前端框架很多,但没有一个框架称霸,后端框架现在Spring已经完成大一统.所以学习Spring是Java程序员的必...

  • 面试大揭秘!从技术面被“虐”到征服CTO,都在这份Java独家开

    程序员是最需要将终生学习贯彻到底的职业,一旦停止学习,离被淘汰,也就不远了。程序员工作都很忙,所以最好能在空闲的时...

网友评论

    本文标题:程序员,请停止学习框架!

    本文链接:https://www.haomeiwen.com/subject/rsfvzqtx.html