129

量产型炮灰工程师

清蒸不是水煮 2017-05-23 发布于程序员 ruby-china.org

量产型炮灰工程师

量产型炮灰工程师

点击阅读原文

量产型炮灰工程师

2017-05-23 发布,来源:ruby-china.org

在吗

写这篇文章之前我的顾虑非常多,因为它很得罪人而我却捞不到一点好处。但反过来说我写这篇文章并不是针对说「达○」这样的培训机构,或者「李○○」老师的一些言论,也不是针对说 Ruby China 上最新一些类似的培训帖。我是说在座的,都是○○。

我要针对的甚至都不是培训行业,反过来,我认为对于整个软件行业而言,培训整件事情就不靠谱。这不是说我心血来潮,我想诸位的公司只要不是沙丁鱼罐头类型的外包公司,对于培训这件事本身都多少抵触。至于高端的培训班,我想你们也有自己的看法,只是有时候不方便说出来。但我最近了解了一些底层劳苦人民悲惨的事实,使我实在看不下去,只能出来批判一番了。

丢人玩意,退群吧

我们先抛开培训班的问题,我们先来讨论一个经典的面试题,它叫做「FizzBuzz」。输出数字 1-100,逢 3 的整倍数输出 Fizz,逢 5 的整倍数输出 Buzz,又是 3 又是 5 的整倍数输出 FizzBuzz。那么稍有常识的人都知道,无论你学习什么语言,学的水平有多糟糕,这道题都很容易实现。但我们来看一下最常见的一些错误是怎么出现的:

for i in 1..100
 if i / 3 == # 写不下去了
for i in 1..100
 if i % 3 == 0
 puts 'Fizz'
 elsif i % 5 == 0
 puts 'Buzz'
 elsif i % 15 # 写不下去了...
for i in 1..100
 if i % 3 == 0
 puts 'Fizz'
 elsif i % 5 == 0
 puts 'Buzz'
 elsif i % 15 == 0
 puts 'FizzBuzz'
 else
 puts i
 end

很多培训班会告诉你这些算法的基础知识毫不重要,但事实上严格来说这都算不上是一道算法题,这没有任何已有的算法模板来解决,这只是一个最简单的循环和条件分支语句,有超过 9 成的开发者没法正确写对这道题。我认为,这些人压根就不该也不适合来写代码。

令人惊讶的是,这些人并非不能写业务逻辑,比如说让他们写个 CRUD,他们甚至不比你写得慢。但它们的问题在于连理解文字、理解需求的基本能力都不具备。当你说「整倍数」的时候他们无法想到用余数,当你先提到 3 和 5 的整倍数时,他们无法想到 15 应该放在他们两个之前判断。

对程序最基本的逻辑的考察没有通过,并不代表他们无法进行日常的开发,就好像数学应用题不会做也不一定会挂科一样。他们通常会写出非常糟糕的抽象,常见的例如在一个社交网络里给每种类型的 UGC 内容单独建表,然后再为每种类型单独建回复和点赞的表;将用户重置密码和管理员重置密码完全拆成两个方法来实现;无法正确判断自己方法在边界条件下的情况等等。

培训班对于培训这样的程序员来说是容易的,而且市场上需要这些程序员。各位可能很难相信,今天的互联网应用大多都没有什么鲁棒性可言,市面上至少一半的产品都存在高危的漏洞只不过是没有人想要攻击他们而已。市场需要这些能用的垃圾来建一个原型、骗一笔投资或者交付一笔外包。

培训班能教你的归根结底解决的问题是「如何使用一个工具」,而不是「解决问题的方法」。然而在使用工具这件事上,你无论如何都无法描述清所有的场景,就好像你在通过人为地输入一些逻辑,来让汽车学会自动驾驶一样是不完整的。然而在这层嘴脸上,无论是低端的还是所谓的高端的培训班都会用一种方式来糊弄过去,那就是「老师教给你的东西是有限的,更重要的是,你从老师这学到了代码的基本方法,你要上进才能更好学习」。但我们平心而论,老师真的教你们代码的基本方法了吗?他带着你们去学习如何阅读官方文档了?还是教你们程序背后的基本原理了?都没有,他明明在教你语法和一些非常弱智的场景。「解决问题的方法」是学不来的,是你大量日常的工作积累的,所以什么号称两个月掌握别人两年知识的都是骗子,你以为人家两年都在那里划水呢?你以为你两个月真能干出来什么吗?

