logo

张华山

南京同心圆教育科技有限公司合伙人

职业信息:

领域:


一天晚上,和老婆聊天,说自己的技术怎么样balabala,老婆斜了我一眼,淡淡地说:“认识您这么久了,还不太了解您有什么杰出的成就”我讪讪地咽了口水:“好吧……”

十几年来,我一直坚持在开发岗,经历了普通开发人员、工程师、项目经理、主管、技术总监、等各种岗位。然而我却深知,不算聪明的我,从事编码这个“高危”职业十几年而没有被拿去“祭天”,依靠的是一个程序员的自我修养——扎实的基础软件能力、如履薄冰的工作态度、对技术孜孜不倦的追求。

多年来我的代码,遵循着简单的原则:简洁、逻辑清晰、函数职责单一、合理的数据结构设计。并没有使用高深的编码技巧,也没有应用某某设计模式。
我的编程规范,是将代码简洁在首位。简洁、逻辑清晰的代码,易于阅读和维护。

人们常说唯一不变的就是变化,客户需求一直在变化,我们的代码也会被动或者主动地在变化。设计出可扩展、自动适应客户需求变化的软件架构,是软件工程师永恒的追求。这说说容易,做起来却很难。需要我们不停积累业务知识,扩展知识面,勤于思考,识别技术未来演进趋势。我们无法从一开始就做一个无所不能的架构,来包含未来的千变万化,即使能,交付节奏也不一定允许。满足当前及未来一定时间内业务需要的设计,或许就是最合适的。

能写出好代码,更要能持续地写出好代码,需要我们深刻理解技术原理和业务逻辑。前提是具备扎实的编程基础,即基础软件能力,如基础的数据结构和算法、编译原理等。

曾经参加过阿里的云栖大会。热点风口非常多。但是最火爆的却是一些基础软件、架构设计。

另外,一些编程习惯,如果坚持下去,对于编程修养提升也是非常有用的。比如有效的代码注释、命名规则、代码风格等。
每次写代码除了追求最佳代码之外,我都会时刻去思考软件上的优化,能否能使用更优的性能。重视数据结构中的每一个字段,重视每一处小的代码优化,都有可能给我们带来意想不到的收获。

很多开发人员,因为个人习惯、赶工期、外部要求不高等多种原因,在编程时特别随意,直接Copy-Paste。我觉得程序员应当像追求生活品质一样,养成不将就的编程习惯、严谨的编程态度。

对于代码上线,我一直都是战战兢兢,如履薄冰。上线前我会反复看自己修改的代码,看修改代码的上下文,并进行修改前后代码比对。

我们开发一个版本,动辄涉及几万代码的新增、修改或重构。要想不引入变更问题,除了做好设计、结对编码、代码检视和测试之外,我认为最关键的就是完善的自动化防护。

不懂怎么办,只能是“站在巨人肩膀上,为我所用”。兄弟产品线不是已经做了吗,那就找他们做同行协助;友商不是有路标和规划了吗,那就在他们的有限材料中寻找可借鉴的地方;互联网的亚马逊云、阿里云不是有非常成熟的方案了吗,那就下载他们的产品手册和用户指南。

这也让我充分意识到自己之前把眼光局限于所在产品、系统、子系统的不足。作为一个程序员,除了要提升自己的基础软件能力,我们也要始终保持对于新兴技术的好奇心,孜孜不倦的追求,不断拓宽自己的视野。

统一编程规范、整洁代码、整洁优雅的架构,不同的人有不同的追求,需要我们有持之以恒、水滴石穿的决心。五年或者十年后,当我们回首时,会发现自己曾经的付出是值得的。读书三境界:“众里寻她千百度,蓦然回首,那人却在灯火阑珊处。”

也许我们绝大多数人终其一生也无法成为大神。然而,我们能够做一个有修养的程序员,并参与到改变世界产品开发中来,也是极好的。