程序员的走错了路

至少+100+年内,程序员都是有饭吃的。 但目前大多数程序员都走错路了。 他们非要在红海里厮杀,才会对前途无比悲观,抱怨「程序员已死」。 现在社会上普遍有一种反程序员的情绪。 同样是+985+的毕业生,我学机械,学工民建(工业与民用建筑)的,毕业以后+5000+元/月;你学电子工程的,进+BAT,起薪就是+20+000+元/月。 差距如此之明显,自然会让很多人心里不平衡,于是诸如「程序员是吃青春饭的」「程序员+996,就和当年的出租车司机、外企员工一样」「程序员短期短缺,未来会像山东蓝翔那样大规模供应」之类的言论甚嚣尘上。

久而久之,人们一说起程序员,就有一股悲观情绪,甚至程序员群体内部,对自己的发展前景,也是普遍悲观的。

2017+年,经历了多年的扩招之后,BAT+终于缩编了,新人一律「咔嚓」。 在公司内部,一个个项目小组也是惴惴不安,一副大祸临头的样子。 因为随着越来越多的软件被开发,公司越发显得人员冗余起来。 一些软件的版本已经迭代到了+7.0,界面已经美轮美奂,弹出一个窗口,都会有幻影效果,显然升级优化的空间已经不大。 更为糟糕的是,公司内部已经搭建了「软件之软件」「函数之函数」,简称函数库。 举个例子,最早时三维的画面换算,像人物的远近大小这些都是要你自己写算法的,因此+3D+游戏+Doom+(《毁灭战士》)的出台,就成了一件了不起的大事,每家游戏公司都要养一群精通+3D+的程序员。 后来有一位大神把所有的三维函数统一写成了+DirectX+函数包,代码高度优化,高度精美,直接拿来用就可以了。 这样一来,公司何必再养一个团队呢?

再比如说,20+多年前流行的游戏《仙剑奇侠传》,那真的是一行一行代码敲出来的。 游戏中,李逍遥想要见林月如,就要专门编一段「情话对话程序」。 可是后来,随着《仙剑奇侠传》系列出了第二代、第三代,游戏公司老板渐渐发现,不需要每次都编写新的代码,反正都是+RPG+(RPG:是英文+Role-playing+Game+的缩写,角色扮演游戏,游戏类别的一种)游戏,拿过来把妖怪画面换一下,就是一个新的游戏嘛。 再后来,游戏公司更是弄出了一个叫作「游戏引擎」的怪东西。 现代的游戏制作业,根本不需要自己写底层代码了,而是更像我女儿玩的《我的世界》,它有一个编辑器,你把各个素材输进去,直接成了一个新游戏。 于是程序员开始抱头痛哭,纷纷哭诉:「完了完了,没戏了,主程序都设计完了,我们可以回家卖红薯了。」 制造 如果看完以上的内容,你觉得很有道理,于是回去踢掉程序员男友,那你就错了。

因为接下来我对程序员的描述是:由无序变为有序;由非标准化变成标准化;「熵」的处理者。 首先说一说什么是「熵」。 举一个最简单的例子,大家一定都见过铁钉。 你可能不知道的是,在莎士比亚的作品中,有好几次描写过铁钉。 这并不是说莎士比亚有多么热爱木匠活,而是在他那个时代,铁钉很值钱。 因为在中世纪,想要打造一枚铁钉是一件很不容易的事情。 你想一想,铁钉要磨得既细又薄,两端还要连接起来,不凝固,这都是要靠纯手工完成的。 所以在工业革命之前,欧洲的家具连接用的都是木榫头,只有极少数富人才用得起铁钉。 工业革命以后,人类进入工业时代,铁钉马上就烂大街了。 因为全自动制钉机每分钟就能制造+300+个铁钉,一天的产量就是一吨。 其原理大概就是一根铁丝被机器一节节截断,然后自动焊接帽头。 工业机械看起来复杂,其实基本原理很简单,通常就是一个圆盘,转啊转啊,因此,工业机械非常擅长制造大批量商品。 但是这千千万万个商品是一模一样的,至于「熵」的复杂度,几乎没有。