承认吧,如果有人真的写好了代码,就算他没报班,自学也不会比现在差。

暗示了,明抢了

我觉得从某种角度来说所谓低端的培训班和高端的培训班都是一丘之貉,都在宣传时给你过高的期望,而毕业后这个期望永远是落空的。低端的培训班告诉你培训后你们就可以月入上万的工程师,主要面向的是二线和是三线城市学业失败的人。毕业后通常需要通过伪造简历才能进入一家沙丁鱼罐头外包公司,拿着三四千的薪水,成天干着重复而无用的最底层的编码工作。

而高端的培训班则面对一线城市的中产阶级,宣传时让他们认为通过培训后他们能大大改善现在的生活,甚至利用自己的技术成为创业公司的 CTO,成为自己财务自由的垫脚石。然而毕业后他们能找到的工作也不过如此,根本没有脱离他们中产阶级的生活。

如果单单是这样,我其实并不会写今天这篇文章,因为他们至少是无害的。但事实上,低端的培训班通常伴随贷款出现,可以先上课后付款,学员因此被卖身;而高端培训班高昂的学费常常消耗掉一个中产家庭的全部积蓄,使其最少的财富积累化为乌有。可以说,培训班是坐庄稳赚,而学员们在培训后大多都变得更拮据和悲惨。这种资本驱动下的套路,就和卖老年保健品的那些灰色产业一样灰色。他们通过给你看到一个事物的片面使你盲信,从而满足了他们自己的利益。

放弃吧,如果你没有能力自学,培训班根本帮不了你。

黑暗剑,不存在的

如果反过来回忆一下我们自己学习代码的历程,你会发现都是类似的,是螺旋上升的,是循序渐进的。你是从先会一些最简单的逻辑,到开始写一些能用但不好的代码,慢慢自己通过阅读文档、阅读别人的源码来慢慢提升。如果你一上来就来看 Rails 的实现,你肯定根本看不懂嘛。你对于一项技术的理解,也一定是先认为这是黑盒,这是魔法,再到了解其技术细节,最后和人说这东西其实很简单。

我相信不少 Ruby 程序员都是从 Java 程序员过来的,对于这些程序员来说,他们很容易理解 Ruby 的面向对象的机制,但对于开类和模块注入的一些方法却觉得很魔法。而如果你是从一门 FP 语言过来的程序员,比如说 Lisp,那你会对 Ruby 的 Block 机制感到很亲切,对于开类和注入觉得很容易理解。相反对于一些面向对象的一些手段感到不是很熟练。

这些都是人类「迁移学习」的能力,你将已知的东西来做类比从而理解新的未知的技术。全栈工程师之所以成为全栈工程师,是因为他一开始精通一部分,随着不断学习新技术,不断将已知的迁移上去,从而对技术栈拥有非常全面的大局的认识。然而一些培训班甚至能号称自己能培训「全栈工程师」,你连基础都没有,就相当于同时学习操作十台机器,你想想那可能吗?所以出来的那个不叫全栈工程师,那个叫全栈 Hello World 工程师。你可以在简历上写上:精通各种语言 Hello World 写法、掌握各种数据库的安装、熟练各种操作系统开机。你其实什么都不会。

写代码一方面需要灵性,需要实践经验的积累,另一方面需要打好基础。这些东西本应该是由本科教育提供给你的,但不得不说国内大多数大学的本科教育也没有提供合适的基础教育,而培训班在拮据的时间内也不可能教你这些基础教育的部分。举例来说,如何计算一段程序的时间复杂度、空间复杂度,如何理解栈、队列等数据结构,了解网络协议的基础。这些东西就像是 RTS 或者 MOBA 游戏的经济一样,当前的经济并不会直接影响到当前的局势,但发展一段时间之后,特别是后期和大后期就会立刻成为你的局限之处。如果你连时间复杂度都不会算,你怎么知道两段程序谁的性能更好,又是甚至性能差到根本不能工作的时候你又去求助谁。

醒醒吧,写代码没有捷径,如果你希望在这条路上继续走下去,你必须打好基础,不断学习新的知识才有可能。

RUA

有位大佬曾告诫我,如果不是触及到自己的利益,那么就不要去断别人的财路。但也就是这样,业界和学界都充斥着一股药丸的气息。所有人做教育都是想着帮你卖出去,而你自己学习的目的也是把自己卖出去。所以大学连「SICP」都不上了,培训班才越来越猖狂;所以越来越多的人相信基础知识无用,认为存在让自己成功的捷径;所以加班昏天黑,干不到 35 岁就被退休了;所以发的 paper 申请的专利都是为了完成指标;所以学术上造假,商业上抄袭,技术上停滞;所以你只有跑不起来的代码,快不起来的程序,加不上的薪资,届不到的恋

