IT这行是门文科

680 阅读8分钟

说这么个观点,肯定会有很多骂我,说这么多计算科学家,这么多数学理论在计算机这行里,你TM说这是文科?说这话是民科?

首先,我不否认IT这行里,计算机的理论中,存在大量的科学理论,数学理论,并且实现的很好,的确有点工程学的意思,像个工科,而PTL和数据库等领域的研究,又的确是科学。但是,我说的不是计算机上层学院派的高屋建瓴,我说的是中国IT这行,这就好比我说古人寿命普遍比较短寿,你非要跟我说乾隆搞得百叟宴,我还能说啥?更何况,文科和理科的界限在工业界本来就不明显,甚至连学术界,现在也存在大量学科融合的现象,这也是大趋势。但趋势和融合改变不了IT是门文科的事实。

IT这行所有的东西都是人为设计的。你见过哪个自然科学是人设计出来的,不是人发现的?1+1=2是人设计出来的?数学和物理这些硬科学都是自然科学,都是大自然的本质,人类只是发现了他们而已。而IT这行,连冯诺依曼体系,都是设计出来的,从CPU,内存,网络,硬件和软件的方方面面,都是人为设计。

《笑傲江湖》里说,有人的地方就有恩怨,就有江湖。由与是人设计的东西,所以设计本身就会存在品味和偏好问题,这就好比装修风格,你家是中式风格,他家是美式风格,你总不能说谁好谁坏吧?各有各的喜好,各有各的利弊。这就是文科属性。由与这种属性的存在,总存在撕逼现象,从Unix,Linux,winidows的操作系统到C,C++,Java,golang,JavaScript,Typescript,Python,Lisp的编程语言之争,撕逼无处不在,江湖之大,斗争之激烈,让你会有春秋战国办百家争鸣之感,尤其是一门新的东西出现的时候,一定是踩着一个成名的同行上去的,所谓的diss,碰瓷儿都是刻意的设计。

比如Golang,从设计之初就处处针对现有的主流语言,虽然当时它把自己定义为了操作系统语言,但是最终还是沦为了应用层语言,有GC这种设计本身,就不可能在OS层大放光彩,但是还是这么宣传,你以为语言设计大师们不懂么?他们都是天才级人物,怎么可能这么低级的问题都不懂,但这就是宣传,你一个OS级别的语言,那么快,不论是开发效率还是运行速度都是上乘,在宣传的时候,又增加了一种宣传口号,Google甚至创造了一首歌,来黑Java和Python,达到宣传Golang的目的,虽然Golang在PTL领域被誉为是狗屎一样的语言,基本毫无最新的研究实现,但是在工业领域,不得不说是个奇迹,满足了工业领域 worse is better的新泽西风格,MIT风格再香,不也是没人用么?设计就是这样,满大街的淘宝货,你穿个设计大师的衣服,也就你一个人而已。大众的,未必是好的,但是一定是适合的。工业领域从来都是以经济效益第一,从这点来看,kotlin,golang,JavaScript,一定是最强的语言,但是您非要说是什么科学,是什么品味,那就扯淡了,PTL里面的Haskell和Scala都没说话。所以,经济效益和科学贡献是两码事儿,有的编程语言在学术领域是明珠,在工业领域就是敝履。有的编程语言反之,从设计之初就决定了出身,Scala这种在学术界和工业界都想混一下的语言,最终会越来越小众,就如同真正的设计大师的作品从来没有在历史上泛滥过一样,他们只是榜样作用而已。

