我从毕业往后,一贯从事业务系统的开拓,经历过社交、电商、租房等业务系统,从我的过往履历来看,无论是从事底层做事的研发,还是上层业务系统的研发,实在根本上是通过技能手段去办理问题,做事好我们的用户。那能不能把卖力的事情做好、做到极致实在便是关键。很多情形,我们大概只是把事情做完,做到60分旁边而已,勉强符合业务需求,但是每每表示技能能力的是,能不能把卖力的系统从及格(60)分做到90分,乃至100分的阶段,我以为可以从以下几个方面去衡量自己所卖力的事情是否做到了极致,从而找到方向,找到可能的技能提升点。
效率足够高么?
效率可以分为开拓效率以及定位线上问题并快速办理的效率, 实在这里人与人之间的差别是非常大的,有的人办理一个问题要1天,有的可能只须要1小时。这和人的聪明程度、逻辑能力、过往履历等有很大的关系,但是我们还是能够通过一些技能手段去提升效率的。比如可以做一些工具帮助我们去提升效率,举几个团队中的例子:

在做C端业务的时候,产品常常会让开发修正一个运营位的图片,修正某个文案,修正某个配色,增加一个灰度功能的城市,每次修正之后,还要找测试同学测一下,然后再走上线流程,这种噜苏的事很多,又没有什么技能含量。基于这个问题,我们就有同学做了一个配置系统,把这些改动抽象成一个配置项,研发同学花5分钟配置出一个可视化的配置页面,往后这种配置就交给产品、运营去修正了,修正后直接线上生效。极大的提升效率,并且把开拓、测试的韶光给开释了出来,做这个配置系统又是非常有技能寻衅的。
之前哨上涌现问题的时候,定位问题非常的未便利,会比较耗时,基于这个效率低下的问题, 我们有同学就搭建了一个日志系统,统一了业务里的日志格式,供应日志写入SDK,用ELK开源工具做日志的统一网络、存储和查询。做业务开拓的同学,在关键节点上都打上日志,定位问题的效率提升很明显。
还有其他的一些工具:图片上传系统,让运营自己去上传图片,拿到图片URL,在配置系统中利用;NOSQL查询工具,供应公司的wtable、wcache等NOSQL的GUI查询系统;SCF调用工具,供应公司的SCF微做事的GUI查询系统,表单里填入参数,就可以拿到SCF调用的结果,不用再写代码去进行SCF做事的调试。
以是,可以看看开拓过程中还有什么效率低的痛点,看能不能做一些工具去提升效率,同时也会提高自己的技能水平。
代码质量和复用性高么?
代码的质量和复用性可以很直接地反响出一个程序员的技能水平。小到一段代码逻辑的复用,能不能抽离出根本、公共的代码库,再到能不能抽象出根本的做事,供团队的同学利用,更大一点是业务系统能不能复用。
我们前后端团队里都有自己的根本代码库,大家都可以去贡献自己封装好的根本代码,这对代码的质量也有比较高的哀求。在业务开拓上,团队把一些公共业务功能,做成根本的做事,比如评价功能,很多地方都会用到,租客房东在隐私通话、预约看房、直播看房、在线签约后都会对彼此进行评价,那么直接就把评价做成一个根本的做事,供上层业务利用,做根本做事便是一个技能上的寻衅升级。我们做在线签约的时候,直接把签约系统做成一个公共的做事系统,可以在58上用,也可以在安居客或第三方网站上利用,不仅能够签约个人房源,还可以复用到经纪人房源、公寓房源,乃至租房之外的业务。
系统稳定性高么?
系统访问的用户量增大、存储量增大、内网抖动、依赖的底层做事不稳定的时候,还能够对外供应稳定的做事么,可以拿这些分外的情形来考验一下。我们的技能方案不但要能做到知足当下的须要,还要能够应对未来发展的须要,以及针对分外情形,要有技能方法去只管即便担保系统的稳定性。
用户并发访问量增大的时候,要能做到系统的稳定,就要会对系统的单机性能,瓶颈,有所节制,理解现在线上机器的容量情形,能不能做到水平的扩容,如果不能快速扩容,能不能供应有损的做事,担保核心功能能够正常利用系统,不至于全体系统不可用等等。
存储量增大的时候,能不能通过合理的数据库表构造的设计,提高数据的读写性能,或者利用高性能的NOSQL存储工具去提高性能,保障系统稳定。
内网抖动、依赖的底层做事不稳定的时候,也有一些技能手段能够去供应稳定的做事,比如我们的APP列表页做事,之前依赖的一个做事有问题的时候,全体页面都会空缺,后来我们做了一些优化,如果依赖的非核心业务挂掉的时候,我们供应有损的页面展现,只缺失落非核心的模块内容,但是还能完玉成部找房过程。如果依赖的核心接口挂掉,数据没法拉取出来的时候,我们对热点数据做了一份冗余的容灾备份,直策应用这份备份列表数据,用户还是能都看到部分房源信息,不至于像之前一样,页面空缺完备不可用。这是一个通过技能优化,尽可能把事情做到极致的一个例子。
系统性能足够高么?
系统的单机性能,乃至细到每个页面、每个接口的性能是否做到了极致,还有哪些优化的空间。能不能通过合理的数据库表、索引设计、高性能的NOSQL存储、分布式缓存、本地缓存、并发、异步等技能手段,充分有效的利用机器的CPU、内存和IO,提高做事的性能。同样举几个例子:
团队用的PHP措辞,在利用公司供应的行列步队消费客户端时,只能单进程串行消费,每个处理韶光须要100ms的话,64核机器,QPS上限便是640,单机性能比较差。基于此痛点,团队同学实现了一个行列步队的代理,通过异步非壅塞的办法分发到消费接口上,无论是代理还是消费接口都可以水平扩展,同样64核机器上,代理的单机QPS能够到达20万旁边。
在线签约业务,租客和房东会查看条约图片,第一次迭代上线的时候,条约打开均匀须要10秒旁边,很慢,体验非常不好。开拓同学自发地通过以下技能手段进行多轮优化,终极实现打开条约的韶光在1秒旁边:1.压缩图片,利用行列步队多进程消费压缩任务 2.pdf2png 做事从串行渲染N页条约改为单页并行渲染 3.根据图片sha1缓存图片 4.修正输出办法减少相应内容,将base64直出全部图片改为url异步加载,优化首屏速率。
总结
以是我们可以从开拓效率、代码质量和复用性、系统的稳定性、系统的性能等四个方向,去检讨一下我们目前做的事情,看看是否还有优化改进的空间。可以定一个比较有寻衅性的目标,要达到这个目标,可能是冲要破现在节制的知识的,这就须要通过学习去扩展自己的知识边界,然后再实践于项目之中。目前团队卖力的一个运营活动,里面有个秒杀兑奖的业务,开拓过程也有性能上的考虑,做了一些优化,上线的时候压测,单docker 8核 QPS是400。如果我们把QPS目标定成800,实在还是有技能办法能够做到的。我们可以发扬把事情做到极致的精神,提高目标,通过持续的迭代优化去靠近目标,就会积累很多办理问题的履历,技能水平自然就会提升。
资料来源网络,侵删