驳 《停止学习框架》

22,621 阅读9分钟

今天下午正在码代码的时候,一个朋友微信给我推了一篇发表在掘金的译文 停止学习框架

一看标题,就觉得是标题党,本来只是觉得文章误人子弟,但是一看阅读量太大,截止写这篇文章为止,阅读量已经达到3K,所以觉得还是有必要专门驳斥一下的。

首先声明观点,文章的前半部分是赞同的,但是后半部分完全是不负责任的误人子弟。

更新

发完文章之后就去写代码了,刚刚发现挺多人对本文有疑问,方老师也在文章上说不认为有什么好驳的,可能是我一直没写文章,词不达意吧,所以就更新一下我的核心观点,以免本文被人误解。

1、我的态度

我对方老师那篇译文是持有3个观点的。
一是赞同原文作者的前半部分关于不要只顾着学习框架而丢掉基础建设。
二是对于书单的反驳。
三是对于方老师最后的观点的反驳

下面就来详细说明以上观点

2、关于原文作者的前半部分

原文作者前半部分以对话的形式传达给读者 `不要只专注框架,重点应该放在基础建设`
对这个观点我是持赞成态度的

3、关于原文作者的书单部分

有一点要声明的是,我并不是说那些书不好,而是认为不应该放在此处,
或者说不应该全是方法论的书,原文作者说明了问题,并且提出了解决方案
但是却在实际操作中无意的漏掉了最核心的部分,这部分是什么?是关于如
何提升写代码这一核心竞争力的部分,核心竞争力不是通过读几本方法论的
书就可以提高的,需要的是通过大量的实践以及正确的道路指引,很遗憾,
我的观点,书单中的书都不够资格承担起道路指引这一价值。所以我要反驳的
是书单的书不够核心,从而导致无意中会使得读者产生读几本方法论的书就
可以提高核心能力的错觉。

4、关于反驳方老师的部分

方老师在译文最后给出了2类人,在我看来,都是不符合实际的,没有哪一个
真正的程序员会只知A框架而不知基础,也不会有哪一个真正的程序员
只知基础而不知框架。方老师翻译国外文章的本意是好的,但是最忽略了
文章本身的问题,并且在最后提出了自己的观点,但是这个观点却是有问题的
我不知道方老师是处于什么想法而提出这个观点,但是却容易给读者造成错误
的认知。

5、其他

有几个需要阐述的观点是
1、关于写文章,我对写文章的态度是非常严谨的,我至今从来没有在社区中写过什么文章,因为我自觉
我的能力还不足够支撑我给文章的读者以正确的、有价值的知识输入。希望社区的大V不要将文章作为赚
点击的手段,而是真正作为技术圈中帮助大家解决问题、提升能力的手段

2、关于原文的态度我觉的还是有必要着重阐述一下核心观点
原文作者的提出的问题没有问题,解决问题的方法也没有问题,但是有问题的是最后解决问题的
书单中缺少了最核心的部分,只有方法论,而没有正确的,对提升写代码有实际帮助的书,类似SICP、
CSAPP等。真正读过这些书的读者会很清楚的认知到,相比SICP,原文书单中的书只能算是课外读物。
原文书单中书的价值归纳来自于成熟的软件工程实践,但是这部分在阅读SICP的同时会潜移默化的灌输
到读者的脑袋中。

3、对方老师的态度
方老师在更新中说 "本文已经翻译了「正反双方的观点」,不知有什么好驳的哦"
基于这个观点,我只能产生2种认识,1、方老师没有看到文章中的不足。
2、方老师因为某种原因刻意不指出这一点。不管是哪种原因,我都不希望社区中此类文章大行其道,
这才是我写这篇文章的本意。

另外本文单纯的就事论事,不希望掀起骂战,我只是希望方老师类的人能承担好一个社区大V应该有的责任,
不要只会割韭菜,这也算是对现在社区乌烟瘴气的环境的一种抨击,希望社区中传播的都是有价值的东西,
而不要为了区区点击量将读者带到沟里面,初出茅庐的人很少有能清楚的认知自己的道路的,每一个作者
都有责任避免自己文章坑到读者

1、赞成部分