我认为递归,逻辑与或判断这些基本思想,背后是公理,就是那种翻译成大白话,人人都能懂得道理,基于这些基本原理和一些科学理论,大师们给我们设计了底层工具,在这些底层工具之上,顶级程序员给我们设计了一些编程语言和框架,以供我们来开发应用,甚至在这些框架和语言之上,有一些顶级程序员基于某一个领域和场景给我们做了特定的设计,让我们能够更简单的开发和设计应用。这就是IT领域的抽象。一层一层之上,不停地抽象,最底层的东西永远是最灵活,但是可能很难用,或者需要大量的知识体系,而IT领域的抽象无非是让大家在资深领域做自己擅长的事儿,OS本身的设计也是这样,内核和驱动的分离,让社区极大地发挥了自身擅长的领域,每个人都可以在擅长的领域基于现有的内核做自己的贡献,感受下这种设计像不像现代社会?一个中央政府,然后不同的部门各司其职,中央政府作为内核负责协调等工作,IT领域里面所谓的单一职责原理,所谓的解耦,模块化设计,其实现实世界比比皆是,大自然更是如此,最强的面向对象设计,无处大自然之右。人类的设计,IT领域的设计,都是对大自然拙劣的模仿加上一些设计的品味和工业界的偏好而已,不要沾沾自喜您的发明创造,大家都是山寨狂魔,山寨无错,更无罪,重要的是发挥自身价值即可。模糊概念,以人为本,文科属性+1

再聊聊软件行业,软件行业是一个很奇怪的行业,拼命把自己往工业界上靠,不断地增加各种方法论,让自己像个工业界,甚至工业界的术语,不停地拿过来,仿佛自己拿过来了自己也和他们一样了,什么精益理论,什么测试驱动开发,什么重构,什么SCRUM,都是工业界玩烂的实践,也不管是否符合自己,反正先拿过来,其实拿来精神本身是很好的,鲁迅先生也说过应该有拿来精神,但是你不分青红皂白,拿来之后,当成了圣旨,不结合自身实际用这个圣旨,大搞整风运动,仿佛谁要是不符合你的测试驱动开发,谁不符合你的理论,就是罪人一般,这就是政治玩法,文科属性+1

前段时间有个很有名的话题:架构师是否一定要写代码,我认为可以不写,甚至不需要写,也不要写。我的论点就是,IT这行是个文科,不是硬科学,领导是可以不知道具体实现的,更重要的是知道什么最重要,知道什么人可用在哪儿,什么技术复合当前业务和现状,做好后期的愿景规划,这就是架构师的职责。既然这样,架构师只是复合学科的人才即可,甚至架构师这几个技能中,你只具备几个,也是可以做的特别好,你在工作的时候是否胜任看你的长处有多长而不是看你的缺点。这点来看大多数行业都是这样,特别是官场更是如此。但是科学领域比较奇怪,你看两弹一星功勋都是大科学家,你看曼哈顿计划,更是人类中的天才。这种最强级别的科学和工业,是人类历史之最,你看看负责人都是什么级别,懂不懂?不懂如何能够指导?可能连名词都不知道,甚至也不知道如何管理。这就是区别,IT领域由与都是人为设计,从一个人的秉性中,就能知道这个人是否靠谱,再加上一些知识就可以评判这个人的大体专业技能。所以一个不懂技术的架构师,也可以很好地评判每个人的水平,只要他还有点管理能力,但是硬科学不行,你一个不懂病毒的人,去搞疫苗,瞎指挥,最后钱花了,事儿没做成,这不行。IT领域不同,协调在这里面特别重要,甚至有的人主要工作就是协调,被戏称为传话筒,传话筒的作用在IT领域重要就是因为它是文科,你让一个传话筒去搞搞原子弹试试?加一个人进来,都会坏事儿。传话筒的存在,专业技能的模糊,文科属性+1.

说了那么多,IT是门文科,不是说文科不好,管理学,经济学都是文科属性极强的学科,但不影响这两门学科是人类极为重要的学科,文科理科工科本身就模糊了界限,但是还是存在谁的属性更强一点,强调IT是文科,只是因为有的人总觉得自己像个科学家,或者像个大师,你不发明东西,你发明的东西,创造的东西,都是基于别人之上的发明,这很好,不丢人,但是在咱们真心不是科学家,别成天拿着概念唬人了,文科的东西不需要概念那么多~