毕业一年&工作十个月の阶段性总结

大学,大学

大三的抉择

2018 年春季,高三上学期,大概是四五月份时,青岛的天气逐渐燥热起来,当时课程逐渐变少,我也要考虑本科结束后的生涯规划了。在那两个月里,我在宿舍与图书馆刷完了恋恋有词,然后准备复习数学与计算机四大本的时候,因着种种原因,我决定放弃考研,踏往 IT 道路。于是在下学期我选修了 Java 课程,并以此作为一个开端。

在此之前的 2016-2017 年的大二、大三期间,我学过一些数据结构、数据库、操作系统、计算机网络与移动开发的选修课,当时似乎已经冥冥中预感到自己会走向软件开发的道路,便主动担任其中几门课的课代表——同样是划水,至少比专业课划得认真许多。2018 年的秋天相当萧瑟,我大概续了秋冬两个季度的头发,在宿舍里和舍友打通了饥荒、Starbound,又在 Minecraft 里经营了许多天的农场后,我意识到不能再这样下去了,于是喊上了隔壁宿舍的栋哥开始了图书馆之旅。我重新刷了一遍 Java 基础教程,与计算机网络的教材,然后开始了个人网站搭建之旅,希望能够以此切实地认识什么是计算机网络,什么是 Web 开发。没错,就在一年半以前,我连前后端的概念都搞不清楚。

初识 WEB

2019 年一月,我终于在自己买的 1核 2GB 1Mbps 配置的腾讯服务器上搭建了 wordpress 网站。在搭建的过程中,我逐渐从应用层面认识了计算机网络中的相关概念,并为此大受鼓舞,之后又研究了一番 Hexo 与 Gitbook,最终敲定了 Hexo 为网站模板,其中经历大都记录在这个博客上: 博客搭建小结:从 wordpress 到 Hexo + Gitbook

虽然这些都是很简单的玩具,但 WEB 开发就是能带来实打实的线性成就感(相比之下算法就是指数快乐或者指数痛苦)。受到到这段成功经历的激励,我又开始学习 git、docker 乃至 jenkins、gitlab-runner 的相关技术,现在看来后面的几个没必要投入太多精力,但是倒腾 Linux 却是不错的实践过程。我利用 git 的 hooks 实现了博客等的自动部署,直到现在使用了一点 vue 技术完善了笔记页面的导航、菜单目录界面,但当时已经基本成型了:

csnotes_osi

blog

毕业设计

时间很快就到了 2019 年夏季,面临毕业设计的选题时,我当时听说了 flutter 技术,通过对其性能与相关介绍文章、发展前景的考量,我断定这个技术未来有着相当的前景,于是决定用它做一个完整的 APP 设计,后端使用 PHP 实现登录、注册、用户信息获取、文章获取等接口,前端则用 fultter 实现用户界面:

flutter_listener

在这个毕设之后,我意识到不论是什么类型的软件开发,得学高性能细节调优才有前景,其他的大都是使用轮子的搬砖工而已。但在此之前,我还是需要进行企业级别的项目中进行实际工作,才能了解这个行业的真正运作模式。于是在 2019 年的夏末,由于正好在山东,我入职了 inspur 公司,正式成为社畜的一员。

社畜生涯

J2EE

2019 年 7 月,也就是去年夏天,我进入当前公司的一个 2B 软件开发部门,成为一名软件开发人员。其心路历程与这段相当相似(其实就是这个知乎问题让我想到总结一番的):

刚到公司,情况跟楼主差不多,先让看懂目前正在进行的J2EE 项目,看到那么庞大复杂的代码量,云里雾里,不知所措的感觉,但还是硬着头皮看下去了,很快领导让我独立负责一个小模块,公司采用的是纵向开发模式,每个开发者负责自己的模块:从上层html/js/jqurey,到中间层业务逻辑Spring/Struts/Ibatis代码,再到底层的SQL数据库。当听到领导让我独立负责模块时,瞬间感觉压力山大,对于那时的菜鸟的我来说太有挑战了。但也深知这样才能快速成长,压力也是一种动力,迎刃而上,承受住压力,收获 必将丰盛,于是我答应了。

作者:Gityuan 来源:知乎 链接:https://www.zhihu.com/question/41198536/answer/90560766

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