导师:艾德,你在做什么?
我(自豪地说):我在读一本关于如何使用 GWT 构建现代 Java 应用的书呢。
导师:你读它做什么?
我:作为一名 Java 开发者,我需要跟上潮流。GWT 就是现在的潮流。
导师:你在读这本书之前还读过什么书?
我:我读了一本关于 Apache Tapestry 的书,那本书有 500 页。Apache Tapestry 是之前的潮流。
导师:Apache Tapestry 现在还是潮流吗?
我:不是了,GWT 才是。
导师:你之前从 Tapestry 学到的技能现在还能用吗?
我:不能用了呀。
导师:Tapestry 能帮助你更好地理解 GWT 吗?
我:不能。不过两者都用到了一些设计模式。
导师:那就是设计模式了,设计模式能帮你解决你遇到的问题吗?
我:可以,而且帮助很大。
导师:新事物来了又走,其实有很多共同点。你应该学你该学的。你应该把你 80% 的学习时间用在学习基础上,剩下 20% 的时间才是用来学习框架、库和工具的。
我:哦……只留 20% 的时间学习框架、库和工具?
导师:是的。你在工作中解决问题时自然就会学会框架、库和工具。
我:谢谢指导。
导师:你之后还会谢我的。

这部分的观点我是赞成的,作为一个程序员,专注基础建设才是正确的。

2、驳书单

我买了一些不会过时的书,并用 80% 的学习时间来读这些书:

程序员修炼之道 The Pragmatic Programmer
代码整洁之道 Clean Code
程序员的职业素养 The Clean Code
领域驱动设计和实践 Domain-Driven Design
测试驱动的面向对象软件开发 Growing Object-Oriented Software, Guided by Tests
持续交付 Continuous Delivery

这些书,有些的确是可读的,但是不应该放在这个地方,与框架对应的是什么?是设计模式吗?是程序员的素养吗?还是其他各种方法学?

我认为都不是,与之对应的应该是计算机基础,是什么?是操作系统、组成原理、数据结构与算法等基础。此处可以说是译文的第一个误人子弟的地方,明摆着会给读者灌输一种不需要学框架,只需要学各种方法学就好了的观点。其结果可想而知。

另一方面,我认为不需要刻意的去读书单中的这些书,我们需要学习的是如何去写程序,但是现在网络上大量充斥着一些垃圾文章,导致大部分程序员对如何提升写代码这核心一能力十分迷惑。在提升核心能力面前,我只会推荐SICP、CSAPP等几本书,而不是各种方法论,这其实应该也算是中国大学的一种特色,不好好教学生写代码,反而去研究一些方法论,我们必须要明白,方法论都是从实际操作中得出来的,不好好提升核心能力,而去学习各种方法论,只会让自己成为一个空心木头。

驳译者观点

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

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

这一段,会很明显的告诉读者,哪怕是不会基础,只要会API,学过框架,就会要公司要,哪怕不是大公司。但是我要说的是,这根本就是天方夜谭,作为过来人,可以很明确的告诉你们,如果你对基础一点都不懂,根本不会有真正的公司要你。哪怕是再小的公司,而且,越是小公司,越会要求你基础扎实的同时还要熟悉框架。因为:

越是小公司越是珍惜来之不易的业务,不会将一个一点基础不会的定时炸弹放在身边,真正有经验的招聘者都明白,基础越差,招进来后会需要越多的额外的人手去帮助,得不偿失。

我的观点

我本来是从不在社区中发声的,因为一旦发声,必定会有很多SB攻击,不管出于什么原因。

但是今天必须说的是,可能正是因为持有我的这种观点的人太多,导致现在社区中有太多半桶水都在发文赚点击,给许多初出茅庐的程序员灌各种垃圾。前段时间在知乎一直看到一个问题,为什么靠谱的高级前端这么难找?原因就是因为社区太多这些垃圾信息,导致很少有人明确进步的方向,能够提升成为高级前端。僧多粥少的环境下,当然难找。

另外,对译者,以及类似译者的人,给你们一句忠告,希望你们发文的时候不是这么随便的写一些毫无营养甚至误人子弟的话,不要以为写文章是一件这么简单的事情。