大多数人,都低估了编程学习的难度,而高估了自己的学习能力和毅力。
当前系列: (3)渠道 修改讲义

上一篇点赞很少,不知道是不是因为“程序员是IT民工,我看差不多”。(O(∩_∩)O~,开玩笑)

不知道为什么程序员同学自称“IT民工”,是因为工资低?民工的收入可不低的。我以前工地上一对贴砖的泥工夫妇,供城里两个孩子读私立学校,07/08年的时候在重庆,一年收入怎么都要过10万。是因为工作环境差?敲代码的工作环境差,说出来都是笑话……

我们换个角度。

我做过一段时间装修,有时候工地出了纰漏,我就这样劝业主:“唉呀,都是些农民工,只有这个样子……”现在都还能想象,业主叹了一口气,摇摇头无可奈何的样子。这句话居然很奏效!

凡事经不得细想,细细一想就奇了怪啦,为什么呢?

只能是业主因为“农民工”就潜意识的降低了预期。潜台词就是:农民工嘛,也就这个水平啦,算了算了……但“为什么”不要停,为什么会有“农民工就这个水平”的下意识呢?

换言之,“农民工”和“正式工”(暂时借用这个词,和“农民工”相对)之间究竟有什么区别呢?当然,我们这里只讨论工作质量,不涉及其他。

首先,农民工是不是就意味着技术差?真不是这样的。在我的工地上贴砖的泥工,可以用红砖和木条组合,把地砖的一点点拱起来慢慢的压平——简直是神乎其技!你想啊,地砖啊玻化砖,生生被压得发生了形变,而且还控制得刚刚好?那工厂里的“正式工”呢?除去机器,还是有很多手工活的。这里面当然有用叉车开啤酒瓶的牛人,但一样有技校毕业的菜鸟,技术能好到哪里去?

那么,是不是农民工的工作态度差?就像我前面提到的,没有责任心?我想来想去觉得可能还是不对。工厂里的工人就不是人啦?是人就会有困倦疲惫好逸恶劳,糊弄一下躲在厕所里抽支烟啥的。相反装修师傅是直接面对业主,整个业务是他“包”了过去的,出了质量问题他跑不掉的,他责任心想来还要强一些才是。

所以,得再仔细想想,问题究竟在哪里?差别究竟在哪里?

在于工作环境。

提到农民工,我想到的就是乱哄哄的建筑工地;与之相对的,是井然有序的工厂车间。但这并不是指“生成工具”的不同。很多人会凭直觉想得:机器做出来的东西,当然比手工强……但问题真不在这里。我举两个例子:

一是我有一个前辈是做木门的。我到她的厂房一看,当时就抽了一口凉气。其实室内门(装修)现场也可以做,而且现场做似乎更便宜,但我一看到工厂的做法,就知道现场做门,是绝对会被淘汰的。那时候他们工厂做门,也没有机器,都是手工,但他们是流水线的做法,每一个人,只负责一个工序,下料的下料,雕花的雕花,打磨的打磨,上漆的上漆……一溜水的做下来,现场给人的感觉反而是“静”,特别的安静。没有那种机器轰鸣热火朝天的感觉,但每个人的手里都没停,那种效率,高得吓人。而且质量不赖,就以雕花为例,几个师傅,明显都是分了工的,雕边框的是一个人,雕中间粗线条的是一个人,细致雕刻成型的又是一个人,不管哪一个人,每天要雕几十遍,能雕得不好么?

我另外一个前辈,做“预制板”——钢筋混凝土的房梁。所谓“预制”,就是“预先制作”,也就是说这种板不是在工地现场浇筑的,而是在厂里做好了,拖到现场安装。他的预制厂,干活的同样也是“农民工”,但那种精气神就不一样,隐隐就有一种“产业工人”的气象。

好,问题就来了,什么才是“产业工人”的气象?

我想了又想,如果一定要用一个词来形容的话,就是:不散漫。不散漫,就是有规矩。

农民工,其实可以理解为即是农民又是工人的一群人。他们好像干着工人的活,但身上其实还保留着农民的特质。(特地声明:绝不是歧视农民,我自己都有一个田园梦,纯粹就事论事)工业社会和农业社会最大的区别是什么?机器生产机器?不,那是表象。你看我上面的两个例子,工人都还是用手工,没什么机器。我记得那本穿越小说里说过:即使给中世纪的军队配上飞机大炮,他们还是封建军队。

那么接下来这句话就很不好听了:即使用着21世纪最先进的编程技术,IT民工还是一群民工。自由散漫,没有规矩。而且这还是一种时髦,一定要圆领衫牛仔裤胡子拉碴一副Geek的派头才行。要打破束缚嘛,要创新,不拘一格,特立独行……

我并不是反对自由,相反非常渴望自由,看我的名字就知道了。但是,自由是有代价的。

