三载岁月的小小归纳与2024计划
原本打算每年写一篇年终总结,但是由于 22 年和 23 年比较忙,导致这两年的年终总结一直拖延没有写。现在已经到了2024年3月份,再补应该是补不完了。正好发现自己毕业快3年了,于是决定对过去3年做一个简单的总结,也算是平了过去 2 年没写年终总结的烂账😜。回顾这三年,整体算是比较满意,快乐欢笑常有,也经历了一些挫折,也有一些积累和成长。
历程
我在 21 年 6 月大学毕业后就正式入职字节,做的工作是跟实习时候一样的质量保障工作,也就是测开岗位。22 年年初由于业务的合作团队整体发生了调整,也我产生了换换工作内容的念头,于是加入了同部门的另一个团队,从上海来到北京;一年之后的23年5月,经过了将近2年对测开的工作,我感觉自己可能更想做研发相关的工作,于是从测开转岗到了后端开发,工作地也从北京迁移到了重庆。下面是我在这几个阶段的心路历程回顾。
第一段(21年7月~22年初)
初生牛犊好 happy
如果不算实习时间的话,我是21年6月毕业后正式加入字节,刚开始可谓是意气风发,热情高涨,感觉公司各方面对员工的关怀都很好(免费三餐、房补、下午茶、经常性的礼品抽奖等等),小组同事素质高,对我也非常好,工作也非常有热情。后来因为文档总结能力和做事负责逐步被 mentor 认可,加上当时缺少正式员工,所以我正式入职不到2月就开始带外包同学独立负责一块业务的质量保障工作,持续了大概 5 个月,这个过程确实让自己有很多收获和成长,首先是体验了一把半管理者的快感,给其他人分配任务,自己想着怎么提高小组的整体效率,所以当时写了不少经验文档,包括业务理解、合格的 QA 应该在项目开发的各个阶段做什么样的事等;当时真的感觉体会到了owner 意识是什么样的。
内心小躁动
后面对接的研发团队有较大调整,业务完全交接给一个新研发团队,研发团队变动的同时让我内心开始有些躁动。在过去的5个月中,我慢慢地从初入职场的兴奋、充满新鲜劲、动力满满和干劲十足,逐步过渡到稳定,最终到回归平静。再次思考自己的职业前景和规划,发现虽然这半年收获了很多,但是其实技术上没有太大提升,更多是手工业务测试、推动开发上线流程、推动 QA 内部流程规范,如果继续这样带外包测需求,业务测试外包工作分配会分散我绝大部分精力,成长空间比较小,甚至有可能丧失个人竞争力。我觉得刚毕业重要的是个人硬实力的提升和沉淀,带团队这种还是等后面到一定阶段后再考虑吧。想好自己的规划是提升编码能力后,所以我趁着研发团队的调整,跟leader说了能不能换个团队的想法,想找一个能独立成长、磨炼个人能力、能有所沉淀的的团队。
我刚开始想去原来实习时所在的团队,沟通到一半,恰好之前实习时沟通的比较多的一个团队的大佬发现我想换换工作内容,所以邀请我去他的团队,因为之前实习时跟大佬沟通交流的较多,知道他非常稳重可靠且能力强悍,于是就去了北京投靠大佬的团队。随后迈入了第二阶段。
第二阶段(22年初~23年5月)
勇敢牛牛满怀希望
新团队的工作内容确实比之前的团队更符合我的预期,大佬根据我的意愿让我能独自沉淀,不需要带外包,可以专心做自己的工作。同时,这个团队也更多是自动化、开发测试平台等代码相关的工作,业务手工测试少了很多。加入新团队后,我用比较快的速度去完成了一些自动化项目的开发,也确实赢得了大佬的认可。
大佬给我提供了很多机会,分享了很多他过去的经历,包括踩过的坑。还帮助我改正了很多应届生的毛病,比如提问要分场合等。后来也给了我一个非常好的绩效,还经常请我们吃饭。我能感受出来大佬是真心想培养我,而我也一度认为大佬或许就是我追随的最后一个老板,以后肯定是一直跟着大佬干活。
蜜月期一过,未来又显茫茫
不出意外的话,就要出意外了,在干了大概七八个月之后。我发现现在所做的工作,可能也不是我完全想要的那种,我觉得现在的工作内容有些被动,基本上的流程是开发同学开发一个需求,然后就测一个需求,修复一个bug,就验证一个bug,我们给业务开发的自动化监控,效果也比较有限。
开发的测试平台或者自动化专项,只是一些简单的接口调用,测试平台也就是把现成的 open api 的包装一下,没有多大的挑战性,对性能的要求也不是很高,主打一个能用就行。
我也尝试问过自己,是不是自己干的时间还太短了,还没有真正感受到测开的乐趣和挑战性,所以又尝试继续感受了几个月。观察周围工作经验比我多 1~5 年的同事,我知道他们都非常优秀,但是感觉他们的工作内容其实跟我现在差不多,没有太大区别,更多是多了一些做事上的稳重老练,以及沟通和流程推动上的自如,亦或是一个半管理者。我想,如果不出意外的话,等我的工作年限到他们那个阶段,顶多就是到他们现在的这个状态,甚至可能还不如他们,因为他们真的很优秀。但是我感觉他们现在的工作内容不是我想要的。
还有一个不想待在测开岗的原因
我不太能掌控回归的范围,总是有点担心测试不完备导致线上问题,所以bug修复后经常会回归比较多的内容,这就导致工作量加大了,可能干不完,但是如果不回归这么多内容,自己又担心出线上问题,所以总是非常纠结。
在测开岗学习技术还是转到研发岗学习技术?
如果我想提升技术水平,与其在测开岗位学习,不如到后端岗位学习,这样能学习到更多的技术知识,也会接触到更丰富的技术应用场景,身边也会有更多专业的技术同事,这样肯定能带来更快的成长。
还有一点是看到大部分测开职位的薪资,很少有比较高的,我担心我可能会在几年后遇到工资瓶颈,涨不上去了。
在当前岗位有点丧失了工作热情的感觉,所以我想趁着年轻,再按照自己的想法闯一闯,转换一下工作岗位,就算不合适还有机会能再改回来,于是决心转岗到一个研发团队学习技术,看看能不能重新激发我的工作热情。
历经数月面试折磨,再换方向
经过几个月艰辛且痛苦的面试,终于获得了一个内部二线城市的转岗机会和一个外部创业公司的offer。由于担心创业公司倒闭,我选择了内部二线城市的转岗。
吃干抹净一去了之,心中无愧?
我自己也觉得才来一年就转岗,感觉非常对不起对当前团队大佬。大佬给我倾斜了非常多资源,对我寄予厚望,但是我拿了资源涨了等级就开溜,心里非常过意不去。等我拿到offer后,首次跟大佬说自己想走的意图时,大佬是非常震惊的,emo 了好几天。为了让自己心里更过意的去一些,我精心定制了一份纪念品(不贵但是真诚)给大佬。
大佬后来跟我深入沟通了我们俩各自的想法,他非常尊重我的选择,甚至还动用自己的人脉资源,帮我内推到外部大公司面试(一般外部公司看到这种想换岗的简历是无法通过简历筛选的,尤其是大公司)。一面挂了,大佬又极力为我的能力担保,给我争取到了二面的机会,最终我成功通过了面试,只是对方还是顾虑测开背景(可能有别的顾虑,姑且相信是这个原因),所以还是没有发 offer。
第三阶段(23年5月~至今)
勇敢牛牛再作战
23年5月份,来到某二线城市的后端团队。刚转到后端新团队还是有一些忐忑和拘谨的,最大的顾虑是担心自己不能胜任工作。然后发现一个问题是这边的节奏太快,大部分都是倒排需求,工作压力较大。目前是如果觉得压力较大,我会在下一轮排期时请一天假,减少一天的工作量。我用这天时间来做一个工作量的缓冲,另外周末也需要抽空完成一些工作内容。现在已经差不多已经适应了这边的节奏和合作习惯。当然这离不开团队所有同事的真诚无私的帮助。
新团队的工作内容目前看来还是比较符合我的预期的。虽然开发流程上存在一些槽点,压力也很大,但是只从工作内容上来看,还是比较符合预期的,可以提升技术,也不用纠结功能回归的范围。
工作节奏
团队的产品每两周进行一次版本迭代,我们第一周开发跟版需求,第二周开发非跟版需求。当前版本的第二周周四参加下个版本的需求细评会,评审下个双周的需求,周五之前对一两个需求的改动点和工作量进行初步估算,并估一个排期,下周开始按估的这个时间来进行下个版本跟版需求的开发,跟版周周五联调跟版需求,周五晚上需要提测,下周一QA开始测试。
跟版周我们每人会安排4天的开发时间(周一到周四,周五自测联调),没有预留上线、跟进线上问题和用户反馈、跟前端/客户端讨论交互确定接口定义的时间,刨去这些工作,实际开发时间可能只有2天甚至更短,一般都不到2天。如果需要进行多个需求的联调,那么联调时可能比较难受,因为每个需求的联调方都在催你,而且因为没有自测时间,经常会因为一些重大bug阻塞联调。
非跟版周通常每人安排1天的开发时间,这周一般是QA在测试跟版需求,我们周一解决跟版周提测需求的 bug,周二进行开发,周三自测联调,周四参加下个版本的需求细评会,周四晚上和周五上午调研需求和给需求评审工作量,跟版周的周一上线上个版本的跟版需求。
导致的一些问题
团队成员通常都是忙得团团转,没时间去关注他人的工作进度或考虑怎么样能做到更好。能按时完成任务就不错了。
由于时间紧任务重,团队成员往往只能关注与自己直接相关的工作,忽略其他事务,尽可能减少对他人工作的介入。
晚上下班后需要在家义务加班1小时左右,周末一般也得抽出一天来加班,否则工作量无法完成,这就使得工作外的业余时间变少,更少时间做自己的事。
基本上没有技术评审,就算有技术评审,大家也都因为工作太多,很少人有多余精力来参加评审和讨论,这使得技术水平的提升和工作质量的提高受到一定程度的制约。
这种工作模式有一些优势:
团队成员致力于完成各自的任务,这减少了工作中的人际关系问题,从而减少矛盾和冲突,让团队氛围更加和谐融洽。
感想收获
工作相关
1、在一个岗位沉淀2年,会有较多的收获。观察我的同事,感觉他们都比我稳重成熟,感觉他们对自己的业务系统非常熟悉,跟合作团队合作得非常密切,做的项目也比较多,持续拿到了很多成果。而我纵观我入职之后的2年,基本上都是主动或者被动半年换一次部门,总是在刚对业务比较了解之后就换了方向,缺少在这个方向的持续沉淀,在这个方向上做的项目也不多,也基本上很少持久维护一个项目,这样就很难发现问题,拿到收益。在一个方向干半年、干一年和干2年其实感觉和收获都会不一样,有些事持续的时间不长,就不会有解决各种各样的问题的机会,时间久了,你对这个系统了解的越深入,你参与解决的问题也会越核心,而不是简单的显而易见的小问题。所以我下阶段目标里有个目标就是:在当前后端岗位至少沉淀2年。
2、在慢慢的熟悉开发节奏的过程中,学会了一些提高效率的技巧。处于哪个阶段就该关注这个阶段的事,不过多考虑后面阶段的事情,早期我总是偏向于在最开始就把实现方案的每个细节都确定清楚,再定义接口和开始编码,但是慢慢发现经常在确定一些小细节上花费较多时间,导致早期花费了较多时间,挤占了后面的时间。其实定义接口时可以不用太关注实现方案,只要接口定义没问题就行,不然会在接口定时时花费太多时间,可以到具体实现时再考虑实现方案,那时对整个项目的节奏和细节都更加了解,能更加快速的做出方案选择。
3、提问要分场合问,虽然大部分情况下提问能加深你的思考,促进问题的剖析透彻性,但是如果你的提问关系到对方对你们整个团队的印象,那么提问需要慎重。开会的时候或者平时交谈的时候,当发现自己和对方可能属于不用阵营,可能有阵营意识的时候,注意谨言慎行,因为你的言行举止可能会被当做你们团队的想法,影响你们在对方心中的专业性,比如在多个业务方的会议上,就得注意不提自己方的低级问题,不向对方提低级问题,前者会被同个小组觉得心不在同个战线,心不齐,故意拆台,情商低;后者会让对方小组觉得我们不够专业,己方小组负责人也会略微觉得有点丢脸,这种问题最后私下问或者不涉及阵营的场合问。
4、学习项目是自己找的,成长机会是自己创造的。他人给的机会只是次要的,自己产生的机会是主要的。自己主动学习,往往没有压力,可以自己控制学习的深度和投入时间长度。如果等待被分配到满意的项目,这样的机会少,而且完成时间有限制,压力大,很难有深度学习的时间和精力。机会都是自己创造给自己的,自己主动学习,而不是等待机会的产生,这样每天都有学习的方向,经常会有可以输出的内容。
5、对于有些很明显自己不想干的事情,既然苦着脸是干,哼着小曲也是干,为什么不高高兴兴的干,苦着脸只会增加自己的悲伤和烦恼,并不会让你更快完成这件事,更不会给分配给任务你的人带去任何悲伤,所以下回遇到不想做但又非做不可的活,尝试笑着去做,这样或许就不那么痛苦了。
6、身处不同的处境和岗位,需要处理的问题就会有所不同,为了处理这些问题,就会表现出不同的能力,比如执行者只需要做好自己的事,管理者则需要统筹全局,所以当我们看到某些文章说某某管理者相较于一个普通基层工作者有多高的管理能力时,这其实没有可比性,因为除了少部分管理天才,基本上的管理者只是在处理他这个岗位应该处理的事情,换一个基层工作者去同样的岗位,也能在不久后达到同样游刃有余的状态。
7、当对自己的前景刚到比较迷茫时,不妨看看跟自己在同样道路,但是工作经验更长一些的同事的状态,他们现在的状态和工作内容,大概率就是你未来的状态和工作内容,这样的状态和工作内容是你想要的吗,通过这种方式,或许可以让你知道你这个岗位继续待下去是否达到自己的预期。
8、后端开发其实并没有想象中那么高深和复杂,拆解到某个具体模块其实大部分都比较简单,绝大部分场景都不需要特别复杂的架构设计,大部分程序员的短时间不可替代性来自于他对自己所负责模块的熟悉程度超过其他人。
求职相关
1、如果想了解某公司的情况,可以尝试从脉脉上查找其前员工(注意需要是前员工),咨询他们这个公司你想了解的问题,包括规章制度、文化、加班情况、甚至财务情况(是否有不久后倒闭的可能),咨询完发个大红包感谢一下,相比较进入一个坑公司后整天闷闷不乐,这点钱提前避开是完全值得的。
2、不管是转岗,还是求职,亦或是离职,面对 HR 或者 面试官都要表现得不卑不亢,提前做好准备,准备好需要问哪些问题,这样不会漏问,双方是一个横向对等关系,没有哪一方地位更低,面试是双向沟通的过程,大胆提出自己的疑问和回答即可。杨涛老师有个技巧,我觉得非常有用,那就是在面试时保持说话大声。
3、通过面试查缺补漏。面试准备过程中,学习到的东西是非常多的,毕业2年多学到的技术知识(只是技术知识)都不如准备面试这几个月来的多,除了说明压力确实能转成动力外,还说明一点,如果我们感觉学习遇到瓶颈,不知道该继续学习什么东西时,不防开始修改下简历,甚至进行几场面试,这样就知道自己下一步需要学习什么东西了。
生活相关
1、多联络联络朋友,逢年过节送个小礼物或者问候一下,或者找个理由送个小礼物,刷刷存在感,再不济朋友圈点点赞也行。否则时间长了,关系慢慢就淡了,下次再想发起话题就难了。试想几年后,如果发现自己除了现在的同事,基本上没有可以联系的同学和朋友了,该有多凄凉,倘若碰到伤心事,就真该“无处话凄凉”了。
2、别让人生只有工作和学习,人生中大部分还是生活,学习和工作是为了更好、更悠哉悠哉的生活,适时就得做一些生活上的活动,比如假日的出游、与家人/对象的陪伴、体验各种新奇的娱乐活动、做各种自己以前想做的事,更不能把生活看成工作和学习的负担,为了工作和学习摒弃生活,这样只会让自己过得非常压抑,如果只有这两样,人生该有多无趣啊,人生的意义在哪呢?只有生活好了,工作和学习才会有热情,才会有更多灵感和动力去持续学习,人生是场马拉松,善于生活,才能跑完这场马拉松。
3、随着年龄的增加和阅历的增加,慢慢更关注个人生活、家人的健康,亲情的重要性。
4、不要提前焦虑,不放大焦虑、不放大困难,放平心态,减少内耗,失败了后果也大不到哪去。
5、使用“课题分离”这一方法,分清楚某件事是自己的事还是他人的事,不为他人的事担忧;拥有被讨厌的勇气,不为偶尔说错的话做错的事过渡担忧,尽可能不让自己被别人讨厌是自己的事,但是别人是否讨厌自己是别人的事,被别人讨厌又何妨呢?尽可能让自己的心灵获得自由。
6、经验丰富的前辈也未必什么都懂,他们也需要搜索和请教他人,所以不要害怕自己的问题太低级被别人嘲笑,大家都是差不多的,所以对自己要自信,不需要自卑。
7、每个阶段都能遇到自己的贵人,真的非常幸运。真的是感谢上苍的眷顾,让我能安稳度过每个阶段。
问题
做测开和开发的区别和分别感受
测开的工作目标和工作内容
- 测开的工作目标是提升或者稳定产品质量(线上稳定性),工作内容主要是需求测试、制定及维护开发上线流程规范、通过开发自动项目在提测前、上线前提前拦截问题,提前召回线上问题。
- 如果把项目的整个周期浅显分成三个阶段:产品提出需求、开发、测试上线,那么由于测开站在第三阶段,相对靠后,因此不少 QA 可能会感觉自己非常被动,认为自己只能被动选择,不能参与决策,从而感觉自己地位低于产品和研发。(其实现在倡导测试左移,就是把QA的介入阶段提前,提高QA在整个项目提出/开发/上线过程中的参与度和话语权)
- 需要支持需求测试的测开同学,开发的内容大部分都是自动化case,项目一般不复杂,逻辑也比较清晰,影响面小
- 一个测开同学往往对接多个业务,精力较为分散,虽然对整个大业务有个更加全貌的认识,但是对业务细节可能并不了解。一种说法是测开岗位更注重广度。
开发的工作目标和工作内容
- 开发的工作目标是实现产品提出的需求,提升产品的直接或间接收益。工作内容主要是制定方案和编码实现产品提出的需求以及维护线上产品,修复线上问题,其中涉及实现成本和收益的权衡,选择 ROI 更高的方案。
- 如果用三阶段来划分项目过程,开发同学处于项目的中期阶段,相对较为靠前,向前能跟产品讨价还价,向后能跟测试友好辩论,项目参与度相对较高,因此在外界看来话语权较高。
- 一个研发同学一般会有一个重点开发和维护的业务模块,偶尔维护下其他模块,除非主动去了解其他模块,否则不知道其他模块迭代成什么样了。一种说法是开发岗位更注重深度。
感受
初级开发跟测开的技能差异可能较低,但是随着工作年限的增加,两个职能岗位逐渐朝着各自的方向发展,慢慢就可能产生更大的差异。开发岗慢慢在实现需求的基础上会追求代码的美观性、优雅性、可读性和可维护性,以及架构设计的合理性;测开继续围绕质量保障,逐渐更关注从流程规范和日常巡检中发现bug,比如引入故障注入和混沌工程等手段,而不是关注某些具体需求的上线质量。
从代码掌握熟练度上来说,研发确实是比测开更熟练一些的,我刚从测开转到开发后的前1个月,看项目代码比较慢,阅读代码的效率比较低。但是,随着自己写的代码越来越多,看的代码也越来越多,我阅读代码的效率高了不少,能够较快分辨出哪些东西不需要过多关注,理清一个小模块的主要作用和功能。
不管开发还是测试,都是非常看重对工作内容的思考,而非仅仅关注工作内容本身(开发/测试了多少个需求),当然妥善完成工作内容是基础,这可能需要我们掌握和学习相关的技术和工具。剩下如果要继续提升,可能就是对工作内容的思考,比如想想怎么提升效率,怎么能做的更好,之前是否选错了方案等。不管是哪个岗位,我们大部分时间其实都是在完成工作内容上,所以我们选择哪个岗位可能取决于我们对哪个工作内容更有兴趣和动力。我接触过的同事中,无论是开发岗位还是测试岗位,都有很多优秀的同事案例。
关于选择的正确性讨论,选择后会后悔吗
在自己选择的道路上行走过程中,我们可能会发现实际的状况跟自己预想的不一样,有差距,此时我们可能会怀疑自己当时的选择是否正确,从而产生一种后悔的情绪。
但是其实不管自己当前的状态如何,这个选择至少在当时的情况来看最佳的选择。而我们大部分情况下只能尽可能选择局部最优解,人生漫长且充满变数,基本没有可能做出全局最优解,因此做决定时不用太在意这个选择对此后人生的影响,一个决定无法决定你的一生。
测开岗位是否感觉自己的工作内容没有价值,不受重视
实际上测开岗位和开发岗位都差不多,研发大部分开发的功能其实都没什么用户使用,测开开发的自动化项目可能使用人数也不多,其实都是主打一个能用就行。
转岗后真的获得我想要的了吗
目前看来是获得了大部分想要的。首先是没有遗憾,不然可能总是会有一个疙瘩的感觉。
没有了原来该回归多大功能范围的纠结,即使偶尔会有技术方案的纠结,但是这个可以跟产品和同事沟通讨论得出结论。
有更多机会关注某个模块的具体实现,从而为实现需求和理解代码学习和接触更多的技术知识,也有更多机会独立思考实现方案。
虽然目前高强度的动作节奏,可能会产生自己是一台代码机器的感觉,是一个码农而不是开发工程师,但是会努力让自己多一些工程师的思考。
不害怕转岗后因为失去大佬的支持而混的更差吗
这个问题我之前确实考虑了好几次,都说选择大于努力,万一自己选择错了,放弃了现有大佬资源和靠山,后面混的更差了怎么办,这个问题其实是无解的,谁都不知道未来是怎么样的,我还是更想按照自己当前的想法冲一冲,不给自己留下遗憾。
AI 越来越智能,测开和开发哪个岗位先被取代
虽然现在 AI 确实很智能,也非常火热,但是以我对该行业皮毛的认识,无法做出 AI 先取代哪个岗位的判断,目前看测开同学和研发同学都在借助 AI 的能力来提高自己和团队的工作效率,并尝试使用 AI 在业务上取得收益。
2024展望
原本打算使用 OKR 那套洋洋洒洒整一套的,但是感觉写了自己也完成不了,索性就简单一点,把想做的列一下:
1、继续在当前后端岗位学习和沉淀个一两年。
2、把吴军博士的《浪潮之巅》和《数学之美》看完,阅读完《自私的基因》《心流》《掌控习惯》并记录笔记。
3、现在周末一般很晚睡,导致周末基本都是下午起床,不太规律,以后尽量周五周六晚上尽量在2点之前睡觉
4、尝试线下交友,锻炼跟异性沟通能力,为找对象做准备。
5、重新拾起夜跑的习惯(争取每周跑2次),由于找工作压力大,新部门节奏快,时间紧张,新所以很长一段时间没有夜跑,同时吃辣条等垃圾食品来缓解压力,所以体重有所增加。
6、抽空梳理业务:来到开发团队后,发现自己之前引以为傲的业务梳理文档积累能力好像基本没有用武之地,一方面是个人工作压力太大,基本没时间梳理业务,另一个方面是大家工作太忙,你梳理了业务大家也没时间看。但是如果有时间的话,还是得尽可能做一些梳理梳理业务逻辑的工作,因为梳理业务并不是为了让别人看,而是为了让自己对业务有更深的认识。
7、项目做完后做一些小结:这个月的年度绩效沟通时,leader 跟我说可以尝试在项目做完之后做复盘总结,看下是否有更优解法或者值得改进的方面,尽量在 2024 年尝试对开发完的项目做一些总结。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2022-03-17 zsh与bash的切换