linux工程师,RHCE
分类: 系统运维
2020-05-08 18:32:11
作为一个程序员,我们最经常的感觉就是每天的时间除了开发需求就是在查bug,每天都过得很累,但是一年过去,反而觉得自己没有什么提升。
作者:沙茶敏碎碎念来源:|2020-05-08 15:41作为一个程序员,我们最经常的感觉就是每天的时间除了开发需求就是在查bug,每天都过得很累,但是一年过去,反而觉得自己没有什么提升。最近有一个热门的词汇,叫做知识恐慌,特别是程序员,更加恐慌,这个世界发展得太快了,技术的迭代日新月异,很害怕若干年后,就跟不上时代的脚步,尽管35岁之后可以转行送外卖,但万一到时候不需要外卖老哥了呢。
在过去的一年,手里的业务经历了快速迭代,有一些业务甚至有数百倍的增长,很多业务都出现了不少问题,随之而来的是各种投诉,每天除了开发开发各种需求,还要处理各种bug。越干越累,恶性循环。
和大部分公司相似,我们公司是需要开发及时给客户反馈的,所以QA会一直催促你帮用户看投诉单,毕竟这是他们的KPI,但是查投诉的大多数情况对开发其实是没有成长的,都是机械性的查日志,修数据。那么,如何在这些枯燥无味地工作中得到成长呢?一个很重要的事情,就是做总结。
投诉大概分为几类,首先是当然是产品逻辑或者是用户理解的问题,有些人可能会说这应该是产品经理的问题,开发只是按照产品的需要去设计而已。对于大部分人来说,他们的职业规划当然不是做纯技术人员,更多的人,是想做管理,甚至想出去创业的。那么更要珍惜这些宝贵的机会,一款产品如何设计得更加合理,是你必须考虑的问题。当然,并不是优秀的产品就投诉少,就像每天都有1亿人想交张小龙做产品一样。
第二类的投诉是代码的bug。有些人很忌讳bug,觉得这个就是自己能力不足,其实是程序就会有bug。我们应该从bug中去进一步反思,是设计的问题,还是开发流程上不规范造成的。我们还需要对bug举一反三,去思考同类型的业务是否也有同样的问题,举一个例子,最近我们有一个业务,需要从数据库里面读取大量的临时数据,使用了C++的vector去存储,我们知道,这种不定长的数据结构在申请内存的时候,是会翻倍申请的,在一些极端数据下就会内存不足。我们要反思我们所有的代码里面是否有类似的情况,不仅是vector,类似stack,hashmap都有这样的问题,我们要一起解决掉。
第三类的投诉往往是性能问题,如果你的程序遇到了性能问题,那么恭喜你。说明你的系统的用户量到了一定的规模,系统遇到瓶颈,优化他,你会对你做的事情有进一步的提升。我们在日常使用APP的时候,我们经常会发现这么一个事情,很多APP的交互上面都不展示数据有多少页,或者总的数据有多少条。这其实有时候是一种妥协,因为大部分的数据库,对处理select count语句都不太友好,性能比较差。最近我们就遇到过这么一个例子,在一个超大的表里面,select语句可以快速的返回,但是select count却不行。最终排查下来是因为索引没有全覆盖的问题,最后还是要回源到表中扫描数据,造成效率过低。
在出现了索引造成的性能问题之后,除了优化当前遇到的系统瓶颈,可以顺路地把索引相关地知识再进一步地进行加深跟巩固,可能以前你对索引的理解还不够透彻,再出过一两次问题之后,再结合书本上的知识,一定会有更深的体会。
我们常说,一个好的程序员不是要解决一个问题,而是解决一类问题,那么一类问题如何定义,首先要找到这类问题的业务特点。好的程序员要多总结,为什么先前的代码设计没有考虑到这些问题?核心的原因是什么,都要考虑清楚。只有做到这一点,才可以进一步的提升自我,成为某一个领域的专家。
遇到问题其实不可怕,关键是要想办法从枯燥重复的生活中解脱出来,这才是程序员成长的优秀道路。《linux就该这么学》不错的linux自学书籍