在入职培训一个月(校招生例常)、正式工作熟悉 spring mvc 一个月后,我开始了自己下半年的出差之旅,并在 2019 年的最后四个月力出差了两次,总计三个多月。东莞那边有我们的相关项目,作为一个研发人员出差差不多就是记录并解决现场问题,顺便增长实际的经验。在这个过程中,我和小组长强哥结下了不错的友谊,常在晚上加班结束回宾馆的路上找个排挡边吃边唠,导致我出差几个月重了十多斤 :( 不过这就是后话了。

去留

时间很快就到了 2020 年,在 19 年年底,我计划着过完年就离职,总结起来最核心的就三个点:工作内容与前景,待遇与潜力,城市与气候。当时的辞职计划也不无道理,论工作内容,过多的重复事务性劳动与业务范围可能会限制我的未来发展范围,而且由于是 toB 企业,相比于 toC 所使用的技术栈,在行业中也缺乏竞争力。论待遇,虽说不差,比起长三角珠三角也还有逊色。论城市,济南的拥堵、雾霾与政治的保守使我从未打算久居,哪怕生活成本较低、很多老济南人也很热情友善,但比起上海、南京、杭州、苏州等城市,对我而言还是缺少了些吸引力。

辞职的念头一旦萌生,待下去的每一天都会觉得不顺眼,这大概就是人性的弱点。尤其在和朋友说起这事后,更会加剧这种念头;但是我告诉自己,怎么说也得过完元旦再说,最好过完年,跟母亲亲口说好了,再计划下一步的事。时间过得很快,从去年年底,到一月过年,再到二月,日子也就这样一天天过去了,在这几个月的忍耐中,我逐渐学会了悦纳每一项义务的工作,敦促自己在每天上午就把当天的事做个七七八八,这样下午就可以轻松地收尾,并沉心思考一些东西,并做一些自我发展或者职业发展的准备。就这样,度过了几个月的煎熬,我竟品尝到了这样重复性中不平凡的一面——某种专精中的奥秘的折光。

人算不如天算,正当我重新考虑辞职的事时,疫情爆发了;加上母亲的反对,我虽然嘴上说着迟早都得辞职,最后还是接受了再干一段时间的现实。就这样又坚持了一个月,就在我调整好心态、逐渐平衡好工作与生活的节奏时,事情竟发生了转机——二级领导安排更换了新财年部门,把我从偏业务的部门调到了公共技术部,这个部门原来就十个人,现在加上我就九个人。原来在新员工转正答辩时,由于我表现与工作产出优秀,在十来个人中取得头筹,加上自己表达过想做技术的意向,便被安排到了这个更有挑战性的部门。

移动框架,微服务与 VUE

2020 年 3 月,我来到公共技术部,这个部门的工作便是为其他项目化的部门提供通用组件支持,包括 WEB 框架、移动框架、一些持续维护的功能模块,以及最新规划的物联网平台研发工作。在新的部门中,3 月基本就是用来熟悉 WEB 所使用的 BSP、BPM 等框架,并对需求进行了一些功能支持。

4 月开始,我不再做 WEB 框架的工作,而是集中精力维护移动框架,这对我而言还是新的领域。其中继承了 Framework7 开源组件,使用反射的方式调用“插件”中实现方法,这里的插件便是我们部门所实现的功能。我的工作便是集成三方插件,或者直接进行原生开发实现插件功能。

在进行移动开发中,其代码管理从原来部门使用的的 Firefly 工具改为公司购买的 Gitlab 服务器,java 配置管理使用了 maven & gradle 技术,为了加快开发效率、提升工作体验,我在四月初组装了一台 3900X 的台式机,配了个 28 寸显示器,便开始了充实的社畜工作&学习生活。

在移动开发一个月半后,就在这个月开始,我又参与了物联网平台的一个视频相关的功能开发,其后台使用 SpringCloud 框架提供服务,前台则使用 VUE 进行构建。这样的前后端分离的模式有助于训练组件化、解耦的思维,感受架构设计中的魅力。当然,微服务既有红利又有掣肘,对于传统开发人员来说,可能单项目的结构能更好地调试与维护,其中的利弊必须结合具体情况进行讨论。但不论如何,积极拥抱、学习新技术,算是我对自己持续的要求。

vue_vmanager

未来

这近一年来,我对一些项目化、从 WEB 到移动端的许多技术都有了粗浅的认识,其中 Java 算是用的最多的语言,其次是 js。所做的工作从 CURD 到不算很复杂的页面设计与实现,并做了几个还算完整的功能,从一些项目化的功能页面,到后来的比如 APP 自动更新功能(移动框架更新功能 + WEB 端 apk 维护与发布功能)。虽然积累了一些基本的开发能力,但离深入理解一门语言,或者有独立架构能力都很远,遇到问题还是主要靠搜索引擎,而不是清楚地、有思路地查考 API 文档或官方手册。至于进步,这一年来的确训练了我面对复杂项目与 DDL 压力时的抗压学习能力,很大程度上治疗了我看似追求完美实际上是浪费时间的某些“谋定而后动”的完美主义倾向。当然,提前规划与宏观思考是必须要有的,只是 read the f**king code 有时候更为重要,甚至是最重要的一环。

未来的几个月应该还是会以边学边用微服务框架、VUE 为主,未来发展侧重于偏后端的工程师,但在现阶段还可以保持一定的全栈发展。未来可以学一些 Golang + react 技术,目前看来这是新兴大厂普遍采用的技术栈,自有其道理。另外值得关注的就是 fushsia os + flutter 。

Anyway, stay hungry, stay foolish.