与其说这些培训机构在骗你,不如说是你贪小便宜的心态正中了这些培训机构的计。

愿世界少一些套路。

更新

在此篇文章发出后的几个小时内,我的微信上已收到了 9 篇不同公司对于某价格不菲的 Ruby 培训营的吐槽,内容竟还高度重合。现整理如下:

  1. 连 SQL 是什么都不知道
  2. 不知道什么是 group_bycount
  3. MVP 模式的 CRUD 写得很熟练
  4. 面试面到无话可问
  5. 写一个简单的循环都写不出,并称是该届优秀的学生
  6. 已加入该公司面试的黑名单
  7. 在未经允许的情况下,将录取学员的公司的 Logo 挂至其官网进行宣传
  8. 给一个月时间写一个最简单的 Rack 中间件,最后回复不会写

虽然此贴不是针对这个培训营,但这个营确实是在收智商税,并且暴露出来的问题还是很明显的。很多人报名的时候考虑到这个营是李○○办的,老师是 xd○○○。便认为这些背书可以成为帮助他们找到好工作的捷径。然而事实上这些背书确实起了作用,在第一批学员刚毕业的时候,社区里大多数的公司都抱着非常友好和鼓励的态度欢迎他们。但是随着时间的发展,大家越发认识到这些毕业生基础知识薄弱、学习能力低下的特点,哪怕一些已录取的员工也被转岗,开始出现了不少牢骚,对于这个营毕业的学生开始抵触。可见也就是这些人自己已经彻底毁掉了这个背书本身的价值了。

评论里还有反应这个营在培训时曾主张通过不断练习形成「肌肉记忆」。我从未在编程这件事上听说过这种词,如果说一件事情是「重复性」的,那当然就把它封装抽想起来,或者注入进脚手架,哪里有形成「肌肉记忆」这种说法。而这种错误的训练方式也解释了上述企业对于这些人的印象。

当然也不少人质疑说,光骂培训班,那受过高等教育毕业的学生技术就一定好了吗?当然也不是这样的,事实上我国大多数高等学府的计算机教育也是无用的,甚至是有害的。中国大学在多次扩招后,除了少数几个学校,专业教育的大部分也不靠谱。许多学校安排了四年的课程,确实涉及了不少基础知识,但结果却本末倒置,觉得学生听不懂课上得简单,学生也没有好好学好。我甚至见到过某 985 学校算法课期末考默写,因为好好考试会有太多人挂科。我也很难相信这种专业毕业的学生究竟是在给行业输送人才还是压力。

希望所有在这行业里奋斗的同学们能沉下心多钻研,不要相信有所谓的捷径。

3.8k 浏览 84 收藏 报告 阅读模式
60 条评论
疯子先生 · 2017-05-24

说实话,这是一种社会趋势,不仅仅是软件行业,很多其他领域都有这个问题。但是不能一句话否定。如果人本身有觉悟,自学能力,给他教会了工具,他能领悟到自己该学什么,不该学什么。我是计算机专业出身,当初身边有很多同学,虽然学校是叫了“解决问题的能力”,但是大部分人脑子里,这只是一个抽象的东西,没有办法“使用工具”。这在自学路上是是个很大得阻碍。成就感往往是自学者的动力。你理论知识解决问题的能力再强,你不会使用工具,你就卡在哪儿了。如果你学会了使用工具,你就知道了你需要往哪里想,真有觉悟,你就知道如何提升自己。所以这个看人的觉悟,觉悟这东西,难以授人。其实学校也不能说教你解决问题,其实大学里的太多东西,所谓的学霸能考高分,但是到头来,连一个毕业设计都做不了。所以举一反三的能力,才是能让一个程序不断成长的,之至少我是这么认为。谁也不能一口气就写出好代码,需要不停的练习,记忆,升华。自学是很痛苦的事情,求助别人是捷径,但是完全依赖别人,那问题就大了。这里的别人就是那些培训机构。别人带。你能快速走出森林,自己走你会发现美丽的大自然。如果不肯走,被拖着,你就死在森林里。如果说的不好欢迎批评。

+8 回复

0

@阿拉丁神油 我们大学有门课,叫HOW THINGS WORK,就是专门教人解决问题的方法的。

