前言
好久没来博客园了,上次来博客园还是写这篇帖子:
《年终总结》工作三年多,来来回回,跌跌撞撞,总结批评一下自己这三年半。
那还是两年前,当时工作经验三年,处于人生迷茫期,人生有过多次抉择,到如今,工作五年,距离当时已然两载。
如今再度翻开之前博客,体味到当时那懵懂、冲动、浮躁和迷茫的自己,心里不由有感而发。
两年前最后的询问是,路在何方?
这件事,在两年后的今天,或许我能稍微解答。
先来说说最近这两年近况。
一、关于工作方向
现如今是程序员,前端、移动端工程师,技术栈IONIC2、React、React Native。
对Node感兴趣,私下里面自学一点儿nodejs。
二、两年心路历程
当时我处于懵懂的状态,从发表文章的时候17年初,到17年3月份,我当时的状态并未有多大的提升。
还是懵懂和迷茫居多,当时写完文章或许要下定决心搞点什么,但却在两三个月间一直拖拖拉拉,并没有太大的改观。
所以,到了17年3月中旬的时候,我突然就意识到,我不能一直都以这种状态度日,身为技术人,最关心的应该是提升。不管是经济上的提升还是技术上的提升,都需要如此。
纷乱的技术已经在16年过了一个遍,我当时公司的环境也并不好,周围的人都很浮躁,因为老板就很浮躁,最后移动端技术也束之高阁,我却突然松了一口气。
搞技术虽然要走马观花,但却有时候也需要直见本质,当时公司的环境已经阻碍了我的人生发展,再待下去心态会出问题,信心也可能会受到影响。
当时公司有人工作5年以上,在一个水平很一般的公司工作如此长的时间,他已经很怕接触外面的公司了,也不敢寻找新的工作机会,这件事让我感触很深,我联想到当时的迷茫状态,感觉在这样的公司继续下去也可能最终浑浑噩噩,遂决定离职。
三、是否改变
提出离职到办理完离职手续,已经是5月份,在离职期间,我确定了下家,也就是我现在呆的公司。
当时面试的时候和公司技术官聊的问题涉及的技术问题并不太多,更多的是从我自身出发,我陈述了我想要的东西:
1、技术能力的提升=====前端技术栈
2、技术在公司不边缘化=====不是可有可无
3、最好是公司核心产品=====产品受公司重视
技术官确保以上条件都满足,并且热情地邀请我来公司。我几乎是没做过多思考,当天就应下这份工作,等到离职手续办完,第二个周一,我就来公司上班。
然后我才明白,为什么公司对我说的技术要求都满足。因为有下面两点。
1、公司规划的核心产品要完全重做,有第一版,但要废弃,新技术开始第二版。
2、当前公司移动端做此技术的只有我一个。我将会从产品的从无到有,全流程开发参与。
这份工作是一个坑还是一个提升的机会呢?我初次知道的时候,是懵逼的,一时间翻转不过来思想和逻辑。
因为曾经一直作为小弟,在某技术带头人的领导和指导下去研究去开发,或者是在成熟产品基础上写代码。完全从零开始负责一个项目,对我来说是个极大的挑战。
怎么突然间就要从小弟晋升到大佬?
所以,当时的决定就是,我要去找个新的工作,或者逼自己一把,将公司的产品接起来?
四、如何改变
我的决定是接起来!
第一,我已经工作三年,虽然研究过angularjs,并且从零开始做过移动端项目,但是却也离不开领导的指点和指导,所以并不算真正的把控到产品的每个角落。不过已经有了一些技术的积累。这次从零开始,完全是对自己更高层次的考验。
第二,移动端技术日新月异,新的技术对我有着极大的吸引,那就是在IONIC2和React上进行选型。
当时并未想要利用RN来做,因为还有一种想要基于全平台都可用的想法,所以就是用Angular2或者React做,如果要打包成不同平台,则需要更改少许代码便可。
公司当时的前端团队(web)端已经着手开始利用react进行网页开发,于是从公司技术栈的统一性考虑,我开始研究用react来写移动端项目。
项目的web端初期进行的异常顺利,web端后台管理系统在任务管理的帮助下大家都完成的很快,但是移动端只有我在慢慢的从入门到开发,两个月的时间,只作出了很粗糙的部分功能页面。
web端5人团队其实是从地方分公司来京支持,两个月时间完成后端管理系统的开发之后,便离开了京城。
于是公司北京前端团队再度剩下我一个,由于web端其实来支持做的只是后台管理,那么用户端的功能其实一点儿也没做,而我又是做的用户端的移动App,所以他们的两个月,也只是让我对业务融会贯通而已。
不过所幸,业务的清晰明了,让我不至于对产品做不下去,还是有许多的新的研究和实现要在接下来的研发工作中进行。
五、突破局限
项目忽然间着急了。
作为创业公司,虽然公司有分公司,但是主分公司人加起来也是不到50人,公司也来京不久,项目要在10月份上线。
时间紧,任务忽然就重了,我初接触react并且不是用RN来写移动端,中间每个项目的功能可能都要去调研一下各种组件的优劣,甚至有的功能组件实现不了,还需要自己在js端写组件自行实现。
面对各式各样的需求自己重新开发新组件也大大的拖慢了开发节奏,按照我一个人这样的节奏来,在10月铁定是上不了线的。
于是,执着于追寻前端技术统一性的建议得到了商讨,虽然说技术选型统一,以后再前端方面的工作可以给予很好的支持,人人可改Web或者移动端项目,但现在显然短期内很难做到。
所以,为了快速的将产品做出,商讨之后,还利用我已经具备的IONIC知识进行产品的技术变更。
IONIC1正是我给上个公司做App用的技术,因为从零开始过成熟些(卖得出去)的产品,所以对于技术变更也没太大的抵触,并且IONIC提供了各式各样的组件,可以简化我用react开发拼命寻找各种各样组件的流程(当时react移动端框架是用的还不成熟的antdesign-mobile,现在看依旧是有些不成熟,蚂蚁技术人似乎只是为了开发一个框架而开发,更多地关注还是在antdesignweb版)
如果公司的技术是用的IONIC1,那么我来到公司紧锣密鼓的用已经熟练掌握的技术做产品,其实成长性还是不够的,那么就遇到了一个问题,用IONIC1还是IONIC2。
也就是说,核心用Angularjs还是用Angular2.
公司很快意识到我一个移动端研发工程师的捉襟见肘之难,于是从分公司请来另一位hybrid研发工程师,想要在8-10这短短的两个多月的时间将项目作出。
新来的工程师初步接触hybrid开发的时候,便已经赶上了Angular2的打好年头,所以他的技术方向肯定是IONIC2和Angular2。
于是我觉得技术提升的时候来了,遂和领导商定,要用IONIC2,这样还可以对Angular2做一番研究。
其实IONIC项目已经尽量避免你去知道Angular,不过加上之前对angularjs的了解和对Angular2文档的浏览,让我觉得从IONIC1到IONIC2并不是一个错误的决定。
并且我发现之前研究两个月的react其实和Angular2大同小异,更别说听小道消息Angular2正是Google看到了React的实现重写了Angular1,所以两者都是ES6语法,从js端来说,除了jsx之外,几乎是一套东西。
如此我用2代技术开发也能很快进入到角色,更别说新来的帮手是一名IONIC2的研发工程师。
我和帮手在一周的互相讨论和研究中,我将项目中所涉及到的业务点和可能是技术难点的地方和他做了深入的探讨。并且一周时间,他也将IONIC2技术大体的给我过了一遍,万事俱备,只欠开搞!
开搞!
项目异常的顺利,顺利到让人有些难以想象,IONIC2在开发效率上要比IONIC1有了一个质的提升,并且在性能上要较上一代IONIC1有了巨大的提升,虽然还比不上纯RN项目,但是在手机端和Pad端逐渐配置走高的时代,这些都不是问题。
这个项目从零到有,从技术选型到技术变更,中间我都经历了一小段时间的阵痛期,但是阵痛期过去,便是坦途。
由于业务吃透,技术确定,双方都十分熟悉,两个月的时间,项目也终于是成功上线,并且得到了不错的反馈。公司和项目组都是松了一口气,别的不说,我自己也感觉整体得到了提升,整个人感觉不一样了。
支持的同事离开公司,项目后期的工作我来维护和开发,虽然再度移动端只剩下一人的情况下,但做维护来说也是游刃有余。更别说,项目还只是涉及到iPad端的实现,单项目维护对我来说不是问题,毕竟在上个公司就负责并且维护过一个手机端项目。
起初,对于没有利用React来做项目或者用RN来做项目还会感觉有些遗憾,毕竟React概念大火特火,前端工程师不搞这个,貌似都不好意思说自己是前端。
不过等到项目完成,加上两个月对于React的了解和作出一版粗糙产品涉及到的痛苦学习和实现流程,让我并没有感觉到太多失落。
并且我也明白了一个私人认为技术人看待问题的一个该有的态度:
技术并不重要,重要的是用技术去得到最优的实现。
在当时情况下,毫无疑问,作出一个合格线以上的产品才是第一需求。
六、一家之言
其实前端技术说到底还是js,不管是React、Angular、TypeScript还是CoffeeScript亦或者VUE,其实都是js。
在我理解下,为什么会有这些新兴的感觉和技术,就是因为前端的不确定性和开放性,以及大公司的竞争性。
毫无疑问,当Angularjs刚出道的时候,Facebook不可能没红过眼,总不能总让Google抢占技术领域,自己也要发声才是,于是推出了react。
有了ionic,于是FB又推出了RN,没办法,就是刚。
从技术上我给予更优秀的实现来达到笼络技术人的目的。
任何一种新技术的诞生和发展,都是因为有的人觉得现今的某种技术不酷,或者不欣赏,想要自己搞事情搞出来的。
前端更是如此。
所以,对于前端工程师来讲,最本质要掌握的还是老三样的发展,HTML、CSS、JS。其他的前端技术,其实都是在js的基础上老瓶装新旧而已,掌握了最根本的东西,不管技术如何变,始终都不会失去核心竞争力。
从我职业生涯到这个项目完毕,我几乎是从桌面前端技术到移动端技术都接触了一遍。
WinForm、WPF、jsp、React、Angular,私下里对比React和Angular的时候我还研究了一下Vue,还真有吾等宅男阅片一千便啥都一样的感觉。
从离职到新公司的发展,是在我期待之内,更别说接下来的一年,也就是从去年十月到如今十月,公司除了维护项目之外,也有野心在手机端占领业务领域,我相继又是参与到了Web端业务前端的React项目和手机端RN为主导的手机端项目的开发之中。
一年时间,已然是一个前端老鸟,虽然美感并不好,但是根据原型和产品设计做出来的东西也并不太差,React和RN也归纳成为了我技术栈的一部分,我私下里也在看一些Node相关的知识,为公司的项目写过几个nodejs的小工具,前端技术算是开花结果。
前端技术,没有优劣,不管是JQuery时代还是如今的React时代,其实对于当时的技术发展来说,都是有推动作用,都有优秀的东西在其中。就算现如今JQuery看起来并不流行,但是我们在生活中还是时常用到。
这些框架的设计给予了前端一种新的活力,大家更欣赏的还是日新月异的新型设计和实现所代表的思想变更,只有在前端思潮变更中,抓住前端变更的本质,并且保持对前端的热情和持续学习的能力,那么,你永远都不会过时。
时至如今,再回到开头的话题。
两年前路在何方,到如今也不用多说,道路自然已经确定,没有回避做技术的现实,没有做程序员死路一条的悲观观念,要有的,只是对自我的提升的一种追求。
路在何方?提升自己,丰富人生,便是一条永远适用的康庄大道。
七、答案
那么这两年我明白了什么?
新公司一年多,感触颇深,但是却没有了两年前的浮躁和不沉稳,也懂得活在当下,学在当下,并且计划在当下的重要,迷茫和彷徨或许是必经的职场之路的一个阶段,但是迷茫和彷徨之后,是为了让我们变得更好。
如果你变得更差了?或许是迷茫之后的选择并不正确,或许你依旧停留在不思进取的氛围中,请逃避这样的自己,积极的面对新的改变,或许才能真正的找到人生的真谛。
以上一家之言,是对两年前那篇文章的解读,如果能帮到您,感激不尽,如果有什么有失偏驳和欠妥的地方,还请指出,探讨交流您的看法。
总之,放弃傲慢和偏见、摒弃浮躁和恍惚、坚定信念和追求,奋斗吧!