二狗的胡思乱想
这篇文章只是我自己一些胡乱荒唐的吐槽,记录下来,希望多年以后再看到这里时能有不同的想法吧。
2013年9月,二狗在OUC入学,从此从一个只会用电脑打游戏的傻小子,开始逐步变成一个靠电脑维生的“秃头”码农。我的大学生涯,可以算是相当的普通又珍贵了。当然,普通是和别人相比,珍贵是我自己的回忆。最近总是十分怀念ouc,怀念青岛,猛然想起了舍友的一句话:人混的不好的时候就会想家。确实,这几个月以来确实“混”的不是很开心。
大学学习成绩也就那样,普通的课普普通通,专业课还凑合,实验课甚至当了几次“大腿”。大一大二贪玩,与奖学金无缘。与奖学金最接近的一次,几门专业课都考得很好,可惜有一门慕课的通识课上,在网上刷完视频之后就被我遗忘了。导致几次线下的课都没去,遂挂科,与奖学金无缘。算是不小的遗憾吧。大学刚开学时某老师曾说过:这四年怎么过都可以,尽量少一点遗憾,但你总会有遗憾。四年转眼就过去了,确实是这样。没到手的奖学金,没去看过一场海鸥剧社的演出,在青岛四年却没有痛痛快快的海鲜啤酒宿醉过瘾。。。
概括起来大概就这样,普通的成绩,略好的专业课,亲如兄弟又毕业后各奔东西不常联系的基友,一直陪在我身边的女朋友。普通的大学生活,唯一有点不一样的是大一上父亲检查出有重病,好在母亲从事保险行业多年,家里各项保险还算齐全,经济上倒也没有变得多么拮据。看过许许多多这样的故事,一旦发生像这样的事,故事里的主人公总是会奋斗起来,改变人生轨迹云云。可我没有这样,也许我太过懒散,胸无大志,只想平平凡凡的过一辈子吧
目前在这家公司工作了两年零两个月了。这是校招时我拿到的第一份offer,自那之后也没考虑别的,觉得这家公司还不错,也就来了。2016年10月份拿到offer,2017年2月底至4月底在扬州实习(培训),2017年7月3日正式开工。还在学校时Java和C#都有选修,当时找工作的时候也期望能找到一份Java开发的工作。毕竟工资高嘛。在扬州实习培训时也确实是Java的内容更多一点。不过最后还是做了c#。
17年2月底至4月底的实习培训其实说来挺好的。虽然9 12 6的作息真的很反人类,但好在毕竟只有两个月。实习培训什么真正的项目都不让你做,做的只有纯粹的培训与培训项目,也算是从学生到码农的第一步吧。除了公司内部的视频教程以及相关文档外,每两周还会有公司的前辈来做trainer,负责解答各类问题。对我而言印象最深与收获最大的是,代码规范。学生时代的所谓规范,不过是某个方法的花括号换行不换号,并且基于学校实验课的代码量,很难看出来这类规范的意义是什么。说来也是最近几个月维护老代码的折磨,让我越发觉得规范真的是太重要的一件事了。
17年7月3日起的两个月,先是一个月的考核项目,然后根据考核结果以及个人意愿分配前后端。后是在某18禁电影 开头的行业所在的项目组写UT。这个组几乎与公司是同龄的,公司与澳门那边合作多年了,所以项目代码也是“祖传”的了,这个暂且不提。这个组的老大人挺好的,只是面向有点凶,哈哈。老大的意思是让我通过写UT来熟悉熟悉代码,但这种陈年老code,对当时的我来说实在太过挑战,连几个方法的ut这样的task,都拖了一两周才完成。边做边纠结,我是不是不是干程序员的料啊。
纠结迷茫中等到了试用期通过的邮件,也等到了我的第一个真正的项目。大概是17年9月左右,进入了我个人而言成长最快的项目,东亚某国房地产行业的信息化应用。其实就是把我们软件开发测试trac那一套流程搬入到房地产的业务中。与天朝不同,买方市场的该国人民是有退房退押金的权利的,所以客户那边也希望通过这个来提升成交率云云。刚进组时还私下里和某大佬R聊过,是不是我做的实在太差了,短短两个月就换了三个项目组。没想到这么一问反而给大佬R留下了一个还挺好的印象。
这个项目就暂且称之为A。A组开发人员算我在内只有四人,前后端的tech leader各一人,我和另外一个刚进公司的小伙伴分别去做后端,前端(iOS)一些具体的实现。二狗子是做后端的,当时是从这些东西一点点学起来的。.net core 2.0,Abp,Dapper,Mysql 5.70,PHP。对你没有看错,PHP!。当时更上一层老大的意思是,trac那一套东西没必要我们自己开发,用开源框架改装一下,可以减少一些基础的工作。而这个选中的目标就是Mantis。Mantis本身还是不错的,各位小伙伴如果需要一份看起来清爽,用起来不错的trac系统,可以试试这个。不能说是更上一层老大不够英明吧,前期确实是省了我们不少工作量,但后期维护或者拓展,真的是哈哈,怎么一个可怕了得。最后交付最终版的时候,我们的API几乎没有再使用mantis提供的了。
第一期表现不错,客户那边也十分满意,虽然中途很辛苦,各种加班,但很多时候是在补自己知识或技能上的不足,所以也没觉得什么。后端的Tech leader:Y哥对我也很好,给了我很多技术上帮助。Y哥这个人技术上很牛逼,对人也很亲切,平时也挺搞笑的,这么一个领导,谁不喜欢呢?哈哈。可惜好景不长,一期做完没多久,Y哥离职了,我身上的任务一下子多了起来。虽然R大佬来接替Y哥,但毕竟对项目不是很熟悉,所以有时一些逻辑还是会来问我,这一段时间还是有些小得意的。事实证明,人一得意,就容易忘形。没多久R大佬就在某次code reviewer中发现了我写的一些不规范,或是很低级的错误,严肃的说了我几句。R大佬平时也总是笑呵呵的,所以我猜他当时应该是真的生气了。好在二狗子在技术方面是这样,技术上有问题你随便骂我,只要告诉我对的是什么样,或者怎么改就行。所以别的也没多想,加班加点修改好,也比较顺利的通过了下次的code reviewer。
从二期开始,项目组逐渐变大了,最多的时候安卓4人,iOS3人,backend4人同时开发。对于公司这种类似于外包的形式来说,不能说是一个小的项目组了。用到的技术也逐渐多了起来,Jenkins,quartz / hangfire ,redis,js-report,google的语音识别,图像识别,云打印。AWS的服务器,SNS,S3等等。以至于后来R大佬常说我们这个项目,很适合新人来做,麻雀虽小,五脏俱全。
到二期快结束,项目组刚成立时的四人只剩下我和前端的小伙伴了。两位大佬都已经离职,我和前端小伙伴也在等着第一年的调薪。但有一些风声是说第一年的调薪很少很少。前端小伙伴先被约谈,1.5k,他当即申请了辞职,公司也同意了。没过多久,领导也找我谈话,一样也是1.5k。虽然有一些同期的小伙伴调薪在0.5k-1k,但人总要和更好的比嘛,并且1.5k说实话也确实不高。我心里挺难过的。一方面是觉得自从Y哥走后好长一段时间内,这个项目的后端都是我自己在维护,开发虽然有R大佬帮忙,我也是开发的主力。另一方面和我一起进公司的舍友,半年左右时跳槽已经拿到了1.2w的薪水,相比之下我涨了工资仍然不能突破万元大关,觉得多少有点不能接受,于是决定辞职。可能是平时表现还不错,也可能是我再一走短时间内也不好找人继续维护这个项目了,领导帮忙争取到了更多的调薪,辞职的事也就不了了之了。
在那之后继续维护了一段时间的,然后被调整进了某银联相关的项目。托项目组的福,还去银联的信息总中心出过差。在某个房间还可以看到一个巨大的屏幕,就小时候在电视上看的那种屏幕,看数字都是几百亿几百亿的跳,具体是啥玩意儿咱不知道,也没敢问。这个组除了更新一下技术栈,node.js+mongoDB以外,感受最深的反而是git的使用相关的内容。一个正式的,具有一定规模的项目组,是怎么使用git的各种功能的。除了基础的branch,tag这些,相较之前的项目组还多了一个要求。每次只有一个提交,对应的解决办法是git rebase等命令,好处是这样git的提交记录就是完整的一条线,方便之后的复盘或是版本控制。另外银联的食堂是真的好,羡慕,又便宜又好吃。
再之后就是一个银联的试水小样+某房地产项目的三期+房地产项目的新的小组,没什么特别的,就不谈了。这些结束后就又回到了让我脑壳痛到现在的某18禁电影 开头的行业所在的项目组。二狗之前是这样的想法,不在乎具体的编程语言,项目需要哪个,我就学哪个,因为我不想做某种语言的码农,想做能解决问题的码农。在这个想法指导下,觉得去做老的项目也没什么不好的,毕竟能运行十年的东西,多少有点奥妙在里面。这几个月干下来,感受却和想法不太一样。要说写的精妙的地方吧,不能说没有。但是它和十年各种良莠不齐的代码,五花八门的实现,百花缭乱的coding style比起来,也许算是微不足道吧。结结实实的体验了一把边写代码边骂娘的感觉。也同时提醒自己,规范这种东西,注释的运用,真的是聚沙成塔的。小一点的项目看不出来,一旦数量上去了,就会发生质量的变化。尤其是当你明明只改了一行,结果提交时由于之前的版本没有控制规范,满屏幕的change的时候。尤其是当你参考之前的一大段逻辑,一路追踪,发现这个是被弃用根本不会有人调用的时候。尤其是你因为这些东西加了一个又一个班,晚上打车发票拖很久然后找财务报销他还要你提供加班证明的时候。真的想骂娘。妈的,说出来心里舒服多了。
刚刚回到这个18禁大组(下称G)时,熟悉熟悉代码。感觉自己这两年还是有点收获的,从UT写一周,到快速了解逻辑,多少涨了点见识。熟悉之后就开始了G下面第一个项目c的工作。c是为G的其他项目提供一个高层的配置管理。二狗之前一直在做后端开发,因为想尝试一下前端的内容,并开阔一下眼界,申请之后就承包下了这个功能的前后台的所有task。噩梦的开始。后端不必说了,简单的api,很快就完成了。十年老项目的前端,可怕的噩梦。据二狗子了解,前端的变化与技术栈是十分迅速的,十年前的老技术+上面提到的各种代码魔鬼,真的折磨的够呛。Silverlight您听说过嘛,如果听过,您一定是位前辈了。这个东西是微软搞出来为了对抗Flash的,而对手Flash已经快被干掉了。类WPF的代码,缺不完全遵循MVVM的方式,找一个事件的逻辑分部的到处都是。
c做了三周左右的时间,没来及测试,就被分配去了m项目。m项目是这样,由于该18禁项目所在地区政府政策要求,他们的一部分操作必须变为数字化,政府政策落地是有规定日期的。所以我们必须赶在那之前完成。好在内容不是很多,又是在iPad这样的移动端开发,对二狗来说是个全新的体验,所以接到通知时还挺兴奋的。技术方面,虽然我之前完全没做过移动端的开发,但组内成员有一位公司工作多年的大佬H,所以也不是很担心。哎,谁知道第一个给客户内部review的版本开发时间只有三周,这三周H大佬休!了!一!周!的!年!假!即使在他不休假的日子里,也是每天到点就下班,而二狗子只能加班到十点赶工。如果您之前看过我的博文,应该知道这件事。不提了不提了,苦逼的日子提升最快,人觉得累的时候是在上坡,只能这样安慰自己吧。
再来说说技术,也许客户或者大领导真的英明吧,我是看不懂决定用Xamarin.Forms开发的决定。甚至有点憎恨Visual Studio for Mac。VS这么强大的东西,在mac上简直弱不禁风。三天两头的崩溃无响应,做前端开发不能及时的看到样式的变化,只能每次重新build,run...(有个HotReload的插件,可以看,但是会引发更频繁的崩溃)。在这样的折磨下,四个工作周拿到了六天的调休,四周总共只有八天啊乡亲们。
在m组时我心态还没有现在这么差,觉得学习新东西付出努力是应该的。但回报呢,国内真的有人用Xamarin嘛,有嘛?我靠这个找工作嘛?抱歉,回家啃老我也不打算写Xamarin了。我用这么多的时间,换了一个没卵用的前端经验嘛?多少有一点经验吧,知道大致是怎么回事,有一点视野的提升吧,但是主流的东西呢,抱歉我还是完全没做过。简单来说,投入产出比实在太低。
好不容易熬到了m的release,因为有了一丢丢Xamarin开发的经验,我就被分配到了a组去帮忙。刚从一个熬夜加班准备release的项目出来,又进去了另一个熬夜加班准备release的项目。好在在a组也有一些收获,a组的前端leader F大佬人很和善,给了我很多帮助,十分感谢。
c,m,a三个组并没有结束,临时有prod的改动,我又被分配去g组改代码,说好的小改动,越改约复杂。g改的快完成时,c终于要上线了。对于c,m,g的其他小伙伴来说,他们只要做好自己的事,我呢?三个组分给我的任务都等着我做,三个组分开上线我都得陪着,嗨呀我就是一块砖,哪里需要哪里搬,我可搬你大爷的去吧。
其实写到这里我也不知道我再说些什么了,不过好在只是想记录一下自己的胡思乱想,不是写给别人看的,也就无所谓了。现在很迷茫,钱少,活多,离家远。学的技术没卵用,工作两年多,这么下去怎么办呢。是C#不差,但为啥我不直接去做流行的java,java就不好么?为啥总要搞非主流呢?但目标没变,我还是想做架构师,想变强,加油吧。
--2019.9.27
二狗子