几个月前,我从一名互联网公司安卓前端开发,转为了一名外企后台服务器端基础架构开发。当时还写了一篇面经,给有类似想法的小伙伴做参考。
面经写起来容易,总之噼里啪啦一番操作,楼主就顺利的拿到了心仪的offer,有点类似王子和公主终于在一起的故事。然而结过婚的人都知道,结婚只是一切的开始,入职也同样如此。如今,几个月过去了,虽然积累的经验还不足以让我分享些什么金玉良言,但在这个特殊的转型时期,记录一下现在的感受,对那些想要考虑转型又有所顾虑的朋友来说,也许更有价值。
希望有一天,当手上的工作已经得心应手游刃有余,在转过头来看看今天的这篇记录,还能想起当时步履维艰,苦苦经营的自己吧。
老员工说一周就能做完的任务,我已经做了快两个月...
第一次参加关于任务需求的讨论会议,好像已经是上辈子的事情...犹记得当时负责带我上手Loadtest工作的老员工(实际上是一位比我年轻的刚毕业两年多的校友...),大致听了下要做的事情之后,很淡定的对对方同事说,这个应该一周就能出报告吧。然后就是我折腾的开始...到今天,已经快两个月了,说好的三份报告,我只倒腾出来一份!内心的焦灼可想而知...
如果是前端页面,一个需求要么能做,只是要花些时间编写详细的界面动效或者数据逻辑代码,总归在一个可控的范围内;要么手机根本就不支持,提需求的人也没什么好说,再能折腾,手机不支持的东西你写出来又有何用呢?
然而进入了后端的世界,我才发现事情原来还可以这么复杂...看起来简单地一个任务,给一个服务做压力测试,似乎只需要把服务程序运行起来,再对着它发一大堆请求折腾折腾,最后收集一下返回数据的时间等信息,就好了呗?
谁能想到,就是把服务运行起来这一步,就耗散了我全部的运气...
前端的页面,就算没有数据,稍微mock几个需要的api,界面总归是可以画起来的吧。而当我开始尝试运行服务器,这才发现,原来这个服务器背后,还有各种周边服务器需要搭建和同步...
一个简单地创建用户,创建信用卡,下单,购买的过程,就要调用到周围负责管理用户信息的服务,负责交易流程的服务,以及各种数据库用于交易过程中信息的保存检索,更别说还有Memcache,Redis这些,用于加速数据存储的缓存服务。然而,没有人能清楚地告诉你,这个交易流程需要什么服务,这所有的联系,都需要在出错之后,从密密麻麻的日志中,寻找出蛛丝马迹,判断到底是哪一步出了问题...
于是,我之后的工作基本就是,每天看Log日志,判断到底是缺了啥少了啥,然后再去看这玩意儿在我的环境中是压根儿就没有呢,还是版本和我当前需要的对不上呢,还是它的url没有正确的设置给当前服务。最简单的,就是一切都好好地在哪里了,只是需要你给他们牵线搭桥就好了。最惨的,就是这玩意儿压根儿就还没有呢,于是又要先把另一个服务搭起来,过程还是一样,看日志,找原因,解决问题,再看还有没有ERROR...
在搭了大约3-4个周边的服务之后,我的服务终于运行起来了哈哈!真觉得自己是个天才!
然而我高兴地太早了!
开始运行脚本才发现,原来服务运行起来,并不代表一切就正常了啊!稍微多加几个用户同时发难,服务器就崩的不要不要的,各种ERROR满天飞,给我气的胸口疼。于是又开始出现之前从没见过的其他问题,什么数据库有脏数据,新的数据插不进去啊,什么交易设置了熔断机制,多来几个就撑不住要散架了呀...然而刚接触代码的我,哪里知道这里还有这么多花花肠子哎~于是又开始在我们的压测环境数据库里满世界找脏数据擦擦干净,又是一番折腾,哎!好像终于能抗住一会儿了!
然而,还没等我高兴一会儿呢,发现数据量再上去一会儿,又开始出现花式报错了...哎,下班前看到这些问题,心情真是差成了渣渣...
啥时候能做完呢,每天早上醒来,我都在想这个问题。努力啊!!!敏敏子!!
刚开始参加远程会议,感觉自己在参加英语听力测试 ...
虽然由于我刚入职,还没有什么需要和米国同事交流的内容,所以在远程会议上还没有发言的需求,但第一次参加全英文的会议,还是有那么一丢丢紧张和期待。
结果呢,自然是如我所料,大部分都没有太听懂!特别是印度同事开始发言的时候,有一种开启了另一种语言的错觉...
随后,我果断的接受了老板的邀请,参加了公司提供的的英语培训课程,每周至少有一次外教课,像三岁小朋友一样,和米国友人聊天...最喜欢的是一位住在佛罗里达附近的老奶奶,和蔼可亲。有一次当她要求我用“如果我能改变这世界上的一件事情,我希望...”造句,我想了想回答“I would stop my dad from smoking~”老奶奶特别理解的笑了,然后告诉我,她的父亲94岁去世,去世前还在医院的房间里抽烟呢,嗯,于是这个可爱的奶奶成了我最喜欢的口语老师~
也许真的是Practice makes perfect,听多了吧,再参加英文会议,感觉能听懂的东西在慢慢增加,也许这和自己对整个工作内容的理解在慢慢增加也有关系?不过,每当印度同事开始讲话,我还是觉得自己的英语还是渣渣...
每次向同事提问,都要如同准备签证一样预备材料...
一开始遇到自己无法解决问题,吭哧吭哧跑去问老员工小朋友咋整,他听完我的问题,免不了反问我十个问题:这个问题是怎么触发的呢,那xx的日志你看过没有,里面有没有什么错误呢,具体是哪一步的请求出错了呢,这个端口还活着吗,等等等等...让没有准备直接带着问题就去了的我哑口无言,只得再吭哧吭哧回来找齐这十个问题的答案,再去找他,而人往往已经忙别的去了...
于是,吸取了经验教训的我,一直懒得多多记笔记的我,开始按照Mars一开始就提醒我的那样,把错误的log都仔仔细细的记录下来。相比于前端的界面错误一目了然,后端的错误追查过程如上文所说,总是环环相扣,等你找到最终出错的服务,前面的服务到底怎么顺藤摸瓜摸过来的,很可能就已经全忘记了。等到下次类似错误出现,没有记录的话,靠记忆去回想当时的解决思路,真真是一件异常痛苦的事情,也可能是我老了。记笔记的习惯我还没练好,更多时候只顾着想解决问题,忘记了记录。不过,为了不再吃类似的亏,这个习惯,我是如论如何都要开始养成了。
呐,这就是我这几个月做后端开发的感想了...虽然我感觉自己菜成了渣,但是Mars同学还是对我trouble shooting的能力给予了肯定。相比于之前呆呆的写代码,整天解决问题的日子真是心塞,特别是服务又挂了,提需求的同事又来邮件询问进度的时候,每次绞尽脑汁用英文遣词造句,告诉他不好意思大哥,我还没搞完呢的时候,是我最艰难的时刻了...
每次解决问题都特别开心,觉得自己真是天才,然后发现下一个问题又蹦了出来,于是只能耐着性子再接再厉...
啊,我想我还是有进步吧!等我把这次任务搞完,也要写一篇trouble shooting的经验分享才是~
Schönes Wochenende!
我的2019周更计划已完成:25/52
[********............]
本文分享自 Pair Programming 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!