• 欢迎访问:祀与戎,国之大事,在祀与戎。 手机号码:
  • 欢迎访问:祀与戎,国之大事,在祀与戎。
  • 欢迎访问:祀与戎,国之大事,在祀与戎。祀与戎
  • 祀与戎,国之大事,在祀与戎www.siyurong.com
  • 祀与戎,国之大事,在祀与戎。如果您觉得本站非常有看点,那么赶紧使用 Ctrl+D

国内人写代码的水平跟美国的差距在哪?

思想观点 siyurong 4年前 (2022-09-19) 3次浏览 已收录 0个评论

差距是全方位的,下面仅例举几条比较典型的:

  1. 心浮气躁,唯利是图。这个是大环境了,整个程序员圈子都比较浮躁,热衷于赚快钱,热衷于追各种热点,什么大数据,人工智能,什么框架,市面上炒什么就一窝蜂追求什么。而从来不沉下心来打好基础。
  2. 重应用,轻底层。我们都知道,万仗高楼平地起,计算机编程也一样,没有扎实的底层基础,想写出高效稳键的系统,几乎是不可能的。不管是在工作中,还是在技术论坛上,你们发现一篇应用性的技术文章浏览者甚多,一篇操作系统或有关汇编的文章,浏览的人寥寥无几;这个特性,可以推广到国内的所有行业,越是深入基础的东西,关注的人越少,他们会给出一个冠冕堂皇的借口——这些东西没有用,也用不到。
  3. 私心重,久分享。你会发现,不少技术人员,悟出了一点道理,解决了一些问题,就藏着掖着,生怕被别人学走,或者放到网上收钱下载。或者自己遇到类似的问题解决了,一走了之,也不分享出来。
  4. 怠于学,懒于行。常常在写代码时,不追求好的风格,不写注释,遇到难题绕着走,而常常把没有写好代码归咎于时间紧,任务重。学习也只学简单的,变现快的。什么编译原理,汇编语言,操作系统,计算机网络,计算机体系统结构,算法,等等。这些东西这么花时间,肯定没有耐心学下去的。于是乎,一年经验用十年,然后还以老程序员自居,嚷嚷要转管理!代码都写不好,管理就能做好?
  5. 重于言,轻于手。口头上说,这个容易,那个不难,但就是做不好事情。就像面对操作系统和EDA等卡脖子问题,会有一大群上在网上,开口就这个不难,那个也不难,找一大堆的借口。各种问题都不难,就是tmd的做不出来,连抄都抄不好。

最后,我们再看看教材和书籍的问题,你会发现也是一样,美国的计算机类教材,深入浅出,事无巨细,娓娓道来,直到把它教懂。国内的同类,胡编乱造,敷衍了事,忽悠一个算一个。

最后的差距就是:

代码首先是层次差,几乎主要是应用层,极少底层代码;

注释和风格差,没有注释,或者不规范注释;

健壮性差,bug多,那些天天加不完班的几乎主要这些鬼事情;

扩展性和复用性差,换一个项目又推倒重来;

……

不过有一点也很重要,中国企业不允许程序员上班参与开源项目,上班时间长疲于奔命,没有多少时间参与开源项目,也没有多少时间用于学习思考,这方面也是客观原因。

前一阵子我给一个玩票项目做技术选型,比较了阿里云和AWS,最后选择了AWS。促使我选择AWS的很大一部分原因在于文档——作为一个开发者,最终我是要吭哧吭哧读你的API文档来开发代码。决定我工作量的不是你的设施有多先进,而是文档里有多少坑;牛吹的再响亮,文档不全在我看来就是金玉其外败絮其中。

现在是2021年12月17日,我随便拿两个文档来让大家看一下差距。我觉得拿阿里云的OSS和AWS的S3来比较是很合理的,二者分别是国内和美国的云服务商的老大,且OSS和S3二者功能几乎完全一致(连API都几乎一模一样),且都是成熟商用多年、非常常用的云服务产品。

