大涛学长@哪些习惯让我在工作上持续受益?,加入阿里技术团队三年
2017年研究生毕业 , 我加入阿里巴巴数据库技术团队 , 从事分布式数据库研发 , 如今算来已经有三年时间了 , 在这期间 , 我深度参与了双十一背后的数据库PolarDB-X从设计到实现的全过程 。 在这三年的时间里 , 于我而言 , 最大的收获来自两方面:
(1)大型数据库项目的磨砺 。 数据库作为三大基础软件之一 , 复杂度不言而喻 , 而分布式数据库将这个复杂度又提升了一个层次 , 因此尝试这个领域的企业并不多 。 一毕业就有机会挑战这个级别的难度 , 磨砺造就成长 。 (2)有幸与一群实力超群的小伙伴一起工作 , 从他们身上能学习到太多东西了 。
文章图片
根据工作经验和观察身边优秀的同事 , 我发现优良的工作习惯是区别一般工程师和专家工程师的重要素质 。 想要提升自己 , 必须要认识到哪些工作习惯会拖延工作效率 , 提升项目复杂度 , 增加沟通难度 , 甚至让合作伙伴失望 , 然后改正它们 。 刻意练习那些被证明有效实用的工作方式 , 成为习惯 。 在阿里的这三年 , 我积累了这些工作习惯:
01
最基础也最重要的习惯:想清楚再动手 。 大模块和功能 , 详细的设计文档必不可少 。 小模块和功能 , 最好动手之前 , 在白板或纸上写画清楚 , 并记录下来 , 千万不要靠巧合编程 , 要理解正在做的事情 , 并全面考虑各种可能性 。
02
设计、编写正交性好的代码模块 。 这是大家公认的良好编程习惯 , 但说起来容易 , 做起来难 。 工程师可能会图一时之快 , 编写重复、复杂的“面条代码” , 随着代码量膨胀 , 这无疑会是代码维护和问题排查的灾难 。 平时最好能刻意练习编写正交性好的代码(刚开始可能花时间 , 但要熟悉这种思维习惯) , 学习业界优秀的代码也是精进的方式 。 这里简单列四点实用技巧:
1、不向其它模块暴露任何不必要的信息 , 也尽量不依赖其它模块 , 隐藏复杂性
【大涛学长@哪些习惯让我在工作上持续受益?,加入阿里技术团队三年】2、尽量避免编写相似的函数 , 让复用变的容易 。
3、尽量避免直接使用全局变量 。
4、编写独立的函数 , 减少函数间的依赖 , 函数解耦的一些技巧:
(1)只调用对象自身的函数 。
(2)只调用传入参数对象的成员函数 。
(3)只调用函数内部创建对象的函数 。
(4)减少函数的长度 。
03
如果发现代码中不满意的地方 , 早重构、多重构 。 尽量不要容忍软件中的“垃圾” 。 重构前应该确保:
1、不要在重构的同时加功能;
2、重构前确保拥有良好测试 , 确保重构对系统重量的影响最小化;
3、采取短小、深思熟虑的重构节奏 。
04
系统里的每一项知识都是单一、无歧义、权威的 , 要与所有研发人员达成一致 。 避免合作者之间因为理解的差异 , 编写出语义相悖的代码 。
05
把低级的知识放在代码里 , 注释留给高级的说明 , 糟糕的代码才需要许多注释 , 当然也不能没有注释 。 commitmessage也要认真写 。
06
时刻考虑并发对代码的影响 , 面向并发设计;时刻考虑空间和时间效率;时刻考虑Cornercase 。
07
为项目制定详细的编码规范 , 并严格遵守 。 精心的为模块、文件、变量和函数命名 , 意义清晰无歧义 。 合理布局文件和文件夹 。
08
关于bug排查 。
1、遇到bug , 不要恐慌 , 相信自己能解决它 。 学会评估bug的影响面 。
2、bug是你的还是别人的没有关系 , 不要抱怨 , 问题已经在那了 , 解决它 。
3、如果排除一个bug花费了很长时间 , 思考能否做点什么(例如增加日志、总结文档、优化代码等) , 让下次排查更容易 。
4、Crashearly , 一旦发生异常 , 立即崩溃 , 让问题第一现场尽早暴露 。 如果认为什么不可能发生 , 就用断言确保它不会发生 , 不要自己说服和欺骗自己 。
推荐阅读
- 中国日报网r来看看有哪些安全措施,迪士尼乐园即将重新开放
- 「华为手机」华为手机有哪些小窍门?
- Q弹科技14系统来了:苹果定于6月22日发布,都有哪些新功能?,iOS
- 莫名其妙的笑点哪些高端交友平台可以让人耳目一新
- [水熊]有哪些生物是违背生命规律的?跳出三界之外,你听说过“太岁”吗
- 『蓝牙耳机』品牌蓝牙耳机有哪些,六款配置超高平价蓝牙耳机推荐
- 蔡江SEO常见的搜索引擎指令都有哪些
- 手机中国机情问答:魅族17系列选哪款?近期还有哪些新旗舰?
- 相机Beta70-135mm F2L,佳能还有哪些RF镜头要发?,除了RF
- 数码观察菌SE的预算能入手哪些安卓机?这几款综合体验远超前者,新iPhone