主页 和斯坦福博士写代码的一个月
文章
取消

和斯坦福博士写代码的一个月

大家好,我是猿java。

你好呀,我是猿java。 近一个月,闭关开发了一个面向海外的项目,合作的对象是斯坦福和麻省理工的博士,很荣幸能够和这些全球顶尖学府毕业的大牛合作,今天,趁着周末总结下自己的一些感受。

英语是硬伤

因为项目是面向海外,整个合作全程是英语,这就一览无遗地暴露了英文短板,特别是口语,在技术评审过程和讨论中,自己捉襟见肘的英文,只能不断的通过技术流程图和文字来弥补口语表达的不足。

最开始合作时比较羞涩,不敢去表达,后面在和他们的交流中,对于我们几个中文环境的技术人员,他们表现出很耐心和照顾,说话的语速也特意放慢,慢慢地,我们几个也放开了,把各自的英语和盘托出。

通过该项目,我们也接触到了一些印度裔的程序员,尽管从综合国力上,印度会比中国差,但是印度裔的程序员的英语表达能力却比我们强很多,尽管他们的发音有时候听起来很别扭,但是,敢说,能说,让他们在整个项目占了很大的优势,在美国硅谷,印度裔程序员也占了很大的优势。

通过此项目,可以更加笃定英语对于编程人员的重要性,或许出不了国,进不了外企,但是,编程使用的语言99.99%是英文,好的英语功底直接决定了理解英文资料的速度和深度,好的英文功底或许可以增加进入外企,摆脱996的筹码。

所以,强烈建议编程人员一定要加强自己的英文功底。这里推荐一篇关于 AWS亚马逊 CTO的技术文章 #亚马逊 65岁的 CTO 又放大招了

编程语言要多样

我自己最常用的是 java,但这次项目开发的主要语言是python,另外还涉及到C/C++, java, nodejs。尽管python,C/C++都有所了解,但是,要像 Java一样轻松驾驭去开发这么庞大的工程还是有点吃力。而在合作的过程中,发现他们语言的全能性,python,Java,C++,nodejs,他们都可以平滑切换,绝对的全栈工程师。

这个或许跟每个国家 IT环境有很大的关系,但是,作为 Java程序员,我个人还是比较建议再掌握一门动态语言,首选 python,像目前比较主流的数据分析、机器学习、科学计算、自动化和游戏开发等,Python绝对功不可没。另外,通过两种语言的对比,能更好的看清每种语言的优点和不足,在日常开发中,或许就能借鉴另外一种语言的优点。

当下新秀语言 Golang,在 Google这家超级巨头的强大背书下,Go语言抛弃了像 Java这种面向对象编程语言的技术负载,在并发编程上,它有绝对的优势,通过 Go语言的崛起,可以更好的看出 Java语言身上的沉重的历史包袱。

CR的重要性

CR,就是我们常说的Code Review(代码审查)。在国内的公司工作了这么多年,会做 CR的公司很少,包括一线大厂,能严格执行 CR的更是微乎其微,很多人说是因为业务太多,没有时间做CR,但是,究其原因是国内没有 CR的基因,技术管理者不推动,底层开发人员借着业务繁忙的理由,所以 CR就形同虚设。

下面给了几张项目CR的截图,因为涉及到商业隐私,所以部分信息被打码了:

图一:对于错误的实现,CR 会指正和给出正解。

img_1.png

图二:展示了 CR 甚至细化到了Doc文档级别。 img_1.png

图三:展示了 CR 过程中的探讨,给出自己意见的同时也征询组员更多的idea

img_1.png

CR看似很费时,反反复复的修改和讨论,但是,它和技术方案的讨论不一样,CR针对的是技术方案已经成型的代码实现,所以这个过程更能体现出不同技术人员对同一个技术方案的的思考和实现方式,对于整个项目的质量有大大的提高,另外对于开发者之间的磨合是一个很好的润滑剂。

包容

越优秀的人越懂得包容,在这个项目上体现的淋漓尽致,一方面体现在对于我们英语水平的包容。一方面是对我 Python 掌握程度的包容。通过上面部分 CR截图也能体现出来。有了这些包容,让我可以更快,更有信心的融入到项目开发。

较真

对于代码实现,技术方案的较真,通过上面的 CR截图也可以体现,他们对于代码的较真可以小到一个Doc文档和标点符号,以及代码的格式化,对于代码性能可以通过大量的技术测试和对比,甚至这块代码不是他们负责的,这个或许就是我们说的技术洁癖和极客精神。

依然记得几年前的一个技术峰会上,某大牛说:中国的码农千千万万,如何让你的代码有亮点,那就是不断的抠细节,大到技术架构,小到标点符号,然后不断的重构,重构。

总结

  • 通过这个项目,让我有幸见识了从 Google,AWS出来的优秀程序员的编码习惯。
  • 学英语绝对不是崇洋媚外,它在一定程度上绝对了程序员的技术高度和深度,可以观察你身边优秀的技术人员,英语是不是都不差。
  • 一定要向优秀的人靠近,和他们一起写代码,勇敢的让他们帮你CR,在交流和讨论中获取更多的葵花宝典;
  • 程序员是一个终身学习的职业,一定要持续学习;

交流学习

最后,把猿哥的座右铭送给你:投资自己才是最大的财富。 如果你觉得本文章对你有帮助,感谢转发给更多的好友,关注我:猿java,为你呈现更多的硬核文章。

drawing

如何分析系统的负载?生产排错必备技能

亚马逊 65岁 CTO 俭约架构 7大法则