boxsnake · 2017-06-26
0

@boxsnake 那你们学校很棒啊。

疯子先生 · 2017-06-26
autmn · 2017-05-24

看到这文章,颇为感触。刚刚大学毕业,本来对这个世界是充满信心的,但是,现实却不停的打压着你。在大学里确实却在一些问题,老师教,学生不听。学生听,老师教不深。从老师的角度来看,他要顾全全班的进度。然而,大部分人对自己所选的专业都不是自己热衷的,所以,他们上课的态度,得过且过。导致真正想学的人,有种求救无门的感觉。
没人教,那就自学吧。自学这条路是辛苦的,也是充满意外和惊喜的。自学的知识要比老师言传身教的来得深刻。一个小问题,会折腾你一小时,一天,甚至是一周。最终你实现了,那感觉,奇妙无比。同时,自学这条路,也是有缺点的。没人正确的指导,你会陷入很多误区,你所理解的不一定正确的,而你潜意识地认为自己是正确的。结果,就会像武侠小说里的练功走火入魔一样。
我以为,我学了vue.js,毕业设计做的不错,被评委优秀。我以为我应该会找到一份实习的工作。结果,十家有九家面试公司都是培训的。眼看实习的期限就要到了,如果找不到实习,拿不到实习证明,毕业也就无望。无奈之下,选择了培训。
开始,我以为,培训可以让我把基础打扎实一点不会的话,也可以直接找人问问。结果,和学校里没区别。还得靠自己自学。
起初雄赳赳的心,不知还能坚持多久。唯有在夜里不停安慰,催眠自己,努力吧,少年。

+6 回复

小马过河 · 2017-05-23

被一个垃圾学校的垃圾专业坑害,10年一路自学过来,太理解楼主说的意思了,身边太多这种程序员了,你们见过一个4/5年的phper不会php的基础函数,不会Linux,不会git,不会sql吗,因为他们会tp

+6 回复

1

哈哈哈

George · 2017-05-23
1

@小马过河 tp是什么

chinleo · 2017-05-23
0

tp??

DuetAskein · 2017-05-23
甘言川 · 2017-05-25

没看完 觉得一开始就太极端

博主的问题确实存在,但是我觉得培训机构比大学好的多 起码他让你熟悉了专业该熟悉的基础知识。至于博主决定例子其实是个人逻辑问题 不是培训本身问题,这种判断高中就学过了。

我是培训出生的,我既感谢培训机构又痛恨培训机构,感谢他带走入门,痛恨他学费太贵和包就业的扯蛋话。

现在我在已经公司做技术经理,我面试不少人,手下也有不少培训出来的,整体感觉培训出来的比没参与培训的能力来的好些

以上只是个人的观点… 总结来说 不是培训机构怎么样,而是培训的人怎么样

+5 回复

阿彭 · 2017-05-26

如果说有那样成功例子,一个从培训机构走出来的人,去了网易实习,最后自学,留下来了,那么培训机构就会把它无限放大,但其实这学生本身就具备自学能力,即使不通过培训机构也能成功。

+4 回复

只是一个id · 2017-05-25

我跟着laravel学还一点点的看框架源码依赖包源码渐渐的就和相同工作年限的距离拉开了

+3 回复

0

@只是一个id 我也在看和学习laravel。。对提升代码质量很重要

幽弥狂 · 2017-05-26
2

@小恒恒思密达 跟着框架作者走渐渐的就了解到了composer,vue,webpack,mvc,mvvm,restful api,php7新特性,我最近面试的一些人都已经2017年了还不知道composer是什么,这种人被淘汰掉一点都不奇怪

只是一个id · 2017-05-26
0

@只是一个id 确实很不错的框架

幽弥狂 · 2017-05-27
jsliang · 2017-05-23

我能怎么办,我也很难过啊~
本科学校4年啊,浪费了人生,然后收了10几万学费,教你一些百度可以找到的,然后就说:嗯,基础的我们都交了,啥?你找不到工作?抱歉是你太懒了,我们这个打着(国家)官方名义的培训班不负责你们就业

+3 回复

0

十几万倒真的没有

_CRY · 2017-05-24
1

@_CRY 一年1万8学费,医保、水电各种费,10几万有的

jsliang · 2017-05-24
0

@梁渣渣 大部分大学比培训班恶心100倍

小马过河 · 2017-05-24
王力 · 2017-05-24

那大学呢,高考呢?

+2 回复

奥菲斯 · 2017-05-24

