2016年我只做了两件事——努力工作和努力找工作
***有关生活篇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上确实显示有人动了你的代码,好了,你就可以理直气壮的找他为什么要动你的代码并如何解决问题了。这时候你的ut就保护了你的代码。
在外企工作,难免要和英语打交道,但是大多数时候只需要书面形式的邮件来往即可。如果有口语交流的机会,大可大胆的张张嘴,其实口语交流没有想象中的那么难。期间接到一个大的story,需要将另一个产品中的代码transfer到我们现在的产品,而这另一个产品是一个捷克的同事主要在负责,那么在线meeting是逃不了的。还记得第一次会议的时候,还是很紧张的,但是还好,有老大跟我一起参加,会议开始后,老大会寒暄一番(常常说中国是礼仪之邦,其实这些foreigner也是很有礼貌的)然后开始transfer,对于有问题的可以直接打断提问。两次往来之后,老大说让我自己直接跟这位同事开会,他就不参加了。这时候不能怂,毕竟老大是信任我的,妥妥的就上了,当摘下耳机后发现会议过程中自己的注意力也集中了,问题搞得更清楚了,有了莫名的责任感。越到后来,氛围更加轻松了,有次忘了关静音,打了个长长的哈欠,直到那个同事忍不住的笑出声来,我才赶紧关了静音,还有点小尴尬呢^^。做完这个story提升了不仅是技术同时还有自信心!
很多人对于自己要不要换工作踌躇不前,所以网上有很多求助帖以及答疑帖。其中有位说的比较好,跳槽的时候选择你在当前公司达到最顶峰的时候跳,这样对你最有利。如果你还能感觉到在这个公司每天都在进步的时候就不建议跳槽了。是的,显然我是违背了第二条原则的,在当前公司我真的还有很多要学,不管是学习这些优秀的人的为人处世还是产品中海纳百川的技术。但是由于公司的战略调整和组织变动,让我觉得应该出去看看,去汲取更丰富的营养,感受更加积极向上的正能量。
努力找工作
总的来说,整个找工作的过程就是一个字——快。
真正参加面试的公司并不多,总共就五家,除了其中一家没有面完外,其他四家面试都很顺利,并且也都拿到了offer。
第一家是个银行下的子公司,这里简称为P公司。该公司倒是很人性化,特设周末专场招聘,对于那些请假不方便的码农来说简直是一大福音。冲着这点,对公司的印象还不错。
猎头之前跟我约的是下午1点30,还贴心的提醒我要早点吃饭,不要饿着肚子面试,会影响发挥。我诚恳的接受了他的建议,准备在10点30左右定外卖的时候,P公司人力资源部门打来电话客气的问到否早点去,越早越好的那种。我说没问题,现在就出发,对于吃不吃饭我倒无所谓,记得校招那会经常是一天就吃一顿,只是现在胃确实大不如前了。收拾下东西背着小包,坐上地铁就直奔P公司了。
不愧是周末专场,人还挺多的,除了一些稍显不自然的面试者坐在各个会议室,还看到了一些在激烈争论问题的,应该是加班的苦逼码农。说明来意后,我被安排到一个大会议室,这里原来还有一大批面试者,没两分钟我就被一位姐姐叫出去,左拐右转的来到了一个小会议室,立马来了一位我认为是面试的,迎面坐下,就开聊了。问了我过往经历还有我读研的专业以及对于大数据的理解等等。10多分钟后,和蔼的面试官面带微笑的说“其实我只是随便跟你聊聊啊,面试官还在面试其他人,你稍微等下”,我一口血差点没吐出来。
后来终于把我带到他说的面试官面前了,一看就是技术派,话不多,但是说一句是一句。先来了个ArrayList和LinkedList区别暖暖场,这个我显然OK的。后面有问了一些java集合的问题,但是估计跟招聘职位要求有关,这个岗位是做互联网金融的,随后主要集中在数据库、多线程以及事务等方面,说实话,这块我工作中接触的不是很多,有理论的理解但是缺少实战经验。在满满的你问我答环节后,自己感觉一般般。因为这是第一场面试,而且也没来得及好好复习,基本刷完简历3天后就被通知来面试了,所以心态很平。而且当时面试邀请信上说的只会有一轮面试,所以面完我就回去了,也没报什么希望,只是想着这些没答上来的问题回去要开始查缺补漏了。
坐上地铁开了20多分钟了,一个电话打过来让我回去二面。我天,咕咕叫的肚子在召唤我赶紧回去吃饭,但是电话那头让我回去面试,没辙,我赶紧换乘对面列车折返。再次被姐姐带到一个会议室门口,等着!因为这个面试官还在面试另一个,我在外面看的很清楚,应聘的有点小害羞,头偶尔抬一抬看看面试官,立马又低下头或者看看墙面,但是可以看出面试进行的很顺利,因为他们真的聊了很久,我等了足有半个多小时。到我了,面试官示意我进去,我问了句“你要不要先休息下”,他说不用,面试官高瘦高瘦的,但是举止很得体,看的出来应该是manager级别的。主要抓着我的简历聊了聊,似乎对简历很感兴趣,由简历上的一个可视化居然聊到了swt rcp还有tableau等等。整个过程20分钟左右吧,我被告知稍等,然后又是那位姐姐让我进入终极面试,把我引导了一个半开放式的办公室,这个面试官应该是技术总监级别,技术层面问的到不多倒不多,主要是对于技术的理解以及期望薪资等。再后来就是HR面试了,那时候快三点了,当时大脑应该缺氧了,以至于HR姐姐刚进来随便问了句“你什么时候来的”,我反应了半天说了句“让我缓缓”。出了P公司后,我觉得这个offer应该没问题的,果然,第二天就发offer了,效率很高,点赞。
第二次面试我用了一天的时间,约了三家。后来证明这个安排有点唐突了,因为我根本赶不及,所以第一家我面试完一面后直接放弃了,一是我对这个做保险的公司没太大兴趣,而且前台mm的态度还是比较傲娇,没有留下什么好印象(做了5页全英文面试题,然后一面问了蛮多问题,技术这块应该还是可以的);二是为了赶下家,不能让猎头在公司面前失信,我直接赶点奔下家了。
这是一家知名的市场调研公司,这里简称为N公司,招聘的岗位是爬虫。因为上家时间耽搁太久,已经推迟过一次时间了,我几乎是一路狂奔进他们办公室的。联系我的HR是个男的,声音很有磁性,人也很好。我到了之后他跟我一起进了一间会议室,发现里面已经做了两位面试官,都是女生,看着也比较年轻,因为迟到了,让他们在饭点等我还是很自责的。除了后来又进来一位女士,还在线连着一位base在北京的技术同事。可以说不算大的会议室,我被这四位同事包围了,然后就进入了面试环节,虽然是外企,但是全程没有涉及英文交流和面试,问的多是技术问题以及对于突发情况的应变能力还有沟通能力的测试。几番问答后我大概知道这是一个刚成立的大数据团队,这个team招人主要负责数据爬取和整理,提供给下一流程处理,所以问我的都是爬虫的相关经历,比如页面解析,爬虫框架等等,这些我之前倒是研究过也很感兴趣,而且就在面试前两天还做了个豆瓣影评数据爬虫。只是可以感觉到team的职责分的不像现在公司那么清楚,除了爬虫编码,还需要良好的沟通能力,直到最后面试结束,面试官和HR肯定表示我符合他们的要求,而且后来HR送我出来时,还表示我比较适合这个职位,做技术发挥不出我的优势,哈哈,尴尬了,可是我就是喜欢做技术,正是这个原因,我也拒了这家的offer。但是在这里仍然感谢面试官等我那么久以及对我的肯定。
离开这家后,立马赶往下家,约的是下午2点整,基本也是踩着点到的。这家公司是做音频的互联网公司,这里简称为X公司。在HR姐姐的指引下,填了一张表,稍等片刻后,来了一位面试官。穿着简约,身材消瘦,也是一位看一眼就知道走的是技术流的实干派。穿过一条走道,就径直走进一间会议室,开始正式面试。似曾相识的场景,面试官上来丢了个入门级有关java集合的问题活跃气氛。然后开始抛出一些高阶问题,问了有关jvm的问题,说实话我对这块还没有研究过,具体的堆栈设计我也只是有时候零碎的听过,没有系统的学习过。对于自己不擅长的问题,我一贯采取的策略就是两个字——不会。因为模棱两可的回答只会让你在坑里陷得越来越深,直到最后淹没。
就java这块高阶部分,问到面试官已经无从问起,还是有点小尴尬,因为有关jvm我直接说不会,有关多线程高并发我只有理论积累,似乎面试进行到这就陷入了僵局。但是我心里清楚,当前我没有接触的并不代表我就不会,我一直奉行学习能力为王的理念。尤其对于IT这行来说,技术的发展日新月异,很难讲当前的你会什么什么技术就能保证你可以一直不用学习来吃这碗饭。学习能力很重要,有时候需要你在很短的时间学习并掌握一项工具的使用,一些API如何调用,一个框架的工作流程等等,所以当前不会没关系,你可以学。面试官明白了我的情况后又看了看简历,就简历又展开新一轮提问。我们聊到了过往的工作经历,对开放问题的解决思路,最后谈到了大数据,爬虫以及系统设计等等。我开始拿起水笔在后面的白板画出面试官提出的问题,比如nutch框架的设计思想和如何完成爬虫,具体每一阶段又做了哪些工作,nutch对于不同http请求的响应状态的处理和再处理策略等。估摸着有一个多小时过去了,面试官示意我在某方面知识积累还有欠缺,但是整体感觉思路清晰,有自己的想法。最后面试官给我吃了个定心丸,然后开始二面,我心想一面已经经历了一番技术轰炸后,应该让我喘口气了。谁知,这位看着和蔼的面试官拿起了一张又一张的白纸,我在不断回答他的问题的时候,他就不断的在纸上记录并圈圈点点。有时候会稍稍停顿,在纸上画上一个圈,我就知道新的问题又来了。期间,我再次经历了手写代码以及手绘白板。就这样,直到我出门看了下手机,整场面试用了两个多小时,这种感觉就好似身体被掏空,但是过程是很充实的。也正是这种扎扎实实的面试过程,让我对X公司的印象分大大提高,并且高于之前的P公司。有幸在过完周末后就收到X公司的offer。
最后一家面的公司ERP领域的NO.1,这里简称为S公司。这是一家外企,为了避免浪费大家的时间,在face to face之前,有一轮电面,主要涉及为什么要换工作以及简单的英文测试等。一切顺利后,于某个周五前去面试。这是在所以面试公司里面办公室的设计和布置最让我满意的,各种绿植会让你产生是否置身热带雨林的幻觉,小角落还零星的散落一些空气净化器,个个都在喷云吐雾。尤其是明亮的灯光和干净简约的桌椅,让我忍不住跟先到的两个面试官开玩笑道:“你们公司真好,灯都比我们公司的亮些”
主面试官因为有一个小会,所以稍微晚到了写。他来了,坐在我对面的是三位面试官,面试就正式开始了。可以明显的感觉外企和国内企业的面试官还是有明显的不同的,这位面试官显得很从容,不急不躁,稳扎稳打的抛出一个个问题,所有的问题点到为止,谈吐优雅,不会让你有一丝丝的不适感。面试的前半段主要是主面试官全英文面试,大概让我介绍最近做的项目情况,然后就简历开始展开追问。面试官很直接的抛出一个问题,说的大概意思是为什么我简历上写的实习经历这么多,我有没有好好珍惜在学校的学习生活,甚至有那么一丢丢质疑我能否完成学校的学业任务。这对我来说不是难题,因为学习本就是一个广义的概念,学习是一种态度更是一种修行,显然我们不能根据你学习的地点比如学校就来断定你学的好,及早的步入社会就咬定你学的不好。那么,我认为这个问题就被化解了,英文环节结束后,面试官还特意强调这个问题只是一个试探,没有恶意,自然,我是懂的。
下半场,主要是两位辅助开启技术面试,也是写白板画流程,问有关技术框架比如spring mvc的一些注解,常用的设计模式以及在公司做是否用到和如何使用,还有一些mvc模式的前端框架的思想和优点等等。整场面试下来,感觉尚可,下午就有HR过来发offer了。
刷简历期间,感谢辛勤的猎头和HR给我推荐各种机会,大部分我都因为自己的想法和个人原因没有参加面试。后来年关将近,也没有再刷简历,而且在这四个offer中我认为已经找到了合适的新东家,目前阶段还是比较推崇技术,所以最终还是决定去X公司,但愿2017一切顺利,也祝各位读者新的一年工作顺利,心想事成!
技术盘点
- 上半年主要看了一些前端的框架和平台,比如angularjs以及nodejs
- 期间做了一些小玩意包括“为了媳妇的一张号,我与百度医生杠上了”“玩转百度语音识别,就是这么简单”“小爬虫系列”以及梳理之前在可视化方面的工作
- 看了部分Tomcat web服务器的代码,但是没有太深入,体会比较深的就是管道模式和面向接口编程的应用
- 花了一段时间写了Spring mvc学习系列,因为自己平时编码中涉及Spring mvc很多,所以就系统的整理学习下,很意外,这个系列虽然是入门级,但是阅读量超乎我想象,成为首篇破阅读量的文章,目前有4万多次。
- 博客的关注人数截止到目前为止,已经有176位。我已经不记得去年这个时候是多少了,总之感谢这些关注者,他们的关注和点赞将鞭策我写出更好的文章。
- 微信公众号截止到目前已经有了256位关注者,虽然人不多,而且呈现缓慢增长,但是一直增长的数字让我看到了我的价值以及我能带来的价值,这也是大家对于我分享精神的一种肯定。另外也感谢微信公众号平台邀请我开通了原创功能,留言功能以及打赏功能(感谢媳妇每次都来捧场)。
- 16年还看了一些技术和非技术的书籍,因为没有整理,所以就不再详述,希望17年能够多读书,多涉猎。(不知道有没有好用的软件能够记录一年看了那些书或者那些电影的。)
洋洋洒洒写了这么多,就这样吧,谨以此篇与我的2016说再见,拥抱我的2017!最后祝大家新的一年工作顺利,生活幸福!
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!如果您想持续关注我的文章,请扫描二维码,关注JackieZheng的微信公众号,我会将我的文章推送给您,并和您一起分享我日常阅读过的优质文章。