优秀程序员的定义是什么?那些比写代码更重要的事情
1. 说在前面
为什么忽然想起这个话题呢?起因是最近不少人问到我,大都是对这个职业心存疑惑或是不太清楚,如何成长?如何突破?未来的路在哪里?
很多人以为,程序猿的任务就是把需求实现,bug修好(这也是我几年前的思想)
把之前导师(某大厂P7级别的大佬,现在已是P8)和我说的分享给大家,觉得很受用,影响了我后面这几年的职业选择与整体规划
2. 为什么选择了这行呢? (导师)(我)
导师:还记得当初为什么选择这行么?
我:呃,好像记不太清了
导师:我记得你的专业不是计算机吧,因为工资高?还是家里人的建议?
我:或许是工资高吧,那时候特别喜欢车,想存钱搞台车(憨笑)
导师:其实我问了很多面试者,很多人都对这个问题的回答含糊不清,其实我最想听到的答案是:因为热爱,因为感兴趣,或是想用它改变世界
我:改变世界?这就很深奥了
导师:这不深奥,你没有注意到么,每一种语言,教程里的第一件事都是教你如何使用它向世界问好:Hello World!
我:这个倒是的
导师:这既是引导,又是启发,代码与程序是运行在二维世界里的东西,但是它又影响着三维世界的方方面面
我:没太懂,您是说?
导师:比如我在淘宝上买衣服,这是二维世界。购买成功后,卡里的钱是不是变少了,你去银行里取钱是不是就变少了?同时你会多一件新衣服,是不是改变了三维世界
我:仔细去想,好像是这样的
导师:是的,你看现在可以用手机做好多事情,都是通过程序来处理的,程序的本质,即是我们所写的每一行代码,我们所处的世界也可以看成是由一串串代码连接而成的
我:所以,我应该立志用代码改变世界?
导师:说的小一点,想着用代码改变一些事情,其存在的意义肯定是为人类而服务的,所以:程序猿也是伟大的
我:那是不是可以去除***丝这个称号了?
导师:哈哈,这与我们改变世界是不冲突的,我其实想告诉你的是:选择一个行业,最好是因为热爱,其次是想用它去做一些东西,改变一些东西,如果你的初始选择就是盲目的,那么注定了你在这个行业达不到一定高度,拿点工资,混混日子而已。
3. 如何才能成为一名优秀的程序猿呢?
导师:这也分为好几个阶段吧
我:怎么说呢?
导师:程序猿的第一阶段当然是能够满足公司的业务需要,能做点东西出来,不然是毫无价值的
我:比如写个页面?写个接口?
导师:是的,首先你要能提供一定价值,第二阶段是能够走出代码,到达业务层
我:就是懂逻辑?懂功能?
导师:可以这么理解,你不能整天就是蒙头写代码,得知道整个项目的运作流程,从A页面到B页面发生了什么,从哪开始?由哪里结束,前端程序员很多都不太了解业务,这是很致命的
我:嗯嗯,了解了,那第三阶段呢?
导师:第三阶段是跳出业务层,对宏观技术层有一些了解
我:呃~,了解前沿技术?
导师:是的,关注技术走向,尝试新技术,有新想法,从而改变现有业务,项目都是如此,循环往复,不断更新迭代
我:也就是你们现在做的事情吧
导师:恩,技术达到一定级别后,就是要思考与改进,比如那些顶级大佬,推动技术变革
我:这就很牛逼了,我等小辈只有跟着跑的份
导师:我对你的期望就是能多学点新技术,有一些新想法就是好的了
我:谨遵教诲
4. 大佬的代码层分享(通用)
4.1 关于变量
避免全局变量 —— 很少有人能陪你走一辈子,变量也是如此(别遇见一个妹子就觉得她是孩子他妈了),变量通常在某一段执行完就没用了。所以不要急于去声明全局变量。
任何一个变量都要细心的去管理 —— 从声明到使用,到回收
避免去改变变量的类型 —— 比如定义了一个变量a是字符串,那就一直当字符串去用,可以避免许多不可预知的错误(虽然我们可以去修改为不同类型)
4.2 关于报错
不要去忽略错误 —— 很多人觉得:代码和人,有一个能跑就行了,这是大错特错的。我们应该去重视每一个报错,哪怕是警告,我们可以不去处理,但是一定得知道它是个什么意思
尽量避免报错 —— 做好容错处理,特别是取值的时候,你得做好预案:这里没值的时候要怎么去处理,才能保证程序能正常运行
4.3 问题排查
调试只是查询问题的方法之一,就拿断点来说,查看相应的数据并不一定能找到问题所在。
了解断点如何设置,应该设置在哪等就涉及到问题排查,是采用断点,还是查看日志,还是选择别的方式,也是问题排查
问题排查是一个思考方式,怎样发现问题?为什么没能发现问题?才是重点。发现问题后如何解决问题?
一方面取决于经验的积累,一方面取决于思考方式。相对之下,工具的使用就比较弱化,脑子里的经验和分析才是最重要的。
本文取自于本人的真实经历,确实跟着大佬学到了不少,希望能对大家有所帮助
1. 如有错误,敬请指出
2. 原创不易,还请各位客官动动发财的小手支持一波(转发、关注、评论、点赞、收藏)
3. 拜谢各位!后续将继续奉献优质好文
4. 如果存在疑问,可以私信我