什么样的程序员才算得上优秀,把导师曾对我说的话送给大家(比代码更重要的事)

2021年07月22日 15:09 36 次阅读 来源: 欧阳呀 作者: 路人甲

1. 说在前面

为什么忽然想起这个话题呢?起因是最近不少人问到我,大都是对这个职业心存疑惑或是不太清楚,如何成长?如何突破?未来的路在哪里?

很多人以为,程序猿的任务就是把需求实现,bug修好(这也是我几年前的思想)

把之前导师(某大厂P7级别的大佬,现在已是P8)和我说的分享给大家,觉得很受用,影响了我后面这几年的职业选择与整体规划

在这里插入图片描述

2. 为什么选择了这行呢?问(导师)(我)

问:还记得当初为什么选择这行么?

答:呃,好像记不太清了

问:我记得你的专业不是计算机吧,因为工资高?还是家里人的建议?

答:或许是工资高吧,那时候特别喜欢车,想存钱搞台车(憨笑)

问:其实我问了很多面试者,很多人都对这个问题的回答含糊不清,其实我最想听到的答案是:因为热爱,因为感兴趣,或是想用它改变世界

答:改变世界?这就很深奥了

问:这不深奥,你没有注意到么,每一种语言,教程里的第一件事都是教你如何使用它向世界问好:Hello World!

答:这个倒是的

问:这既是引导,又是启发,代码与程序是运行在二维世界里的东西,但是它又影响着三维世界的方方面面

答:没太懂,您是说?

问:比如我在淘宝上买衣服,这是二维世界。购买成功后,卡里的钱是不是变少了,你去银行里取钱是不是就变少了?同时你会多一件新衣服,是不是改变了三维世界

答:仔细去想,好像是这样的

问:是的,你看现在可以用手机做好多事情,都是通过程序来处理的,程序的本质,即是我们所写的每一行代码,我们所处的世界也可以看成是由一串串代码连接而成的

答:所以,我应该立志用代码改变世界?

问:说的小一点,想着用代码改变一些事情,其存在的意义肯定是为人类而服务的,所以:程序猿也是伟大的

答:那是不是可以去除屌丝这个称号了?

问:哈哈,这与我们改变世界是不冲突的,我其实想告诉你的是:选择一个行业,最好是因为热爱,其次是想用它去做一些东西,改变一些东西,如果你的初始选择就是盲目的,那么注定了你在这个行业达不到一定高度,拿点工资,混混日子而已。

在这里插入图片描述

3. 如何才能成为一名优秀的程序猿呢?

问:这也分为好几个阶段吧

答:怎么说呢?

问:程序猿的第一阶段当然是能够满足公司的业务需要,能做点东西出来,不然是毫无价值的

答:比如写个页面?写个接口?

问:是的,首先你要能提供一定价值,第二阶段是能够走出代码,到达业务层

答:就是懂逻辑?懂功能?

问:可以这么理解,你不能整天就是蒙头写代码,得知道整个项目的运作流程,从A页面到B页面发生了什么,从哪开始?由哪里结束,前端程序员很多都不太了解业务,这是很致命的

答:嗯嗯,了解了,那第三阶段呢?

问:第三阶段是跳出业务层,对宏观技术层有一些了解

答:呃~,了解前沿技术?

问:是的,关注技术走向,尝试新技术,有新想法,从而改变现有业务,项目都是如此,循环往复,不断更新迭代

答:也就是你们现在做的事情吧

问:恩,技术达到一定级别后,就是要思考与改进,比如那些顶级大佬,推动技术变革

答:这就很牛逼了,我等小辈只有跟着跑的份

问:我对你的期望就是能多学点新技术,有一些新想法就是好的了

答:谨遵教诲

在这里插入图片描述

4. 大佬的代码层分享(通用)

4.1 关于变量

避免全局变量 —— 很少有人能陪你走一辈子,变量也是如此(别遇见一个妹子就觉得她是孩子他妈了),变量通常在某一段执行完就没用了。所以不要急于去声明全局变量。

任何一个变量都要细心的去管理 —— 从声明到使用,到回收

避免去改变变量的类型 —— 比如定义了一个变量a是字符串,那就一直当字符串去用,可以避免许多不可预知的错误(虽然我们可以去修改为不同类型)

4.2 关于报错

不要去忽略错误 —— 很多人觉得:代码和人,有一个能跑就行了,这是大错特错的。我们应该去重视每一个报错,哪怕是警告,我们可以不去处理,但是一定得知道它是个什么意思

尽量避免报错 —— 做好容错处理,特别是取值的时候,你得做好预案:这里没值的时候要怎么去处理,才能保证程序能正常运行

在这里插入图片描述

4.3 问题排查

调试只是查询问题的方法之一,就拿断点来说,查看相应的数据并不一定能找到问题所在。

了解断点如何设置,应该设置在哪等就涉及到问题排查,是采用断点,还是查看日志,还是选择别的方式,也是问题排查

问题排查是一个思考方式,怎样发现问题?为什么没能发现问题?才是重点。发现问题后如何解决问题?

一方面取决于经验的积累,一方面取决于思考方式。相对之下,工具的使用就比较弱化,脑子里的经验和分析才是最重要的。

本文取自于本人的真实经历,确实跟着大佬学到了不少,希望能对大家有所帮助

1. 如有错误,敬请指出

2. 原创不易,还请各位客官动动发财的小手支持一波(关注、评论、点赞、收藏)

3. 拜谢各位!后续将继续奉献优质好文

4. 如果存在疑问,可以私信我

在这里插入图片描述

~阅读全文-人机检测~

关注下方微信公众号“Java精选”(w_z90110),回复关键词领取资料:如Mysql、Hadoop、Dubbo、Spring Boot等,免费领取视频教程、资料文档和项目源码。 微信搜索小程序“Java精选面试题”,内涵3000+道Java面试题!

Java精选专注程序员推送一些Java开发知识,包括基础知识、各大流行框架(Mybatis、Spring、Spring Boot等)、大数据技术(Storm、Hadoop、MapReduce、Spark等)、数据库(Mysql、Oracle、NoSQL等)、算法与数据结构、面试专题、面试技巧经验、职业规划以及优质开源项目等。其中一部分由小编总结整理,另一部分来源于网络上优质资源,希望对大家的学习和工作有所帮助。
还可以输入136 讨论区:
评 论