国内人写代码的水平跟美国的差距在哪?
是这样的,纠结于写代码水平的高低是没有意义的,代码只是个工具,国内人写代码的和美国写代码的区别在于:国内写代码的是计算机专业的,使用者是数理化专业的,美国写代码的是数理化专业的,计算机专业的就算写代码,也是写给自己用的。
举个例子像美国的matlab、CAD、cadence这种卡脖子类型的垄断工业软件,其实底层实现代码很烂,体现在维护上你会发现各种小bug非常多,性能也卡的很,其实就是数理化专业的人“顺便”学了点编程,也没什么所谓软件工程的知识,就因为需求强烈所以自己写了个小工具,随后不断叠床架屋,迭代改造变成一个专业性软件。当然独立成一个专业公司之后肯定也是会重写重新设计软件架构的。但是在他们那里,软件只是一个工具,并没有显得特别重要,软件之于美国就像建筑工人之于设计师的关系,设计师没有工人,当然想法只能停留在图纸上,但是工人的工资永远不会有设计师的高,稀缺性上永远是设计师高于工人。所以为什么印度码农那么多美国却从未产生过危机感,因为码农在美国人眼里就是个工具人,你码农越多意味着你的仆从地位越巩固。美国缺码农,但是美国需要码农的时候只需要找外包就可以了。美国的软件公司像谷歌苹果微软这些公司里珍贵的还得是数学家科学家们,华为同样也是如此,凡是走到这一步的科技公司,其实对他们来说码农已经不再重要了。重要的是那个能产生想法的人,知道下一步往哪里走的科学家和设计师。
中国计算机专业出身的码农很多,这其实不是个好事,因为这意味着中国还处于制造业低端,计算机专业的大学毕业出来去给各行各业写代码其实是属于资源错配,类似于环保专业的出来去做扫大街的清洁工。如果学计算机只是为了出来写代码的话,根本没必要去上本科,去北大青鸟培训个一两年,甚至自己在家看看教学视频就足够了。计算机专业的大学生本来是应该去解决更高层次的问题的,像操作系统、超算、数据库等等这些产业才是计算机专业的大学生该去的地方,然而中国在这方面的产业薄弱,人才需求少,没有就业机会。所以计算机专业的大学生才只能去做个万金油的码农。
其实写代码这个行当,说实话也太好学了,我承认计算机科学是门大学问,但是仅仅只是培训个写代码真的需要学四年吗?在我看来北大青鸟的水平已经都绰绰有余了,计算机本科四年最难的也就学数学的那两年,有个段子说代数几何学不会的可以去研究拓扑,拓扑研究不会的可以去搞概率,还不行的你还可以去研究物理,物理都学不会的只好去华尔街做个分析师了。其实往后面我还可以续一下,就是连华尔街都混不下去的可以去考虑做个码农。
而且等你到了美国那个水平,你就会发现计算机专业的在很多领域里基本插不上手。因为当数学家、物理学家、发动机设计师需要有人做一个软件来满足他们的需求时,他们通常是很难把自己的需求和想法完整无损的传递给计算机专业出身的码农的,计算机专业的码农听他们说话就像听天书一样,要想听懂,对不起,回去先学几年生化环材去。所以很多时候专业人士需要自己动手写代码,就算代码写出来很烂,维护性差不健壮bug一堆,但好歹能用。而码农在这种时候根本指望不上。
而中国是什么情况呢?首先中国的公司搞研发很少需要数学家物理学家科学家参与,其次中国公司搞研发也根本不需要知道多少专业知识,因为都不是造轮子性质的,不需要从底层原理开始摸索,人家都给你打包好了。计算机专业本科出来的一般智商都够用,其他行业的知识随便学学也就能上手工作了。举个例子中国的码农给国内的医药研发公司写的代码可能只是为了把进口的基因检测芯片驱动起来使其正常工作(这对中国来说已经算是相当高端的研发活动了),而美国医药公司里的码农则需要研究如何用代码表达三种不同的苷酸在不同的酸碱曲线下体现出的活性规律。计算机专业的何德何能会懂得这个?所以这个码农往往都是医学博士自己。
所以在这种时候,一个计算机四年本科专业出身的码农,和一个在北大青鸟随便培训几年,或者自己看视频自学成材的码农,其实在写代码这件事上所能发挥出来的价值是相等的。反正你们对于代码之外的东西都是一样的不懂。在美国人眼里代码只是个工具,码农就是个工具人,一个代码写的极好的码农依旧只是码农,就像乞丐中的霸主依然是乞丐一样。有没有发觉码农在公司里很难升职?能爬到的最高职位也就是CTO。有没有想过为什么呢?
所以我看码农圈很多人很拽就很好笑,做了个什么牛逼的软件就觉得自己智商老高了,动不动还要搞什么代码决斗什么的,这就像降维打击一样,你拳打的再好,剑舞的再溜,飞机坦克一来全没了。老在这比较什么代码水平真的很愚蠢,就跟热兵器时代还在这比较谁的刀剑舞的好一样,人家美国根本不屑于跟你比这个好吗?