停止学习框架

标签: 学习 框架 | 发表时间:2019-03-16 22:24 | 作者:
出处:http://kb.cnblogs.com/

  翻译作者: 方应杭

  这是一篇译文, 原文(Stop Learning Frameworks)在 Hacker News 上获得接近 500 个点赞。

  每过几年都有类似的文章出现,然而程序员却依然疲于学习新的框架,看完此文希望对你有所启示。

  那么,译文开始。

  我们是程序员,每天都在了解最新的技术,每天都在学习编程语言、框架和库。

  因为我们知道的现代编程工具越多越好,对吧?

  不停地追随 Angular、React、Vue、Riot、Ember、Knockout 的脚步还真是一件有意思的事情呢。(译注:反话)

  但这其实是在浪费时间!

  时间是人类最宝贵的资源。时间是有限的、不可再生的,你可以用钱买任何东西,却买不了时间。

  技术,就像时尚,在以光速在变化着。为了赶上它,我们需要跑的非常快。

  但是这个跑道上没有终点,所以没有赢家。


华尔街之狼

  我的导师曾经这样教我:

导师:艾德,你在做什么?我(自豪地说):我在读一本关于如何使用 GWT 构建现代 Java 应用的书呢。

导师:你读它做什么?我:作为一名 Java 开发者,我需要跟上潮流。GWT 就是现在的潮流。

导师:你在读这本书之前还读过什么书?我:我读了一本关于 Apache Tapestry 的书,那本书有 500 页。Apache Tapestry 是之前的潮流。

导师:Apache Tapestry 现在还是潮流吗?我:不是了,GWT 才是。

导师:你之前从 Tapestry 学到的技能现在还能用吗?我:不能用了呀。

导师:Tapestry 能帮助你更好地理解 GWT 吗?我:不能。不过两者都用到了一些设计模式。

导师:那就是设计模式了,设计模式能帮你解决你遇到的问题吗?我:可以,而且帮助很大。

导师:新事物来了又走,其实有很多共同点。你应该学你该学的。你应该把你 80% 的学习时间用在学习基础上,剩下 20% 的时间才是用来学习框架、库和工具的。我:哦……只留 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 个不同的软件项目。得益于我导师的建议,我学的所有东西都适用于不同的公司、团队和领域。我的知识今天仍然有用。我没有浪费我的时间。

  如果你看得更深入些,你会发现所有的软件项目都是类似的:

  • 用的编程语言虽然不一样,但是设计方法是类似的。
  • 用的框架虽然是不一样的,但是设计模式是类似的。
  • 参与的开发者是不一样的,但是如何和这些人打交道是不变的。

  记住,框架、库和工具来了又走。时间才是珍贵的。


© In Time (2011) by Andrew Niccol

  将你的黄金时间用于学习通用技能,那些不会过时的技能。

  • 不要学习微服务框架,学习演进式架构(Evolutionary Architecture)。
  • 不要学习新的编程语言,学习代码整洁之道、设计模式、领域驱动设计(DDD)。
  • 不要学习 LeSS 和规模化敏捷框架(SAFe),学习精益生产原则(Lean manufacturing principles)。
  • 不要学习 Hystrix,学习容错模式(Fault Tolerance Patterns)。
  • 不要学习 Docker,学成持续交付。
  • 不要学习 Angular、React 和 Vue,学习 Web、HTTP 和 REST。

  热门评论:

我同意你的大部分观点,但是我觉得你不用这么坚决地不学习一些东西。「学习工具」与「学习它所蕴含的设计模式」并不互斥。

2007 年的时候我曾经试图搞清楚到底什么是「数据层」以及怎么使用它,这是当时流行的 ORM 概念。我向别人问了一堆关于 NHibernate 的问题,很多人都回复我说「你应该先搞清楚原理,而不是学习这个工具」。但我心里想的是,shit,不行啊,因为我需要通过大量的实践才能理解这些原理啊。这是我学习的重要途径。

所以我觉得学习这些蕴含了丰富原理的工具其实是非常有用的。 同样的道理对很多工具都适用。比如 React ,如果没有 React 谁能理解虚拟 DOM 呢? 不过我基本同意你的论点,但是过分强调不要学习工具就有一点何不食肉糜的意味了。

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

  作者的回复:

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

  我的观点:

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

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

相关 [学习 框架] 推荐:

【PHP框架CodeIgniter学习】Helloworld