说的很对 我刚自学完js的时候 和一个保险推销员争论一个理财产品 每年2万 存10年 年化5.8%的收益
我花了半小时才写了了前10年的数字,
var x;
for(var i=1;i<=10;i++){

  x=Math.pow(1.058,i);
document.write(x*20000+"<br />")

}
然后又花了3个小时才想出如何把10个数相加
var y=0;
y=y+x;
document.write(y*20000);
当时把js的基础练习题刚好做完,感觉能写一些东西了,遇到这个事后,发现自己什么问题都解决不了,现在想想这段代码,真TM简单。。。。。

+2 回复

楞个里格楞 · 2017-05-27

我是在北京某机构培训出来的,主张造假工作经验,造假学历。刚开始挺反感的,想着先找份实习工作慢慢来,薪资低点无所谓,现在结课三个月了还没找到一份工作,不造假连面试机会都没有,所以我也准备造假了,没法。。。。

+1 回复

0

@楞个里格楞 对,我学历是真的,工作经历写了培训机构的名字。8岁接触电脑,九岁自己玩代码(也不算认真学就是折腾),现在找到了一份还算不错的工作。造假确实是没办法,没就业经历非应届的连门都进不去,毕竟都要求就业经历。对于留学党而言,相关实习经历都很少啊,而且回国之后还不知道算不算应届。

boxsnake · 2017-06-26
0

@楞个里格楞 另外我计算机都是自己折腾的专业是基因学,就更别谈在学校里做了哪些相关项目了。

boxsnake · 2017-06-26
Right4Y · 2017-05-26

太多培训机构把垃圾课程卖成天价了 只能说无商不奸吧 都是打算捞一波走人的心态在做这一行

+1 回复

0

@Right4Y 走啥人,毕竟小白人傻钱多,不考虑开分部就不错了。

boxsnake · 2017-06-26
ijay · 2017-05-25

一个野生不想当炮灰码农的码农前来觐见!

+1 回复

倦卧微闻浅草香 · 2017-05-24

我觉得也不能完全否定。
培训班的意义在于快速入门,有经验的老师带着可以少走很多弯路,对整个知识体系有一个完整的了解。
一句话总结就是:师傅领进门,修行靠个人。

+1 回复

张京 · 2017-05-24

我遇到过的从培训班出来的iOS工程师,死活搞不懂为什么字符0不等于数字0,我都让他去百度ASCII,他看了半天还是一脸蒙逼,死活无法理解,我都快要崩溃了。

+1 回复

0

@张京 哈哈,不是学obc吗,基础这么low

splub · 2017-05-27
0

@splub 虽说程序员水平是看个人的,不能一片打死,但学iOS的的确很多只会拖控件拉线的。

小马过河 · 2017-05-28
George · 2017-05-24

我倒是觉得,这世间需要这样的人,如果每个工程是都那么的专业,恃才傲物,有多少个能落地?语言或工具为什么要一层层的抽象?就是为了降低使用成本!那些一个月几千块钱的程序员,虽然他们接触不了大项目,但是大环境需要这些廉价的人……当然你可以说是这些人扰乱了市场,但总有人愿意为这些雇主提供廉价的服务,比如外包公司!

+1 回复

0

@Jinrenjie 嗯,我觉得科班出生的无非就是不需要自己去觅食有人喂。我从9岁开始自己玩代码玩过来的,觉得还是兴趣比较重要。

boxsnake · 2017-06-26
梨花猫 · 2017-05-24

初学者来说,表示不懂

+1 回复

George · 2017-05-23

事实证明少走弯路就是捷径

+1 回复

一个宇航员 · 2017-10-15

培训机构主要给个学习环境吧,在那里至少能让人老老实实的学习,不过价格确实坑爹

回复

NoDocCat · 2017-07-21

为师把毕生的攻击传给你,出去你就说三年经验?

回复

boxsnake · 2017-06-26

写代码是有些捷径的,但是培训机构的老师甚至一些老程序员都不知道,所以也不要怪培训机构不给你捷径,因为他们自己也不知道捷径在哪里。

我总结的捷径是:忘记你想要学习的东西,然后试想,如果缺少这个功能,你会想怎么最大效率地去实现这个东西,而且保证其稳健和可扩展,或者站在作者的角度去想,这个架构怎么做才会更合理,然后再去看为什么这样做。这个才是捷径,基本上几小时就能把一个未知的东西转化成已知,比起死记硬背啃书本要快的多。

回复

载入中...