***有关生活篇2016年度总结,请移步微信公众号JackieZheng查看历史消息***
努力工作
我很感激,每次在绩效考核的时候,从老大那边都是收到了大量的正反馈。能够得到同事和领导的认可,这是一种金钱不能比拟的幸福。老大为我们提供了足够轻松自由的工作环境,作为相互信任的另一方,我们对待工作也必是全力以赴,保质保量的完成手头上的任务,我一直认为这是一个令人愉悦的良性生态圈。
14年11月份校招季,有幸拿到这家声名在外的公司的offer。带着憧憬和美好的期许,15年4月进入公司实习。办理入职很是细心周到,老大早已帮忙领好了电脑,这可是号称工作站,价值2万的大家伙,附属的电源能抵得上一块砖头的重量。参加完为期一周的入职培训后,被告知先跑一段时间的case,我心里琢磨着,用这么好的机器让我跑case,不是暴殄天物么。但是同事们语重心长的告诉我,跑case,是让你熟悉业务,现在我承认,这是最快最有效熟悉业务的方式。
与之前做的一些项目不同,这是一个产品,已经开发有三年时间,用到的都是比较新的技术工具和设计理念,比如intellij iddea git maven jenkins angularjs docker rabbitmq等等。所以想要摸清这个框架的体系并没有想象中那么轻松,但是相比15年我还是在外围瞧热闹,16年我已经入门了并有了一些体会……
你可能经常会接到一个修复bug的case。但是这个case你并不熟悉甚至完全不知道相应的功能模块在哪,起初你会有点懵比,但是接的多了,你就有自己的一套解决问题的方法了。比如首先从提交bug描述中看懂问题,尽可能的提取更多有用的信息,如预期结果是什么,实际结果是什么,如何重现问题,已经经手这个bug的人,在什么环境里面出现的问题,有没有相应的commit等等。然后根据重现步骤,确认在指定环境上确实能够重现问题。后面就是解决问题了,比如看看之前是否提到那个类或者那个UI模块,可以通过浏览器调试工具找到相应的html或者javascript文件,也可以通过类名到项目中定位该类,使用git工具show history找出最近提交的commit和committer,看是否能够提供更多的帮助信息。找到相应的代码或者熟悉的人就好办了。下一步如果是UI的问题,定位到指定的javascript在浏览器就可以调试,如果是java类,比如spring mvc的controller层在处理rest call逻辑是否出现问题,通过打断点调试排查。所以说,套路固然重要,但是找到一套属于自己解决问题的方法才是王道。
在这一年里,也潜移默化的明白了很多编程思想和设计理念吧。比如写完一个功能类后,一个保护该类的单元测试(ut)是少不了的,一个feature完成后,一个automation test也是不可或缺的。开始也不明白写这些比功能代码量还大甚至还复杂的代码有什么用,但是通过后来的实践你会发现这个非常有用,对于持续集成持续部署以及持续交付来说,如果你的代码相应的ut或者automation test跑挂了,首先可以肯定的是你需要check你的代码,排查是test写的有问题还是功能问题,这时候test就是一个校验的作用。与此同时,还有保护代码的作用。同样在jenkins上跑,你的ut挂了,但是你可以肯定的是你并没有改代码,但是当你去排查的时候,你发现git上确实显示有人动了你的代码,好了,你就可以理直气壮的找他为什么要动你的代码并如