随便搜一下,你就能找到双方的API文档:

我挑了两个类AmazonS3和OSS ,它们分别是S3和OSS的入口,你进去看一眼就知道它们有多相似了,很多方法名都是一模一样的,我不说谁抄谁的问题,想象一下,你是一个开发者,你需要使用一个API,第一个反应是去看文档,这没什么问题吧?

这是阿里云的文档,这个注释写的,和不写有什么区别?源代码+注释提供的信息几乎和二进制代码一模一样,真正实现了”代码即文档“。

这是AWS的同名方法,我不得不缩小屏幕分辨率才把它截全。

这是我随便挑的方法,你从上面的链接点进去,随便找,能找着一个阿里云认真写的文档算我输。你要是英文不好的话,中文API文档也没见你好好写啊?

二者都是商业化产品,万千的客户都要用它吃饭,尚且这样,在你看不到的地方,就有更多的差距了。这是能力问题,还是态度问题呢?我不知道,我只知道,作为一个程序员,远离阿里(包括但不限于云、开源项目等)

欧美码农写代码:

  1. 和客户多次讨论
  2. 确定需求,确定最简单的最直白的MVP版本
  3. 制定开发milestone
  4. 在GitHub/Gitlab开repo,先构筑模版项目,写好单元测试框架、CICD、lint、文档框架,以及开发和部署分开的权限
  5. 先跑一个空壳,没有业务代码,但架构、依赖以及自动构建流程已经确定下来了
  6. 慢慢往框架里填充代码,持续交付
  7. 新人来了就靠文档上手,贡献代码靠pull request,自动化测试和lint以及人工代码审核
  8. 权限隔离,码农删不了生产代码也动不了生产系统

天朝码农写代码:

  1. 客户天马行空要一个东西,细问则不耐烦,说你照着淘宝/百度做一个就对了
  2. 口水乱喷开始吹架构,什么mq, Redis, Spring使劲上,号称支持千万并发
  3. 打开IDE开始一个项目,名字懒得起就叫untitled,skip所有IDE的git/README.md构建提示
  4. 上网查各种Redis, JVM之类的配置模版,开发机里下载了一堆依赖,还都是全局的
  5. 勉强跑起来一堆四不像,也没法部署,因为配置全是本地的
  6. 写了一堆没人看得懂的代码,没文档没测试,方法名类名用拼音。问代码架构,则拉出一本“代码之禅”“架构之道”
  7. 部署那天在生产机上鼓捣了老半天,终于跑起来了。因为怎么配置自己都忘了
  8. 客户没给钱,一怒之下删代码删库跑路

如果是国内大厂的话,还会拷贝别人GPL的代码然后查抄替换文件头说是国产知识产权,或者改别人的包加点料之类。不过这算是国产高科技了,一般的码农还没到这个级别。

就以csdn和stack overflow做例子。

csdn上的技术贴,先不说到底转手了多少次,就算内容是原创的,大多也是毫无营养的烂文。

烂在什么地方:比如1、直接贴代码不写注释,自己这篇博客一点解释也没有,什么架构,自己的想法等等。2、如果是解决一些程序问题,常常直接贴命令行代码块,不解释出现的原因,不解释为什么可以这样解决。

其实csdn我大一大二在用,他当然有好的作者,但太少了,很多人把csdn当做个人笔记用了,对内容很不负责。

stack overflow其实不算博客算解答。一个问题,提问者会说出现的原因,自己做过的尝试和自己的一些猜测。下面解决问题的人会说解决办法,会建议你去看什么什么文档来了解这个问题。

再有就是分享欲。国人代码不讲究开源,对于技术问题的帖子,没有多少人回复。就知乎这个平台,不算一个技术平台。很多优质的计算机回答只有几个赞,而男朋友xxx女朋友xxx一堆人答的飞起。


祀与戎 , 版权所有蜀ICP备14023000号-6丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:国内人写代码的水平跟美国的差距在哪?
喜欢 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址