相对于农业社会,工业社会最大的特点不是人性的解放,恰恰相反,是人性的束缚。日出而作田园牧歌般的生活结束了,取而代之的是朝九晚五的流水线劳作:每一个人都是一个巨大机器上的一颗螺丝钉,随着机器轰鸣向前,不舍昼夜。

工业社会的本质不是分工,而是协作。没有协作,你怎么分工?越是精细化的分工,越是要求高契合度的协助。每一个零部件,都必须大小统一,开箱即用,以此推之,整个社会,其实是被“组装”起来的。无论是我们手里的iphone,还是整个政府的运作。

说了这么多,终于,“组装”这个词,是不是和让我们这些IT狗觉得有点耳熟?

“不要重复造轮子”,谁都懂的道理,IT界的名言。不重复造,怎么办?拿过来就用,组装嘛!现在的开源代码不计其数灿若群星,理论上90%的项目,根本不需要写多少代码,找到合适的,拿过来,直接用就是了嘛……

但事实上呢?都在忙着造自己的轮子。为什么?其实是因为这些轮子不好用。为什么不好用呢?农民工造的呀!开源嘛,我只是为了满足我的需求/兴趣,随便写写,自由发挥,然后整个半拉子扔在哪里……

开源这样做是没问题的,但如果一个企业,自己的生产代码,也沾染了这种自由散漫的精神,就会带来两个后果:

  1. 质量不稳定。代码写完了么?写完了。能跑么?能跑。OK!——真的OK?这是程序员最大的顽疾!程序员写代码追求很多东西,比如语言,比如性能,比如优雅……但偏偏没有“稳定”。我带的团队成员可以理直气壮地和我说:“代码质量不是我的事,找bug是测试人员的事。”行外人听到这句话可能下巴都要掉地上去了,但我知道知道这种心理:这是人性。
    很多开发人员,写代码就像是在打游戏或者鼓捣他的玩具,比如一件模型飞机,“哇塞!飞起来了。”OK,搞定,兴奋劲一过,就懒得搭理,要去找下一个玩具了。至于这飞机是不是每次都能顺利起飞,刮风下雨有没有影响,操控方不方便,降落是不是平稳,耐不耐用……这些杂碎事情,你知道有多烦吗?
    如果依着程序员的性子做产品,你永远只能得到一个半成品。飞机很快就能起飞,但不会降落,它直接从天上往下栽。
  2. 可重用性差。很多同学一谈到重用,马上就想到“抽象”“继承”、“面向对象”、“设计模式”之类的东西,但我要说的不是这个。重用的前提是“标准统一”,IT行业的行话是“协议”,或者“接口”,使用统一的协议或者接口,才是大规模重用的最坚实基础,但这个不是我们能决定的,所以此处不表。我们说一个微观的东西:代码的可读性。
    代码和工业零部件有一点不一样:它是可以改的。所以开源的代码,理论上哪怕它有那么点不合适,我们是可以拿过来改的。但问题在于,这只是理论上,实际情况是:别说改,连看都看不懂!为什么总是愿意自己造轮子,一个重要的原因就是:看别人的代码比自己写还难。
    为什么代码看不懂?一个字:乱。很多代码,你去看它的代码,乱成一团糟。本来业务逻辑就快让人绕晕了,再加上代码那个乱啊,尤其是来来往往很多人写的,简直就像迷宫一样, 让你一脑子的浆糊……
    这种东西,你怎么敢用?
    同样的,这个问题最大的问题还是在于程序员的思维。一个刚毕业进入团队的小兄弟问我:“有没有那种写出来只有自己看得懂别人都看不懂的代码?”注意他的语气,和他一脸的神往,神往,神往……他认为能写出这种代码的人才是牛人!
    过了两年,他自己牛逼了。我review他的代码,“你这一段我怎么看不懂啊?”他耸耸肩,“你看不懂我也没办法了!”咦……好在我还有几把刷子,好歹还算是个行业内人员,然后从他代码里抓出了bug,不然还真镇不住他了?他的潜意识里面,“我写的代码,看不懂是你的问题。”

这就是IT民工的“民工思维”。

学习笔记
源栈学历
今天学习不努力,明天努力找工作

作业

觉得很 ,不要忘记分享哟!

任何问题,都可以直接加 QQ群:273534701

在当前系列 (3)渠道 中继续学习:

上一课: 士气
下一课: 请一个长假

多快好省!前端后端,线上线下,名师精讲

  • 先学习,后付费;
  • 不满意,不要钱。
  • 编程培训班,我就选源栈

更多了解 加:

QQ群:273534701

答疑解惑,远程debug……

B站 源栈-小九 的直播间

写代码要保持微笑 (๑•̀ㅂ•́)و✧

公众号:源栈一起帮

二维码