这一篇是工作第一年的心路历程吧,现在的我远比当初强大,但最近也确实碰到了挺多问题和挑战。再回过头看看那个懵懂的我,很庆幸当初的我没有在荒废人生。希望自己不忘初心,继续努力,困难终究会克服的,你会变得更加强大。
好像很久没有发月末汇报了,从 6 月份就没有了。工作也一年了,看了过去一年的日报,周报,说说想法吧,也想请教些问题。
2018/9/17 来公司,以一个全栈工程师的工作,我很兴奋。我从大二就想说往全栈工程师发展,觉得会写前端和后端(这里的后端就是到能和数据库交互而已),能写一个网页好屌。工作又找到对口的,很爽。但是在这工作的一年里,这个想法开始慢慢动摇了,我真的想做全栈工程师吗?
从头开始吧。
刚来公司学 vue,帮修改 xx 后台 UI,xxUI,差不多用了小半个月。简单,因为有点底子,所以很容易上手。10 月中旬,刚好来了一个 xx 的前后端代码分离的任务,让我对前后端分离有了点概念,也是我第一次接触后端代码,虽然还没有碰到数据库。因为这个分离任务比较快完成,紧接着就来了一个 FAQ 管理后台,前后端独立开发。这个任务看起来像是我想的全栈的工作了,前后端一个人开发,后端与数据库交互。我很努力地完成好这个任务,这也是我第一次调用别人的 http 接口来实现功能,虽然中间卡得也是有点久。FAQ 在当时看起来,我是挺满意的,在没有分辨率适配,在没有 UI 支持,在不知道什么是事务,在不知道哪里该判断 error……的情况下。总之,在磕磕碰碰下,完成了第一个前后端独立开发的任务。感觉就是爽,选了一个对的工作。这项工作做完之后,到了 11 月份,疯狂前端开发月。社保小 demo,单点登入系统,标注工具,数据传输平台,xx 前端协助开发,交叉反复,全都在写前端。其中,我最看重的无非就是标注工具,一个算得上是没有人写过的,没有代码借鉴的工具吧。我也用最快的速度去把它完成,结果我还是满意的,就单前端而言。并且,我也认为这个标注工具,完全可以和市面上开源的或没有开源的标注工具抗衡。虽标注工具没有写后端,但这是第二次有自我认可的地方,至少写了一个更全面的系统。同时,这也是第一次出现怀疑自我的时候,每天来就是在改 UI,改前端,基本上都是重复的东西,会问自己烦不烦。不过,我安慰我自己,刚工作,多练练,而且这几个小东西也算是我在牵头负责。过没几天,自己消化了。说牵头负责,因为我是想在一个小团队里可以当负责人的这么一个角色,所以在这几个小项目中,我尝试去主导或者说是去计划。
前三个月,算是对如何开发前后端,有了一个全面的了解。再来 12 月中旬,xx 平台,第一次正式接触 xx 相关代码,但是还没到封装接口,主要是了解 xx 三种类型的注册逻辑。xx 平台主要还是前端和后端对接口,开发前端。因为 xx 是我们公司主打产品,所以对 xx 相关代码,也是比较认真看,在这个时候对纯后端开发 xx 接口有了一点概念。也是在这个时候开始 xx 的代码。开发 xx 开放平台,大约到 1 月中旬。1 月中旬到 2 月底就是在开发 xx1 期,也算是很难忘的开发周期吧,第一次连续加班开发,也是在这段时间把后端学习给停了。这段开发周期其实不会觉得累,比之前疯狂前端开发周好多了。加班归加班,互联网公司哪个不加班,完成了安排的任务,就是很爽。代码好不好一回事,但是全身心投入去做了,就是值得肯定的。当然,当时的代码肯定是坨屎。当时的,开发的情境,主要是产品给需求,那我们就照做,也算是第一次完整地跟着一个产品开发产品。虽然蛋疼的是紧赶慢赶,赶出来了,最后说先不用,是有点难受,不过也没办法。那也 ok,至少有个喘息期,可以去沉淀下,哪里有问题,该补补的补一下。
进入三月,学习补充阶段。疯狂看代码,学习新东西,beego 源码,redis,grpc,xx-net,xx-tiny,kafka,zookeeper,interface 写法,设计模式,nginx……甚至,在三月中朋友圈发了一个技术的火箭图,奢望在工作一年内能都摸过或者用过一边,总得知道干什么吧。这个时候,我被很多技术所包围,让我觉得我作为一个全栈,什么都得学,都得懂。没错,但是此时的我,更像是无头苍蝇,抓到什么新技术,就去看。看到另一个新技术就又飞过去了。说有规划,更像是,想用我在学好多技术来伪装自己什么都不懂。现在看起来着实有些可笑。虽然可笑,但是在这个月确实给之后的工作或者学习也好,奠定了一些基础。尤其是在非框架的基础的编程和代码设计上有了不一样的想法。
到了四月,xx 平台,翻车项目,还好当时不是重点项目。xx 平台,也算是我第一次封装包出来写的代码。拿来练手设计模式,因为没有写单元测试的习惯,导致代码到最后没有跑起来,反而一堆 bug。不过,这结果我接受,总是要去尝试新的东西,不敢用,什么时候能进步。虽然,是这么说,不过当时挺沮丧,觉得自己挺差劲的,也有否定过自己。还好,后面重构的时候还算顺利,马上就调好了,不然可能结果会很糟糕。这个项目尝试,kafka,设计模式,虽然都是最基础的应用,但好歹我知道这两玩意怎么玩。我现在的状态就应该是尝试各种不同的东西,可能尝试的东西不是最优解,但是会成为我之后的解法之一。因此,再到后来的 xx 项目,我又尝试了 etcd,我也就学了几天,加上 xx 平台总结的 channel 的写法,我也不知道能不能用就干了。最后结果可还行,能跑起来的刚感觉真 tm 爽。xx 项目,也算是我真实带的一个小团队吧。不过最后,这个网页也不是 xx 想要的,变成只是要接口。
xx 这个项目算是我第一次直接对接客户,从到公司谈需求,对接接口,测试接口,一次很重要的经历。xx 虽然只是要一个接口,但是这个阶段让我对语音处理,语音识别有了更深的了解。但同时,这个阶段是让我再次思考我工作方向的一个转折点,应该说是同时 xx 二期带来的压力。我从开始把 xx 改成接口到现在吧,我经常说的一句话就是,这得问 xx 组,这要问某某能不能做。我两个多月很挣扎,和纠结,很郁闷,为什么最后决定能不能做的是在我这。能替公司拿下项目的,不是在我们这,而是在 xx 组那。怎么说,我很无力,想帮但是帮不上忙,或者说不知道怎么帮。感觉我们现在就像是包装礼物的礼盒,没有礼物就没有礼盒。在开发 xx 的时候,另一点,我基本上从开发完 xx1 期就没有写前端了。这期间来了几位前端写得很好的同事。一开始,某某 1 和某某 2,我只是觉得就是前端写得比较多,有自己体系的人,经验比我多。但是,某某 3 参与到 xx 开发后,我看他的前端代码,我突然觉得我写的是什么前端,我现在还算全栈开发工程师?更别提后端,某某 4 的基础,还够我补好久。一时间,觉得自己好弱。
让我崩溃,也不能说崩溃,把我打到谷底,同时让我反弹的时间点是在那次参访汤说科技那次,也就是有次外出我调休说我要想事情的那次。我去想我之后该做什么,要达到什么目的,我需要做什么。去汤说的那次,我看到了什么叫做系统架构,在之后看别的 xx 库的介绍的时候,也看到了系统架构。我想说的是,或许我现在不能通过提供说给到新的语音识别技术或者检验 xx 的新技术,但我能做的应该是提供一个稳定的高可用的系统架构,来将算法层面的东西以应用的形式提供形式给客户。怎么提供到更快的,更稳定,更安全的服务。这是我在参观完汤说时候的感想。我也不可能现在去做算法,但我可以从我现在出发,往架构方向走。我也看到了华丽的前端,让我想去钻前端 3D 引擎,看到了大数据分析,让我想去钻大数据分析,其他酷炫的技术,但我的时间就那么多。我很想做一名技术很超群的全栈工程师,但是其中的技术真的是我想涉猎,真的是我有时间涉猎的吗?很明显,不是的。在参访也好,xx 开发的这段期间也好。我认为真正吸引我的是架构师。我不想我的全栈就是写写前端,写写后端,当然这可能是我对全栈的狭义理解,但是我很明确的就是,这不是我想要的。我在明确方向之后,可以说是职涯方向,我也定了我之后要走的技术栈,及学习路线。
当然我现在依旧是一名全栈,我还是要兼顾前后端。前端的方面我目前能排的时间只能是看某某 3 他们的代码,只能做到符合业界规范,会熟练运用其中,有空去看原理。新技术,只能有用到再去看。对于之后我的技术栈如图:
现在是还没有排具体的学习,但是正在进行的是 kafka,我比较喜欢直接买课学,可以学得快点。但是,说实话,我之前看的东西,没有记住基础概念。导致,到现在有很多都忘了,这也是我之后学习上应该注意的。很明显的也是在技术分享的时候,技术点没有吃透。所以,在接下去的几周,我要重新巩固下 go 的基础,主要涉及底层原理。在很多的系统架构里,我看到缓存,分布式的必要性,这也是我之后的重点。数据库的种类很多,可以根据不同场景去选择不同的数据库,即使是在一个系统里。我目前想到的是这些。
如果说工作一年之后的最主要的感想,就是明确了之后的工作方向,以后朝架构师发展,我也喜欢全局思考。在明确方向之后,现在我投入在 xx 里的有很大一部分是在框架上。随着重构,上微服务,对之后各个微服务的选型,之后是否涉及到缓存,等等,都会成为我开发构想的一部分。我不知道我能不能坚持,但我觉得想要有所突破,只能这么做。说实话,我拿来衡量我的水平很简单的就是薪水(我现在不是在讨论薪水),我知道我以后的薪水肯定不会只这个价。其实,有一次你在我们房间聊的时候,说某某的薪水不止他现在的工作,我的薪水符合我现在的工作,那我其实感受不太好,当然这说明我做得还不够多,我接受。那我就是想问,从我现在的薪水涨到 12000,在你的眼里还需要做到什么?或者说,你觉得 12000 需要有什么样的能力,我现在是没有的?我希望我的能力是高过我现在的薪水,现在公司的形式我 ok,我主要还是提高我的能力,我的能力上去了,谁也不能说我。但是,如何达到那个水平,中间该怎么走,我不太懂。另外我有个担忧,就是你之前讲到的一点,生产环境的数据。我现在写的东西,基本上没有生产环境的数据。我担心这会影响之后的工作,假设要换工作的话,如果虽然会这些技术,但是没有生产环境 经验,是不是也会有影响?
一天时间很少,我已经尽量提高效率,我每天也不止学技术,我也在看书,练字。xx 说实话,真的真的跟孩子一样,在 xj 不好睡,那就不睡就搞呗。我巴不得 xx 什么事都掺一脚,但很明显我做不到。所以我希望可以得到一些建议,来加快之后学习技术能力也好,工作经验也好,来提高效率,更明确之后该走的路。
2019/09/15