亚马逊四年:非科班出身如何从SDE II晋升为SA II的蜕变之路
本文作者将分享其在亚马逊 (Amazon) 四年间的职业旅程,从一名非计算机科学 (CS) 专业背景的工程师,如何在Fire TV (FireTV) 团队中从最初的挣扎求存,逐步成长为团队的“顶梁柱”,并最终成功转型为解决方案架构师 (Solution Architect)。
职业背景与亚马逊 (Amazon) 之旅的起点
作者的职业生涯并非典型的计算机科班出身,其背景多元而曲折:
SDE II 的“地狱”开局与挣扎求存
作者在亚马逊 (Amazon) 的初期可谓举步维艰。与之前工作强度接近于零的环境相比,亚马逊 (Amazon) 的工作节奏带来了巨大的反差。作者在上一家公司工作不到两年,技术基础薄弱,却在面试四轮后获得了SDE II的职位,这在当时令作者感到意外。
作为一名非计算机科学 (CS) 出身、Java经验不足三年、正式工作经验不足两年、Android开发经验仅一年的新人,作者被直接安排到一个由平均工作五年以上、全是SDE II和SDE III级别“大牛”组成的团队。初期在技术方面,作者连单元测试 (Unit test) 都写不熟,敏捷 (Agile) 开发流程从未实践,面向对象设计 (OO Design) 仅限于理论,对多线程和操作系统等核心概念也知之甚少。
为了跟上团队节奏并生存下来,作者在第一年拼命学习:从头补习Android知识、深入学习多线程、代码设计 (Code Design) 和单元测试 (Unit test),并轮流担任敏捷教练 (Scrum Master),甚至硬着头皮与其他团队沟通需求和预期。每天工作到晚上8点半或9点才离开公司,回家后继续阅读团队代码到深夜。周末至少有一天加班,甚至在通勤路上也会拿出电脑实践想法。长达两年时间,作者连做梦都在思考如何优化代码。
然而,即使如此努力,技术上的差距并非一朝一夕能够弥补。作者独立完成的第一个中型功能,其代码审查 (CR) 报告长达五页,完全缺乏设计,经团队资深工程师 (senior) 两天审阅、70多条评论、13次修改后提交,仍出现多线程 (multithreading) 错误,最终不得不推倒重写。第二个功能也因设计问题多次返工。担任敏捷教练 (Scrum Master) 时也疲于应付,难以有效优化流程。
更甚者,由于自卑和脸皮薄,许多不懂的问题不敢及时提问,导致在第三年仍会发现一些本应初期就了解的工具却一无所知。然而,作者也庆幸遇到了一个“绝世好组”:团队发展迅速,高可见度 (high visibility),且长期缺人,从未有员工被淘汰 (pip)。当时的经理 (manager) 能力出众且耐心十足,愿意等待作者成长。团队中的资深工程师 (senior) 也提供了大量帮助和指导。
身心俱疲的“死局”与重获新生
高强度的工作和持续的压力导致作者在第一年结束后身体亮起了红灯:长期失眠、注意力不集中、记忆力下降、持续头痛,甚至出现情绪低落、对生活失去兴趣等症状,最终被医生诊断为重度焦虑。尽管医生建议治疗,但作者并未遵医嘱服药,而是通过参加冥想课程、获得老板批准的两个半月无薪假进行中印旅行 (印度和中国旅行) 以及家人朋友的支持,最终九死一生般地走了出来。
作者以过来人的身份强调:如果正在经历焦虑或抑郁状态,请务必寻求心理医生 (psychologist) 的帮助,并为自己争取长期病假。健康是革命的本钱,任何工作都不值得以牺牲健康为代价。
尽管经历了身心俱疲的阶段,作者对编程的热情并未消退。她始终认为编程是一种纯粹的逻辑游戏,没有模糊不清,只有逻辑严谨的推理和问题解决过程,这正是其魅力所在。两年后,随着旅行归来,焦虑症状逐渐缓解,记忆和思考能力也慢慢恢复。团队陆续有新人 (SDE I / SDE II) 加入,作者的经验得以发挥,通过带领新人获得了价值感。团队中一位能力超群的资深工程师 (senior) 小姐姐 (实际具备SDE III实力,后晋升) 的到来,成为作者职业生涯的真正转折点,让她从“负面典型”转变为“正面典型”。
SDE II 职场发展与突破
在亚马逊 (Amazon) 的第三年,作者迎来了事业上的真正突破。原团队因快速发展,需要剥离出一个新的子团队专注于与第三方对接的业务。作者答应加入新团队,因其对编程的热情有所减退,但又不想转管理岗,心态随遇而安。新团队的经理 (manager) 是一位能力出众的TPM (技术项目经理),他积极争取资源,帮助作者主导了一个对第三方有重要影响力的新功能开发项目。
主导大型项目:从技术概念到落地实施
这个为期一年的大型项目,作者倾尽全力:
尽管过程中状况不断,如其他团队的推诿、匪夷所思的错误 (bug)、质量保证 (QA) 测试环境搭建困难、依赖团队 (dependent group) 延迟、甚至原定客户的退出,以及设计和代码中的隐患。作者曾遇到工程师 (engineer) 在代码即将提交时质疑整个设计,甚至发现Google Android源代码中的错误 (bug) 需要协助修复等,作者仍保持了积极的心态,兵来将挡,水来土掩。经过大半年的努力,项目终于在功能上实现完整 (feature complete)。
目前,团队正在与第一个合作伙伴 (partner) 进行入职培训 (onboarding),开启了新一轮的解决方案架构师 (SA) 和业务发展 (BD) 教育工作。尽管作者即将转岗,但对这个即将上线的项目充满期待。
破局之后:晋升SDE III 大型项目管理经验
主导涉及多个团队的大型项目,需要平和的心态和充分的心理预期:
因此,作为项目负责人,必须沉着冷静,压得住场子,也能压住自己对不确定性的恐惧。
在项目需要其他团队协助时,以下几点至关重要:
终章感悟与职业转型
在即将离开亚马逊 (Amazon) 之际,作者对这个工作了四年的地方充满了不舍。从团队初建、首个产品尚未发布,到如今团队的产品运行在每一个Fire TV (FireTV) 设备上,并为第三方开放了接口,这里是作者除了大学之外停留时间最长、成长收获最大的地方。与一群聪明、勤奋、优秀且友善的人共事,尽管经历了“天堂地狱”般的磨砺和“脱胎换骨”的痛苦,但作者深知一切都值得。
在亚马逊 (Amazon) 的四年,作者自觉没有辜负当年“貌似给错了”的SDE II录用通知,没有辜负团队提供的良好平台,也没有辜负自己所有的泪水和拼搏。作为程序员的这段旅程即将画上句号,作者想给所有在路上的朋友们几句话:
作者最终选择平级转岗至解决方案架构师 (SA II) 岗位,预计于2020年10月正式开启职业新篇章。她认为,升职加薪都是浮云,人生最重要的是开心地做自己此刻想做的事。