- - CSDN博客推荐文章
在想做API的时候 ,在搜索发现大家都钟爱推荐 CodeIgniter 这个轻量级开发框架,于是乎就搜索了一番. 原来CodeIgniter 简称CI,开源框架,好像很多的CMS系统都是基于它进行二次开发的. 自己之前使用过的PHP框架有 ThinkPHP,PHPWind等,感觉有点复杂(可能是自己不大熟悉PHP的原因).

停止学习框架

- - 博客园_知识库
  这是一篇译文, 原文(Stop Learning Frameworks)在 Hacker News 上获得接近 500 个点赞.   每过几年都有类似的文章出现,然而程序员却依然疲于学习新的框架,看完此文希望对你有所启示.   我们是程序员,每天都在了解最新的技术,每天都在学习编程语言、框架和库.

PHP API 框架开发的学习

- 郑小东 - 标点符
基于互联网的应用正变得越来越普及,在这个过程中,有更多的站点将自身的资源开放给开发者来调用. 对外提供的API 调用使得站点之间的内容关联性更强,同时这些开放的平台也为用户、开发者和中小网站带来了更大的价值. 在开发API前,你需要的是给API设定一个框架,这个框架一定是要简单的且是容易扩展的. 下面就是用就来看看如何使用PHP来创建一个API.

学习Web图形的框架 WebGraph

- Le - 开源中国社区最新软件
WebGraph 是一个用来学习Web图形的框架,提供简单的方法和先进的压缩技术用来管理大量的图形. WebGraph 提供了 C++、Python 和 MATLAB 以及 Java 语言的版本.

Spring框架学习【基础知识】

- - CSDN博客推荐文章
1.在java开发领域,Spring相对于EJB来说是一种轻量级的,非侵入性的Java开发框架,曾经有两本很畅销的书《Expert one-on-one J2EE Design and Development》和《Expert one-on-one J2EEdevelopment without EJB》是java高手进阶必看的宝典,Spring就是从这两本书的理论发展起来的.

深度学习三大框架对比

- -
| 导语 Science is NOT a battle, it is a collaboration. 人工智能的浪潮正席卷全球,诸多词汇时刻萦绕在我们的耳边,如人工智能,机器学习,深度学习等. “人工智能”的概念早在1956年就被提出,顾名思义用计算机来构造复杂的,拥有与人类智慧同样本质特性的机器.

机器学习和深度学习的最佳框架大比拼

- - 文章 – 伯乐在线
在过去的一年里,咱们讨论了六个开源机器学习和/或深度学习框架:Caffe,Microsoft Cognitive Toolkit(又名CNTK 2),MXNet,Scikit-learn,Spark MLlib和TensorFlow. 如果把网撒得大些,可能还会覆盖其他几个流行的框架,包括Theano(一个10年之久的Python深度学习和机器学习框架),Keras(一个Theano和TensorFlow深度学习的前端),DeepLearning4j(Java和Scala在Hadoop和Spark之上的深度学习软件).

某智能家居项目框架学习总结

- - CSDN博客架构设计推荐文章
这个月来第一篇博客,各种其他事情. 之前负责过一个智能家居项目的二次开发,苏州一家公司做的,项目还是分了好几个系统,对业务流程的不同部分进行了划分,我是此项目的主要负责人,通过老师的指导,对这个项目也有了一些了解. 此项目运用了一些框架,有些也是我第一次接触到的,下面将对项目用到的一些框架进行总结.

大规模机器学习框架的四重境界

- - 吴良超的学习笔记
文章为转载,原文链接见 这里,作者是 carbon zhang. 这篇文章主要介绍了分布式机器学习中的若干重点概念和经典论文,包括数据并行和模型并行、分布式框架的流派、参数服务器以及同步协议的演进等,非常值得一看. 自从google发表著名的 GFS、MapReduce、BigTable 三篇paper以后,互联网正式迎来了大数据时代.

移动跨平台框架Flutter介绍和学习线路

- - SegmentFault 最新的文章
Flutter是一款移动应用程序SDK,一份代码可以同时生成iOS和Android两个高性能、高保真的应用程序. Flutter目标是使开发人员能够交付在不同平台上都感觉自然流畅的高性能应用程序. 我们兼容滚动行为、排版、图标等方面的差异. 在全世界,Flutter正在被越来越多的开发者和组织使用,并且Flutter是完全免费、开源的.