把上班时间的所有精力放在coding上的是码农;除了coding之外,会做日志分析、数据分析、技术架构、已有代码优化、技术发展短期规划、团队产品中长期规划……的才是软件工程师。
作为一个入互联网大坑一年的初级软件工程师,最近越来越体会到软件工程师的不易和自己与高级工程师、资深工程师的差距在。好久没有码字了,虽然不能准确地表达出来这些差距是什么,但对职业的发展,也逐渐形成了一个简单的规划。并且正在朝着这个目标坑次坑次地前进。
刚入坑的时候,觉得代码就是一切,一有时间就会以最快的速度把手上的任务做完,做完后也就没有然后了。最近才刚刚回过味来,写代码很重要,但也很基础,除了代码之外,还有很多事情值得去做。
入坑到公司的第一个任务是支付渠道优惠的项目。刚拿到任务的时候就开始编码,忙了近一个月,项目终于上线了。由于代码之间的耦合性太强,项目上线后的第一次活动,支付渠道优惠服务竟然把优惠台、收银台全给拖挂了,直接导致支付故障近一小时,造了一个S1级别的BUG;第二次上线,吸取了第一次的教训,降低了模块间的耦合,并在入口处对数据请求进行拦截过滤,一周后第二次活动开始,由于与活动并行的有一个全场立减的活动,又一次导致支付故障近一个小时;然后系统继续优化,最终终于hold住了流量的需求。在这两次事故后很长一段时间内,自己都没有意识到应该去总结一下为什么会发生这样的事故,直到有一天看到一篇文章介绍xx团队是如何对大流量进行处理的文章,才恍然大悟:原来这个坑不止我自己遇到过,别人遇到的时候,通过数据驱动尝试不断优化每个层次,使系统更加稳定;而我这边却以结果驱动,出了问题再去补救,而且补救的不够系统,没有强大的数据支撑和业务支撑。高下立见!
看完文章突然发现,coding不是工程师的日常,除了最基础的coding,工程师还有很多其他的辅助工作要做。再看周围的高级工程师、team leader,他们确实也在做很多coding之外的事情,比如架构优化、系统监控、中长期规划等等。最近一直在向他们学习,也尝试着去做一些监控工作、优化工作等,虽然暂时还没有对平台发展的中长期规划能力,但也可以通过看别人的规划、别人的演变历程来总结经验教训。
截止目前,我的日常如下:
1. 每天第一件事是打开邮箱,查看各个自动监控系统发来的报警、错误,并找原因。
2. 配置对数据的监控报表,并观察每天的报表变化,及时发现问题。报表的配置需要结合业务逻辑,以我的工作为例,我会通过配置报表监控业务方的退款状态是否正常,监控的数据包括:七天外尚未退款成功的数据、30天内与退款平台状态不一致的数据等。
3. 技术设计,好的设计可以提高开发速度、帮助自己理清开发流程。在做技术设计的时候,根据不同的需求,关注点会有所区别:比如偏展示侧的技术设计,会更关注数据的存储和展示、页面-视图-数据的对应关系等;偏交易侧的技术设计,会更关注交易流程、外部系统依赖、接口幂等等。
4. 技术评审,自己的设计进行技术评审的时候,能让大家帮你发现问题点、注意点等。评审他人的技术设计的时候,可以学习别人的设计思路、挑战别人的设计等。
5. BUG修复,当产生线上BUG的时候,根据线上BUG的严重程度确定修复周期。
6. 每周回顾,每周对本周做的事情,遇到的问题等进行汇总,并形成周报向上级汇报。开始感觉每周回顾是为KPI服务的;后来慢慢发现,KPI是促进我们不断发现问题、整理问题的一个不错的督促手段。
7. 每周查看服务性能,如果服务可用性低于 99.99% 的时候要及时找到不可用的原因,并尽可能修复;如果服务里面有耗时过长的sql调用、服务调用等,需要考虑如何去优化。
8. 学习和总结。。目前做的还不够到位
每天、每周按照这个流程做事,服务效率得到了优化、BUG影响降低了很多、设计能力也在不断提升,比单纯的码农充实了很多。
网友评论