前言
年初时,给自己立了个flag:至少写20篇技术文章。然而,半年过去了,自己竟然还一篇还没有写,实在是惭愧。想想最近这段时间过得确实有点安逸,该看的书没看,该写的文章没写。孔圣人曾说:每日三省吾身。圣人每天都要反省自己。我作为一个普通人,也应该偶尔反省一下自己。自己跳槽来深圳已过三个月,太忙,没时间写文章。趁着今天周末,就找个时间谈谈这次跳槽吧。(伟大源于日复一日的坚持)
准备
曾在去年十月份左右的时候,就已经给自己立了个flag:明年6月份无论如何都要回深圳。之后就进入了漫长的准备阶段。看了大牛任玉刚分享的Android学习路线指南,给自己跳槽的定位是中级Android开发工程师。因为大厂要不就招聘应届生,要不就招3年以上工作经验的高级工程师。由于准备跳槽的时间点是6月,自己也就不到2年左右工作经验,这个时候跳槽大厂是有点尴尬的。既然决心已定,就全力以赴吧。
口头说准备容易,行动起来真的太难。加上那段时间公司新项目(milk),根本就没有时间去准备面试相关知识。恰恰是那段忙碌的时间,让我的技术能力,代码设计能力有了很大的提高,自己的一些新想法也在新项目上得到实践,最重要的是自己的工作也慢慢得到了同事和老大的认可,这让我渐渐打消的要跳槽的念头。但是也一直在刻意积累自己想要学的东西。包括自定义view、热修复、网络层框架和客户端整体架构在2月初时,我基本已经摸清楚了。
转眼时间来到3月份,老大给我晋升加薪,这个时候就更加犹豫了。口口声声说要回深圳(当然没跟其他人说跳槽的事),但是内心已经松口了,觉得明年再回去也没问题。毕竟刚晋升就走确实对不起老大。
事情转机出现在4月份。一个HR在脉脉上联系我,问我要不要去试试看。当时招聘JD写的也是要求3年以上的工作经验,在HR盛情邀请之下,我还是决定试一试,毕竟就算失败了,我也不亏,为明年做准备。
面试
4月中旬把简历写好发给了HR,也没太在意。一天组内团建去爬山,累得半死半活,8点多洗完澡,准备睡觉。在晚上9点左右就收到了一面面试官的电话面试,答得并不好,有不少基础的题目,该答出来的都没答上来。不想找借口,确实是因为太累了。之后就没抱希望,第二天就直接跟HR说面试应该挂了。没想到竟然过了,让我十分意外。
流程很快,一面之后紧接着就是约二面时间,当然是希望能越往后越好,为自己多争取一点复习时间。面试官说最晚一周后,我想着反正无所谓(就没想着会过),就又把时间提前了两天。二面是视频面试,问题比一面更有深度,都是问很深入的东西,比如叫你设计一个网络架构你会怎么设计,需要考虑什么问题?为什么要这样设计?都是很开放的问题,要是平时没有深入了解其中原理,基本上就跪了。最后还问了一个算法题,大意是给定一篇文章,文章中有很多的过滤词,用什么方法能快速找出这些过滤词并替换掉?到最后其实是有点蒙的,一开始只能想到最普通的遍历,这样的算法的自己也是不满意的,当然面试官也不满意,我就跟面试官说给我5分钟,喝了口水冷静下来,想到了建立字典树的方案先把所有的过滤词放到树中,再用文章一遍扫描,这个方法是n+m的复杂度,相比第一个n*m好很多。当时也没看面试官反应,貌似也不是最优解。最后就问还有什么想问的,这些都是套路话,问了一些团队工作方式,氛围等几个泛泛的问题之后就结束面试了,时间不到一个小时。
二面之后立马约三面,三面是个总经理级别的人物。面试过程也比较轻松,主要是聊聊我现在的工作、跳槽的目的和对未来的规划。问题不大,半个多小时就结束了。
几天过去后,HR通知我面试全部通过了。整个流程下来,不到半个月,然而我并没有狂喜。等待我的是一个很艰难的抉择。
抉择
从入职到现在,leader对我都很好,从一开始啥都不会到现在能够独当一面,很大程度都是leader的功劳,自己在一年多时间里也成长了很多,而且今年刚刚提了晋升和加薪,这个点走确实有点不太合适。几番衡量之下,发现自己回深圳的念头更加强烈,而深圳相对来说鹅厂应该算是不错的去处,便最终决定接受鹅厂的offer,准备南下。决定之后便立马跟leader说了,leader表示理解,很快就通过了离职申请。离职的最后一天,整个组的同事一起出来请我吃饭,为我送行,大公司中有这样好氛围的组并不多。猪厂扁平化的管理风格也让我很怀念,我们总监是和我们做在一起的,还经常一起吃饭,来到鹅厂三个月,总监几乎见不到面。
南下
6月4日办完离职手续之后,6月5日就匆匆赶往深圳了。深圳给我的第一印象是空气特别好,有活力,年轻人特别多。虽然来的第一个星期天天下雨,但心情舒畅了许多,感觉和北京相比,自己还是比较喜欢这种气候。在北京眼里全部只有工作、工作、工作,至少在这边还能跟同学撸撸串、聊聊人生。
入职
入职之后,和自己想象完全不一样。没有代码规范、没有code review,代码质量也不高,版本管理用的竟然还是svn!经过一段艰难的适应期之后,还是告诉自己,既来之则安之,改变自己能改变的,接受自己不能改变的。第一天进来刚把环境装好,第二天就马上改bug了。这种快节奏我还真第一次遇到。原来猪场新同事入职,一般都有两周的缓冲时间来熟悉环境,后面才是慢慢接触新bug,新需求。第一个需求很快就到来了,就是把普通全屏h5改成播放器加h5的形式,凭借这一年多的工作经验,做这么个需求自然不在话下,但是自己还是不停测试并优化自己的代码,快速并很好的完成了任务。令自己比较欣慰的是,一起合作的同事一开始也不太重视代码质量,在我的影响之下,也开始重视代码质量了。
反思
从8月份至今,每周上六天班,国庆因为要发版,也来加了五天班,忙得晕头转向,也经常问自己:自己到底想要在这份工作中得到什么?本来以为这么成熟的app,不会有太多的变动,会有更多的时间去钻研技术,然而现实的需求并没有排期,boss拍定一个时间,就需要在那个时间点完成,压力可想而知,代码质量就更不用说了。晚上十点多回去是常有的事,自己计划要做的事(Android源码系列分析文章)只能往后放了。因为工作中有时候也要用到iOS开发相关知识,学习iOS开发的计划便提前了,国庆回来之后,OC语法基本学完,后面还是得抽时间去学学iOS-app开发的设计架构和理念。有了Android基础,学起来快了很多。等这段时间忙完,希望能够抽身去学习自己感兴趣的linux底层相关的技术,还是要注意工作的积累,不然天天做业务,几年后技术就荒废了。