已经大年初三了,不知不觉2016的一个多月已经过去了,现在回想起我的第二次任职实习还是挺不一般的
片段一 接受改变
那是一个正在准备期末课设的时间段,大概为期三天吧。第一天晚上,和往常一样,打开了Gmail邮箱准时查邮件(因为G-F-W的原因,邮件的推送总是不能准时,所以需要手动检查),先是一封国外猎头的招聘,大概看了一下感觉没什么意思(真实性有待考证,说是从Github上过来的)。紧接着下一封邮件可算是caught my eyes了!
邮件发送者(也就是我现在的老板)很认真的陈述了一下他看了我的博客(CSDN博客)和Github才给我发的邮件,然后大致描述了一下职位需求
看到这里,为什么说吸引我的注意力呢?根据以往HR发邮件的经验判断,这位HR很明显是认真考察过我个人信息的,接着自己也很认真的在博客上写了一份简历发给了他。第二天早晨也通过一段时间话,感觉很合拍。但同时,我又是非常犹豫的……
因为我已经接触Android快一年了,自己并没有想要换方向的强烈意向,而这份机会却是做JavaScript。因此在忙完课设之后,也同时纠结了三天。后来自己电话直接打了过去,聊了大概有一个小时左右吧,在正式通过面试之后,他也给了我几天的时间考虑。
我原先的打算是想要去上海找份实习,去仰望一下东方明珠的绚烂。后来考虑到自己工作这么久以来,对Android移动开发激情并不是特别高。觉得恰好这次机会也难得,一咬牙,就买了1月6号到北京的火车票。(现在想想也真是年轻啊,不论到哪儿,都是说走就走的节奏)
片段二 故地重返
也算是第二次到北京了,时隔两个月,很难想象一个自己曾许诺再也不回来的地方居然仅仅相隔不到两个月就直播打脸了,嘿嘿…..
不过这次很就没有上次那么容易找到房子了,找了有三天吧,最后好不容易找到一家,最后说是到月底才能腾出地方来。后来无奈之下,只好和同学一起挤了……
北京依旧是那个熙熙攘攘的北京,上地铁下地铁就跟打仗一样,生怕自己上的时候挤不上去,下的时候又下不去,自己也从当初那个对「低头党」嗤之以鼻的愤青转换为地铁低头一族,因为低头也有可能在做有意义的事情呢~
片段三 与优秀的人共事
很快我就入职了,刚一开始面对自己从没接触过的Javascript以及只有官方文档作为资料的React-Native,内心的茫然给你个眼神自己体会……
老板第一天也是一直给我加油打气,相信我一定能够克服眼前的任何障碍,我说自己需要一段时间去接受Javascript以及ReactNative官方文档,但是他后来的一句话让我至今获益匪浅
学东西,一定要结合实际去学,否则学过之后还是需要吃回头草,与其如此浪费时间,还不如让学习直接融入到开发应用中去。虽然学习和使用的过程可能会变得更加艰难,但是这样学习知识会有着立竿见影的效果而且该踩的坑都会踩到。在实际开发中对各个模块使用的优缺点等要领也会逐一接触到,不像以往先是过一遍,懵懂状态;开发时再吃一遍回头草,略懂状态;结果就这样长期处于初中级状态,学习方式不改变,很难有新的提升。学习语言也是这样~
结果呢?在被否掉自己的学习方案之后,自己也就硬着头皮上了,刚一开始,也就只能照着ReactNative中文网站的部分内容照着敲代码,只是觉得根据自己静态语言的经验,面对这样一片又一片的动态语言,着实不知其所云。同时呢,又因为缺少React的一些经验,对生命周期等东西不太理解,基本上刚开始的两三天是履步维艰。后来老板也发现我居然在学官网的翻译文档,后来就告诉我说让我做一个小的App玩玩。
当时自己的压力有种说不出来的大。后来的那几天,为了不让老板失望,自己也就只好在上下班的路上,翻开手机浏览器里的廖雪峰的网站上自己抽时间学es5、es6的基本语法(这也是自己在上边为低头党开脱的缘由,嘿嘿)。至于React-Native,自己则Google了几份不错的React-Native小的项目实战(这几份好的项目实战以及教程都被发在了掘金上),项目中不懂的,杰哥(以下称老板为杰哥)也都会实时为我解答。平时吃饭的时候,都会像机关枪一样嘟嘟地问,杰哥也都会不厌其烦地为我解答。对于一些问题,我比较喜欢做一些类比的事情来做更佳深入的理解,我们也都会进行进一步的讨论。
谈到杰哥,与他接触的日子里,基本上刷新了我个人的认知。大概有以下几点吧:
关于日常开发以及bug
往常,像我一样的菜鸟,遇到问题一般都会采取escape
的方式来解决,说的好听点叫避归,不好听就是逃避。比如像前段时间升级ReactNative版本而导致的一个巨坑,在尝试解决了一两个小时无果之后,我正要准备降回低版本时,杰哥说尝试解决一下。在排查了node库里所有的库之后,得出的结论是npm下来的库因为使用了阿里给出的update source所以导致拉下来的部分库的版本并非facebook官方通过编译的版本,在拜访了部分库的Github之后,给facebook项目下也提了issues,就这样一个在google上都没有被解决的就解决了。当然,这只是冰山一角……还记得平时遇到bug的时候,自己都是采取笨方法或者使用一些比较生硬的
while
循环去粗暴的解决问题。而杰哥则是给出了一句很经典的话:如果出现很ugly的代码,那一定会存在更加优雅的解决方案。
这就督促我在写代码的时候,如果出现问题,一定尽全力去解决,而非采取避归的方式。如果解决不了,也会在杰哥空闲的时候拉住他问个不停。只有这样不断去克服困难才会一步步进步。
对于开发,我印象最深的就是在写一个加载动画的同时去load数据的过程,在数据加载完毕后淡出动画同时呈现Home页面。因为要求动画的启动和数据的加载一定要实现完全并行,这就导致了二者无法相互间听,这个问题后来被我用while
这样很low的方式解决之后,被杰哥一顿批评,说让cpu在不必要的时候空转是非常愚蠢的。对于解决方案,这里给一个悬念,大家可以去这个页面看看解决方案 React-Native-Gank关于阅读
在公司,因为初创,人手实在有限。经常可以看到杰哥一个人忙完前端忙后端,忙完后端忙着帮忙解移动端bug,除了偶尔陪家人和孩子出去散心,经常都是一周七天在公司加班。但就在这中背景环境下,也经常看到他一早抱着电脑很细心的阅读一篇长文,这也就有了我后来在朋友圈中写道的为一篇好文花费多久的时间都是值得的,杜绝敷衍了事
的状态。花时间去看一篇好文给人带来的不仅仅是阅读量的增加,更是对人思考问题,解决问题方式的一种启迪。所以请腾出一到两个小时去阅读一些很有深度的文章吧 (如果你觉得对你很有用的话),别心疼那一两个小时,你省出来的那一两个小时都在溜号也说不定呢?关于编程规范
在入职的第一天起,杰哥就专程给我讲了一些写es6基本的一些规范,当然,我是记不住的。后来我就把他提出的一些要求都列在了EverNote上,每次写的时候都会可以去注意,但这样仍然避免不了一些由静态语言所带来的习惯性写法。后来的一天,他突然告诉我有es6语法检查插件了。balabala说了一大堆,我也是没住…..后来他干脆就直接亲自操刀,在一顿命令行之后,就搞定了。babel-eslint
插件的安装与配置。大家可以去Google一下。这里说的并非单单这个问题,在之前配置环境出现问题之后,他会认真的将OSX下所有自动生成的环境变量都会检查一遍,如果没有生成,在线演示一遍然后教我如何去读terminal或者bash给出的一些log日志,整个过程中体现出的是上一代对基础功的重视。可能我们在看一些教程的时候,都会有这种感觉,看起来是这么回事,但到真正用的时候,还是会去Google问题所在。然而这些问题在最原始的文档里都有写,只是自己在学的时候太过照本宣科了而已。
在与杰哥共事的点点滴滴中,让人看到的是一位充满极客范儿老大哥的形象,他对各项技能都有着近乎偏执的要求,对于bug绝不手软,对于技术本身则是看到必然去实现,去验证其有效性。我想这大概就是大牛对于普通人的区别,想到一句话:
牛逼之人必有过人之处。
也是,虽然人人都不能够保证成为大牛,但是我想只有在近距离去观察学习大牛们的点点滴滴,才会更好的向大牛们看齐。而不是去时不时看几篇大牛们写的文章,打点鸡血,奋斗两天就无所事事。相比大家都知道,大牛们之所以写一些令人向往的文章,人家只是给自己的学习历程打个Tag,谁都没有说这就是一篇Instruction啊!再说了,有一句话说得好:纸上得来终觉浅,绝知此事要躬行
,有些问题是习惯使然,一句两句是完全体现不出来的。如果真的能,那还要老师干嘛?
总之自己很庆幸能够得到这份机会,自己也经常在周六日会到公司里打开电脑,继续撸代码或者学习一些其他的东西,我想这种让人把公司当作学校的图书馆的感觉真是太难得了,自然、舒心…..