洛阳北大青鸟——支持你成为受人尊重的专业人才!
当前位置:首页 » 就业 » 就业指导 » 正文

职场点睛:java程序猿的破茧成蝶之路!

时间:2017年10月21日 编辑:洛阳北大青鸟 来源:本站原创

阿里巴巴研究员毕玄曾言道:一个优秀的工程师和一个普通的工程师的区别,不是满天飞的架构图,而是他写的每一行代码。

自2017杭州云栖大会阿里巴巴Java代码规约插件发布以来,在业界形成了旋风式的效应,插件安装量和开源star数,都突破了预期。插件对于《阿里巴巴Java开发手册》文档进行了立体式地呈现。这背后离不开代码规约插件P3C项目组同学的努力,他们一步步让业界听到了他们的声音。今天我们就在InfoQ采访《阿里巴巴 Java 开发手册》作者杨冠宝(花名:孤尽)的访谈中,感受他们的思与行。

职场点睛:java程序猿的破茧成蝶之路!

在阿里正式发布代码规范之前,孤尽回忆,那些牵一发而动全身的坏代码例子:如表达删除状态的字段名,非常多,像:delete/delete_flag/is_deleted,在数据分析时,总要小心翼翼,像文字游戏。而 0/1 还是 y/n 来表示已删除和未删除,更是神坑,极易造成线上问题。再如,批量接口定义时,没有接口保护很容易造成服务器方内存耗尽,产生 OOM 等等。

孤尽认为,国内的开发者大多重技能,轻规范。此前有这么一个段子,程序员 A 和 B , A 每天只写 100 行代码,字里行间规范清晰,其余大部分时间都在整理文档,备注的非常详细, B 每天写 50000 行代码,却很少写注释,天马行空,为此还嘲笑 A 不够高效。随着业务越来越复杂,客户需求随时可变,两个人都开始组建团队,这个时候,功夫不负苦心人, A 之前的努力都派上了用场, B 只能佩服加惭愧。

可见,编程规范,对于程序员而言,不是要靠强制约束,更关键的还是要让其从认知,思想觉悟上提高,骨子里意识到规范也是一种生产力。现在软件发展到现在,只是造一句 hello world 走天下的时代,已经过去了,需要团队紧密协作。编程风格的不一致,明显影响了团队研发效能。有时候,团队可以为没有营养的接口定义方式,能够吵上一天。公说公有理,婆说婆有理,重点是:最后没有达成一致。编程规范就是极大的减少没有营养的争论,真正把时间放在需要解决的核心问题上。 简单,适用的代码规约背后,所传递的是技术上的追求卓越,协同合作的精神,是每个技术团队不可缺失的重要利器。

阿里巴巴推动中台化战略,对于项目机动联合的要求越来越高。而规范不一的痛楚,使大家意识到统一规范的紧迫性与必要性。以集团平台技术事业群为核心,以国际事业部的规范为蓝本,进行大幅度修订,多轮讨论,投票,甚至是辩论,艰难地形成最后的统一规范。

对外版本的更新上,从之前的周频度,到后来的月频度,现在以季度的时间维护来修订,阿里巴巴有一个专门项目组来长久地维护《阿里巴巴 Java 开发手册》的与时俱进。终极版,只是 PDF 版本的终结,而不是《阿里巴巴 Java 开发手册》的最后一版,未来会转为线上维护,大家可以在线提交 issue ,允许企业和个人 fork 分支用以非商业化用途,提升团队及个人的研发效能。可见,扎根内部,立足行业,着眼未来,行业编码规范化水平,可以帮助行业人员提高开发质量和效率、大大降低代码维护成本。

职场点睛:java程序猿的破茧成蝶之路!

Java 开发工程师都比较关心一个问题:代码出现之前如何排除掉不给 Bug 出现的机会?孤尽给出了建议:定位问题比解决问题更加重要。解决问题,在计算机的世界里,都是能够找出方案的。需要时时有异常分支流程的概念,清晰地知道这个世界上最强大的测试同学是用户,他们的操作行为千奇古怪,尽可能把自己想成傻的不能再傻的用户。曾经有一个故障,就是一个好奇的用户签名使用了:--&@# 这种奇怪的字符,结果被 SQL 注入,导致数据库被批量更新。

有人说, Java 程序员的日常是搬砖,那么砖在哪里,就是一个个键盘。除此之外,难免还要和产品汪、运营、无厘头的用户打交道。都说普通程序员到优秀程序员的过程,无非就是量变到质变的过程。其实不然,代码多少行才会产生质变,很难量化,但是如果没有深度地思考,就是写再多的代码也是枉然。而在这其中,一名普通的程序员和一名优秀的程序员就出现了,优秀是知道自己的差距在哪里。一些刚入行两三年的程序员,经常说这个我懂了,那个我懂了,感觉写代码很枯燥,我要转型,要么往产品方向,要么往架构师方向,要么往管理方向。其实这距离一位基础程序员的自我修养,还只是摸到边。如果静下来,抬头仰望星空,发现优秀离自己两万里,而卓越更是无边无际。

那一名优秀的程序员如何突破自己,成为一名卓越的程序员呢?卓越是弥补了这些差距。比如:1) 融会贯通技术知识体系。2) 品味编程语言的内在美,感悟语言哲学。3) 勇立新技术潮头。最后,突然发现,在计算机的世界里,所谓的全才是不存在的。真正的卓越,往往是某个语言方向,某个领域方向上,持之以恒的追求与实践,以及永不磨灭的热爱。

对于任何一个项目,从重要性上来说,分为核心业务、非核心业务。前者更重视产品文档、技术方案、规范化编程。从需求时效上来说,分为临时性需求、长远型需求。临时性需求,相对来说更加讲究快速实现、快速迭代。而长远型需求,一定要考虑到,可能由不同的人在不同的阶段进行开发,这个时候的效率和质量就会受到很大的挑战。这就需要权衡好代码和文档,两者都要抓都要硬。在 Java 开发过程中,代码和文档的完美结合,讲究的就是匠心和创新,这是一种态度,更专注细节,力求完美。

全真项目实战
一线技术大牛
就业推荐保障