我总结了 10 个程序员的好习惯,今天分享给大家。
目录
1. 引入新的技术栈的时候,要以官方文档为主
在项目里,无论使用新的 jar 包,还是用新的中间件,一定要去看官方文档。
现在网上的技术文章鱼龙混杂,再加上国内那个不咋地的搜索引擎,所以在网上搜靠谱的技术文章,就相当于在屎坑里捞金子。
比如,如果你想要对 SpringBoot2 写的代码进行单元测试,JUnit 版本你可能已经是 5 了。但你搜到的网上文章很可能会告诉你测试用例需要注解:
@RunWith(SpringRunner.class)
但是官方文档说了,其实如果你用 JUnit5,就不用加这个注解了,加了反而可能引起不必要的冲突。
所以,官方文档对新技术的引入是唯一的参考金标准。
2. 一定要悄悄地把代码测的没问题了再交付
在职场上,什么样的人才能快速成长、快速得到重用?答案是可靠的人。
那就程序员来说,什么样的人才算是可靠的人?答案是交付可靠的技术产品。
那可靠的产品第一评估标准就是 bug 少。这个 bug 少是别人评估的,而不是自己评估的。
无论咱们自己代码实现成什么样子,哪怕是代码写的还不完美,但是,只要咱们通过自测,在提交之前尽可能把问题解决掉,让别人少发现你的错误,尤其是低级 bug,那么你才是一位可靠的程序员。
所以,交付任务前,一定要自己把代码全方位地测试一遍,保证自己有着优秀的口碑才好。
3. 打日志的时候尽可能把输入、输出以及耗时都打印出来
我们打日志的目的是什么?是为了定位问题的。
问题有哪些?其实大体就两种,逻辑问题和性能问题。
逻辑问题,我们如果打印了输入和输出,那么根据业务规则,这么一对照就能很容易定位到问题。
性能问题,我们无论是通过像 grep、sort 等 shell 命令去直接对日志做个过滤加排序,还是通过日志搜集加日志搜索等工具,都能很容易的发现到问题。甚至还可以和监控系统联合起来,直接做预警。
所以,打日志的时候,我们要记得把输入和输出以及时间都打印出来。
4. 学好 Git
Git 这东西太重要了。现在的团队开发,用 Git 管理各种代码版本,代码分支。如果你用不好 Git,很容易就会因为合并代码、升级版本等情况,产生出许多没必要的 bug。一个用不好 Git 的团队,可能每次上线,都会带来那么几个莫名其妙的问题。
5. 优先实现功能,性能问题或许没那么着急
我在带团队的时候,经常发现有些刚入行的同事,会边写代码边纠结自己写的代码性能是否有问题。其实真的不必这样。像我们这些老程序员,都知道过早优化有时候可能白花费功夫。像咱们如果写一个批处理的定时任务,这个任务要求只要在凌晨运行,在大家上班前任务完成就行。那么,这个任务从凌晨两点运行到六点和运行到四点,有什么区别吗?优化代码一定要适度,要在写完功能之后,看功能会怎么被使用,根据实际的要求,去优化真正需要优化的地方。
6. 先实现最确定的需求,不确定或者模糊的需求先往后放
实现需求的先后顺序,注意一定要以需求的可靠程度为准。
在分配给我们的需求里一般分两类:
有的需求是我们和产品经理都非常明确的需求;也有的需求比较模糊:开会讨论时大家都觉得没什么问题,但是一到代码实现的时候,就发现还存在很多问题。这时候,咱们应对的技巧是,先对这些需求搭一个统一的架子,把已经非常明确的需求先开发出来。由于架子搭建出来了,这时候再和产品经理讨论那些模糊的需求,很容易就能让产品明白困难的地方,这样就可以把沟通难度降到最低。
7. 主动找项目里的问题并给出解决方案
问题是什么?问题就是在实践过程中需要解决的东西。把这些问题一个个找出来,解决掉,这些解决问题中产生出来的方案,全会形成推动项目前进的推动力。那么产生这些推动力的你自己,一定会从中获益良多。
8. 评估开发周期,要留出冗余时间
留出冗余时间的目的很明确,在咱们开发的时候,遇到的意外情况太多了:
需求又双叒叕变了
团队人员有变化
当初估算的时间乐观了
这个功能需要动老代码
需要跨团队合作开发
领导说“加个小功能”,领导认为这个小功能不影响开发周期(此处省略二百字)
……
所以,冗余时间是要留出来的。
留出的冗余时间不等于摸鱼时间,开发还是按照正常的节奏干,早做完早交付。
9. 不要光看书去学习技术,要把感兴趣的技术通过代码实现出来
咱们程序员最重要的就是实践,能把学到的知识转化为实践用到工作上。
光看书学习技术,很可能只会让咱们产生出已经学会的错觉。只有通过代码把感兴趣的技术实践练习了一遍,咱们才真正能明白这技术实际用起来是什么样子,需要注意什么。
动手实践的重要性就不多说了,我之前也写过一些文章介绍过如何动手实践,比如这篇通过模拟环境来学习高并发:我招了个“水货”程序员
10. 英语还是挺重要的
你不得不承认,IT 这行,基本所有的创新都诞生于英语的世界。
比如 k8s,就我所知就是国内英语好的技术人员从英语社区逐渐在国内推广开来,而这些推广了 k8s 的先驱也自然掌握了 k8s 的话语权。大家可以看看 k8s 在市场上的流行程度,也可以看看一位 k8s 专家的工资大概是多少。
而且,我前面说过,大家引入新技术一定要看官方文档,官方文档百分之八十都是英语的,所以英语确实重要。
如果英语不好,是不是就没机会了?没这么绝对。
就说我吧,不瞒大家,我英语四级没过,但还是照样能看英语资料,照样和别人一起翻译了国内的第一本 Hibernate 技术书。
当初我用 Hibernate 在国内算是比较早的一批程序员了,也经常去论坛回答问题,所以后来就有人找我一起翻译书。我最开始是抗拒的,觉得自己英语太烂了,翻译不好。后来我又想,既然我能看着英语文档学 Hibernate,要不就试试。于是就这么着干了一把。
作为一个过来人,我想说的是,技术文档没有特别复杂的语法、生僻单词,而且现在还有翻译软件、插件可以帮我们阅读。即使英语基础一般,也没什么大不了的。