下面我们进行第二步,我不做铁钉了,我要做螺丝。 前后会有十几个批次,每次的大小、斜度都不同,请问怎么设计? 螺丝和铁钉的区别就在于螺丝是有斜纹的,因此,你要加一道工序,先在铁丝上刻纹路,然后根据参数,每次调整刻刀角度,最后再焊接。 接下来又有新要求了,也就是第三步。 斜纹不用刻了,但是要在 每枚铁钉上面刻上八卦符号。 如果说螺纹还是合理要求,那八卦符号可就要让厂家为难了。 因为这在前工业时代是无解的,只能靠人手车钳刨,难道还能把+10+万根钉子一一雕花? 最初的红旗系列轿车是没有办法量产的,因为汽车发动机的汽缸有七个出入孔,连环勾嵌,极为复杂。 这种迷宫一般精密的高级部件,是靠八级铣工老师傅纯手工一点点磨出来的,因此,产量无论如何都上不去。 但是,这一切在数控机床面前都得到了解决,无论是三轴、四轴还是五轴,只要输入程序,就可以离开了,过一会儿再回来,就会发现离合器已经加工好了。 那么我们再进入第四步,给你一吨钢,一台数控机床,在你前面展示的是刚着陆在火星表面的火星车,请根据火星车返回的土壤分析、重力条件,自行设计一辆汽车,要求数据机床现场打印,打印完了,人就可以直接开走。 这样的要求,数控机床显然无法完成,因为它只能打印设定好的程序,而要根据环境反馈算出设计方案,则需要极大的智能。

所以,从第一步制作铁钉到第四步,呈现给我们的场景越来越复杂。 「熵」含量增加了,因此需要更高级的文明才能处理。 数码化 我举了上面这样一系列枯燥乏味的例子只是为了说明:程序员正在数码化我们这个世界,他们把整个世界,把机器不懂的方式,格式化成机器懂的方式。 机器的本质是「力量庞大,但属于智慧底层」。 任何事务只要交给机器完成,效率就可以提升千万倍。 但是机器的智慧却没有多少,哪怕是铁钉加纹路变螺丝,靠机器本身也是没法升级的。 程序员的职责是给机器增加智慧,让机器可以完成的功能越来越多。 有了数控机床和数控编程之后,机床就对铁钉、螺丝、螺帽无所不能,不管什么样的形状,都可以雕刻出来。

甲骨文前+CEO+埃克森曾经说过:「甲骨文的数据库软件,市场份额已达到+56%,但幸运的是,全世界只有+20%+的信息数据化。」 「数据化」三个字道破了文明的真谛。 工业革命之前,由机器制造的铁器占人类的比重为+0%;后来铁钉完全由机器制造;接着是螺丝、铰链完全由机器制造;再接着是发动机、汽车盖等复杂大件完全由机器制造;随后所有的铁器+100%+由机器制造,手工业几乎消亡了。 相信在未来的世界里,诸如擦桌子、做糖醋排骨、教孩子写作业、驾驶宇宙飞船,都将被机器人认为是简单重复的标准化动作。 所以,人类的文明目前还处于非常初级的阶段,有太多太多的东西需要装进电脑里。 从这个角度来讲,信息化社会至少还有+100+年,所以程序员永远有饭吃。

结语

我认为,目前的程序员走错了道路,他们痴迷于诸如网游、音乐、数据库后台这些虚拟世界,在这片红海里厮杀,因此才会对前途无比悲观,抱怨「程序员已死」。 真实情况却是,市场对程序员仍有巨大的需求,但不是在线上,而是在线下。 我们有太多的机器需要升级,比如研究重心的机器人、切菜烧菜机、图像识别,甚至控制无人机,随便抓住哪一项都可以发大财。 问题是:象牙塔里的白面书生,你们懂得「侍候」机器吗?