软件工程师进阶导航

978-7-115-67907-9
作者: 盖尔盖伊·奥罗斯(Gergely Orosz)
译者: 荣耀
编辑: 佘洁

图书目录:

详情

这是一本由资深软件工程师撰写的职业发展指南,融合了作者丰富的行业经验和指导智慧。全书分为六部分,系统介绍开发者职业关键环节。本书从职业路径、绩效评估、晋升策略等基础内容起步,为新手软件工程师指明方向;随后聚焦称职的软件开发者所需的核心能力,揭示高效完成任务与编程的独到秘诀。第三部分进入高级工程师层级,读者将学习软件工程、测试与架构设计等高级技能,为职业发展注人强劲动力。第四部分则转向技术负责人的角色,解析项目管理精髓、团队协作艺术及与利益相关者沟通之道,助力工程师向管理角色转型。第五部分描绘资深工程师与首席工程师的蓝图,探讨业务理解、软件工程创新与领导力培养,为工程师的终极职业目标提供指引。第六部分强调终身学习的重要性,并提供延伸阅读建议,鼓励工程师们不断追求卓越。 书中全面覆盖“软”“硬”技能,结构严谨、层次分明。无论你是刚踏人软件工程领域的新手,还是寻求职业突破的资深工程师,本书都是你的良师益友,可助你在职业生涯中不断攀登新高峰,成就辉煌的未来。

图书摘要

版权信息

书名:软件工程师进阶导航

ISBN:978-7-115-67907-9

本书由人民邮电出版社发行数字版。版权所有,侵权必究。

您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。

我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。

如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。


版  权

著    [荷]盖尔盖伊·奥罗斯(Gergely Orosz)

译    荣 耀

审  校 茹炳晟

责任编辑 责任编辑

人民邮电出版社出版发行  北京市丰台区成寿寺路11号

邮编 100164  电子邮件 315@ptpress.com.cn

网址 http://www.ptpress.com.cn

读者服务热线:(010)81055410

反盗版热线:(010)81055315

版 权 声 明

Simplified Chinese translation copyright ©2025 by Posts and Telecom Press

ALL RIGHTS RESERVED

The Software Engineer’s Guidebook, ISBN-13: 9789083381824

by Gergely Orosz

Copyright © 2023 by Gergely Orosz

本书中文简体版由作者Gergely Orosz授权人民邮电出版社出版。未经出版者书面许可,对本书的任何部分不得以任何方式或任何手段复制和传播。

版权所有,侵权必究。

内 容 提 要

这是一本由资深软件工程师撰写的职业发展指南,融合了作者丰富的行业经验和指导智慧。全书分为六部分,系统介绍开发者职业关键环节。本书从职业路径、绩效评估、晋升策略等基础内容起步,为新手软件工程师指明方向;随后聚焦称职的软件开发者所需的核心能力,揭示高效完成任务与编程的独到秘诀。第三部分进入高级工程师层级,读者将学习软件工程、测试与架构设计等高级技能,为职业发展注入强劲动力。第四部分则转向技术负责人的角色,解析项目管理精髓、团队协作艺术及与利益相关者沟通之道,助力工程师向管理角色转型。第五部分描绘资深工程师与首席工程师的蓝图,探讨业务理解、软件工程创新与领导力培养,为工程师的终极职业目标提供指引。第六部分强调终身学习的重要性,并提供延伸阅读建议,鼓励工程师们不断追求卓越。

书中全面覆盖“软”“硬”技能,结构严谨、层次分明。无论你是刚踏入软件工程领域的新手,还是寻求职业突破的资深工程师,本书都是你的良师益友,可助你在职业生涯中不断攀登新高峰,成就辉煌的未来。

与科技界保持同步

本书历时四年完成,在书中,我将尽量描述那些经得起时间考验的见解和建议。这意味着科技行业中多变的部分,如就业市场、创业公司的融资规模和新兴技术等,并不在本书的讨论范畴,尽管作为《务实工程师通讯》(The Pragmatic Engineer Newsletter)的作者,我每周都会撰写这些时事。

《务实工程师通讯》是在线科技出版物中的热门读物,也是Substack上排名第一的科技通讯。该通讯每周发布,提供对大型科技公司和初创公司的深入洞察,紧跟科技市场动态。对软件工程师、工程经理及其他科技行业从业者来说,该通讯具有很高的参考价值。

彭博社(Bloomberg)对其评价如下。

“盖尔盖伊·奥罗斯在《务实工程师通讯》中以行业内部人士的视角和真实见解谈论行业动态,内容涉猎广泛,从对大型科技公司现状及行业裁员等宏观议题的深入剖析,到提供如何为绩效评估做准备等实用指南,应有尽有。”

希望您能喜欢这本书,并希望本书和《务实工程师通讯》能为您了解科技行业动态带来助益。

推 荐 序

作为一名常年与Bug互道晚安、在代码里寻找人生真谛的老兵,我曾坚信职业发展的终极秘诀——把咖啡当水喝,把需求当恋人哄。直到完整审校完这本书,我才发现相比第一次写递归没有退出条件,这次错得更离谱。

这本书堪称软件工程师职业生涯的“瑞士军刀”。作者不仅系统拆解了技术人晋升背后的底层逻辑,还泄露了“天机”:为什么有人能一边“摸鱼”一边拿S级绩效?为什么有人设计的架构像北欧家具般简洁优雅,而你的代码却总像意大利面条般纠缠不清?书中那些看似反常识的洞察会让你忍不住惊呼:“这作者不会在我工位装了监控吧!”

最让我醍醐灌顶的是,这本书彻底击碎了技术人“埋头苦干,等伯乐赏识”的幻想。作者用无数案例证明:写好代码只是入门券,而理解人性、沟通协作才是通关密码。从如何向“不懂技术”的产品经理成功推销你的技术方案,到将团队冲突“调试”为高效协作的完美流程,这本书简直就是程序员的“社会化生存指南”。

作为本书的审校者,我尤为欣赏其“反鸡汤”的务实特质。全书没有空洞的口号,不喊“努力就能改变世界”的廉价激励,而是以工程师特有的严谨,提供了大量可立即上手的Checklist(清单)、沟通话术、真实案例复盘。这种将工程思维应用于职业发展的浪漫,就像坚持用《星际迷航》的角色名为变量命名一样,令人会心一笑又肃然起敬。

无论你是仍在纠结if-else括号缩进的“萌新”,还是苦于带领团队走出“技术债泥潭”的领导者,这本书都会成为你案头不可或缺的参考手册。它或许不会教你如何写一辈子代码,但一定能教会你如何用工程师的思维去设计一段“开挂”般的职业生涯——毕竟,我们最擅长的不就是为复杂系统设计优雅解吗?

最后温馨提示:阅读时请备好咖啡和笔记本,因为每翻几页,你就会忍不住想:“这个技巧明天晨会就能用!”“原来去年晋升失败是因为缺少这个关键动作!”——别问我怎么知道的,我审校时记下的笔记,比当年啃《编译原理》时还要多。

谨以此序,献给所有曾与生产环境Bug搏斗到凌晨,却依然坚信一行行代码能塑造未来的工程师们。愿你们的职业旅程,如精心设计的系统一般:高内聚、低耦合,无限扩展,永不宕机。

茹炳晟

腾讯Tech Lead

腾讯研究院特约研究员

中国计算机学会CCF TF研发效能SIG主席

译 者 序

在这个代码重构现实、算法定义秩序的时代,软件工程师不仅是软件系统的设计者,更是数字文明的塑形者。本书正是在这样的语境中脱颖而出的,这不是一本关于技术细节的手册,而是一部关于成长、认知与领导力的修行杰作。

置身于技术飞速演进的洪流之中,焦虑几乎成了工程师的职业底色:新框架层出不穷,技术代谢日益加速。真正能让工程师走得更远的,从来不是对技术热点的盲目追逐,而是构建可以跨越周期的能力体系、认知模型与思维方式。本书的核心价值正是在于帮助工程师理解这一点,并为之搭建系统性的达成路径。

作者以软件设计为轴,贯穿工程实践的全景视角。从代码可读性的美学原则,到分布式系统的容错设计;从测试驱动开发的工程纪律,到性能调优背后的算法思维,本书一再提醒我们:每一个技术决策都是对复杂系统规律的深度洞察与理性取舍。工程不仅是实践的艺术,更是思维的锤炼。

但本书并未止步于技术洞察,更关心“人”在技术世界中的成长路径。在科技巨头与初创企业交织的职场丛林中,晋升的本质早已不是单一维度的能力积累,而是一场关于组织行为学、叙事能力与战略选择的综合博弈。晋升被刻画为多维向量空间的最优化问题:技术能力、业务敏感度、影响力半径等,构成了“晋升函数”的关键变量,而持续反馈机制,则是这个优化问题的“梯度下降算法”。

这些洞见令人惊喜,因为它不仅解构了职场晋升机制,也让工程师重新理解了“成长”这一命题的本质:从专才到通才,从执行者到决策者,最终成为价值系统的建构者。

技术团队并非工具堆砌的产物,而是一个需要信息熵管理与激励机制精巧调配的复杂适应系统。作者关注的不只是团队机制的优化,更是在回答一个问题:在变化加剧、协作复杂的今天,我们如何打造一个既高效又有韧性的技术团队?在他看来,有效的冲突协调机制是保障团队健康运行的一个重要支撑。

更进一步,本书完成了从“方法论”到“心法”的跃迁。它揭示技术领导力的本质:能够在不确定中构建愿景,在增长与技术债务之间寻找动态平衡,在系统熵增之际创造秩序与价值。领导力不再是职位赋予的权力,而是系统思维、战略耐心与认知广度的综合体现。

作为译者,在翻译过程中,我深切感受到本书文字背后所流淌的力量:不仅是经验的总结,更是一种认知结构的传递;不仅是晋升“捷径”,更是一场关于“如何成为值得信赖之人”的精神锤炼。是的,卓越工程师的终极目标不是掌握多少酷炫技术,而是成为那种能在复杂中创造秩序、在混乱中构建信任的人。

因此,这本书不仅是一部通往职业高峰的登山图谱,更是一面映照心智成长的认知之镜。谨以此书献给所有正在编织数字未来的工程师。愿你们在阅读中获得方向感、洞察力与心灵的沉静;愿你们在复杂的系统构建中不忘寻找简单的本质;愿你们在每一次代码提交前都铭记“让世界运行更好”的初心。

我担任了大约10年的软件工程师,之后又做了5年管理工作。在入行的头几年里,我几乎没有得到任何专业指导。但我并未在意,以为只要努力工作,最终定能有所进步。

然而几年后,我的看法发生了变化。当时,我本以为自己已经准备好晋升高级工程师了,却未能如愿。不仅如此,当我向经理询问如何才能达到下一个职业层级时,他也给不出任何具体的反馈。正是在那时,我暗下决心,如果将来自己也成为经理,一定要为团队成员提供有用的成长建议。

后来在优步(Uber)工作期间,我成了一名工程经理。那时我已经是一名经验丰富的工程师了,但我仍然记得自己早先的承诺。因此,我竭尽全力支持团队成员提升专业技能,帮助他们获得应得的晋升,并且当我觉得同事尚不足以晋升到下一层级时,我会给予他们清晰、可行的反馈。

随着团队的壮大,我开始承担跨层级的汇报工作,能够深入指导团队成员的时间也越来越少。同时,我也发现自己给出的反馈中存在一些共性,于是便开始撰写博客文章,分享那些我反复强调的建议,比如如何写好文章、如何做好代码评审。这些文章受到了热烈欢迎,阅读并分享给同事的人比我预想的要多得多。这就是我开始撰写本书的契机。

在写作的第二年,我已经有了一份可备出版的草稿。然而,当时我还创办了《务实工程师通讯》。这份通讯主要关注当今技术市场动态,定期深入探讨知名国际公司的运营模式、软件工程趋势,以及偶尔对科技人士进行有趣的采访。撰写这份通讯让我意识到我的书稿中存在许多“空白”,因此在过去的两年里,我一直在逐章重写和打磨书稿内容。

经过4年的写作,我可以肯定地说,本书和《务实工程师通讯》是相辅相成的资源,尽管它们的内容几乎没有重叠。

撰写本书帮我开启了通讯写作之路,因为显然有很多时效性强的软件工程话题值得书写,但这些话题在一本比周报寿命更长的书中探讨就不太合适了。这份通讯也帮助我完善了本书,让我了解到许多有趣的趋势和新工具,感觉它们会存在10年或更久,比如AI编程工具、云端开发环境和开发者门户(DevPortal)。本书中提到的这些技术远不如通讯中那么详细。

在我的职业生涯及整个软件工程师职业生涯中,英语的重要性不言而喻。我出生并成长于匈牙利,我的第一份工作是在一家匈牙利科技公司,当时我们都说匈牙利语。但即便如此,为了调试代码问题,我也不得不阅读英文文章。编写代码时,我所使用的编程语言也是基于英语词汇的。英语是软件工程界的通用语言,所有大型国际科技公司都使用这种语言进行交流。正是英语让我得以移居荷兰,并在Uber工作(在工作中只使用英语进行交流),与来自几十个不同国家的开发者合作。掌握英语是成长为一名软件工程师,并有机会在国际化公司工作的必要条件,请务必在这方面投入时间。

最后,希望你能在书中发现对你的未来成长与发展有用的理念。

前  言

这是笔者希望在职业生涯初期就能读到的一本书,尤其是当笔者为了更优渥的薪酬加入一家大型科技公司时。因为笔者发现那里的工程文化与之前公司截然不同,而且在新环境中竟然鲜有指导。

本书的内容编排遵循软件工程师“典型”的职业发展路径,从初出茅庐的软件开发者开始,到成为榜样般的高级工程师、技术负责人,一直晋升至资深工程师、首席工程师乃至杰出工程师。本书凝结了笔者作为软件开发者的经验,以及指导不同阶段工程师的方法。

这些内容既包括随着职位的提升而愈发重要的“软”技能,也包括工作中的“硬”技能,比如有助于你职业成长的软件工程概念和方法。

职位名称及其期望因公司而异。企业的“层级”越高,对工程师的要求也越高。例如,“高级工程师”这一职位在谷歌(L5级别)和Meta(E5级别)等大公司的期望值显著高于低层级公司。如果你在一家高层级公司工作,阅读有关更高职位等级的章节可能会很有帮助,而不仅仅是关注你当前感兴趣的职位等级。

职位名称与层级虽有不同,但成为一名在个人、团队及组织层面皆具影响力的卓越工程师的原则却出奇一致。无论你处于职业生涯的哪个阶段,愿此书都能为你带来全新的视角与启发,助你成长为更加出色的工程师。

如何阅读这本书

本书由六部分组成,每部分均包含若干章节。

第一部分:开发者职业发展基础

第二部分:称职的软件开发者

第三部分:全面发展的高级工程师

第四部分:务实的技术负责人

第五部分:典范级资深工程师与首席工程师

第六部分:结语

第一部分与第六部分适用于所有工程师级别,从初级软件开发者到首席及以上级别的工程师均可受益。第二、三、四、五部分则依次覆盖各级别的工程师岗位,并将诸如“软件工程”“协作”“高效工作”等主题按章节归类整合。

这是一本可在你的职业生涯中反复翻阅的参考书。建议你重点关注自己感到棘手的主题,或你所追求的目标职业层级。但请铭记,不同公司之间的期望可能存在显著差异。

在本书中,笔者已将各主题及职级定义与大型科技公司和成长型公司的要求(期望)相匹配。不过,书中也深入探讨了对较低职业层级同样有用的主题,这些内容将在后续章节详细展开。例如,在第五部分第24章“可靠的软件系统”中,我们深入探讨了日志记录、监控与值班机制,但这些实践对资深工程师级别以下的人员同样有益,甚至往往必不可少!因此,在决定优先阅读哪些章节时,建议你既要根据主题,也要根据职业层级来参考目录。

现在,让我们开始阅读吧……

资源与支持

资源获取

本书提供如下资源:

本书思维导图和随书赠送的电子资源;

异步社区7天VIP会员。

要获得以上资源,扫描右侧二维码,根据指引领取。

提交错误信息

作者、译者和编辑尽最大努力来确保书中内容的准确性,但难免会存在疏漏。欢迎您将发现的问题反馈给我们,帮助我们提升图书的质量。

当您发现错误时,请登录异步社区(https://www.epubit.com),按书名搜索,进入本书页面,单击“发表勘误”,输入错误信息,单击“提交勘误”按钮即可(见下图)。本书的作者、译者和编辑会对您提交的错误进行审核,确认并接受后,您将获赠异步社区的100积分。积分可用于在异步社区兑换优惠券、样书或奖品。

与我们联系

我们的联系邮箱是contact@epubit.com.cn。

如果您对本书有任何疑问或建议,请您发邮件给我们,并请在邮件标题中注明本书书名,以便我们更高效地做出反馈。

如果您有兴趣出版图书、录制教学视频,或者参与图书翻译、技术审校等工作,可以发邮件给我们。

如果您所在的学校、培训机构或企业,想批量购买本书或异步社区出版的其他图书,也可以发邮件给我们。

如果您在网上发现有针对异步社区出品图书的各种形式的盗版行为,包括对图书全部或部分内容的非授权传播,请您将怀疑有侵权行为的链接通过邮件发送给我们。您的这一举动是对作者权益的保护,也是我们持续为您提供有价值的内容的动力之源。

关于异步社区和异步图书

“异步社区”(www.epubit.com)是由人民邮电出版社创办的IT专业图书社区,于2015年8月上线运营,致力于优质内容的出版和分享,为读者提供高品质的学习内容,为作译者提供专业的出版服务,实现作译者与读者在线交流互动,以及传统出版与数字出版的融合发展。

“异步图书”是异步社区策划出版的精品IT图书的品牌,依托于人民邮电出版社在计算机图书领域40余年的发展与积淀。异步图书面向IT行业以及各行业使用IT的用户。

在我的开发者职业生涯的前几年,我并未过多关注职业生涯规划。我曾天真地以为,只要辛勤耕耘,必有收获。在开发机构任职时,晋升机会寥寥,职业发展空间也相当有限,但当时的我并未因此感到失落,即便我的职位与级别在职业生涯初期始终原地踏步。

直到后来我有幸进入摩根大通和微软等知名企业,方才恍然大悟,原来,最勤奋或产出质量最高的人并非一定就能获得最丰厚的奖金与晋升机会。在Uber担任工程经理期间,我负责管理一个工程师团队,并渐渐意识到他们需要定期的绩效反馈,以及在职业发展上得到支持,比如帮助他们获得晋升。

本部分总结我对不同公司运作方式的观察,以及给团队中的工程师提供的职业发展建议。

早些时候,我并未充分意识到,作为开发者,你可以选择在不同类型的公司工作,从赫赫有名的大型科技公司,到初创公司,再到更为传统的行业、咨询公司乃至学术界。但至关重要的是,在不同类型的公司间转换,其难度可能会越来越大,对于那些在某个领域埋头苦干十年的人来说,这或许是一个始料未及的挑战。

另一件我错过的事情是掌控自己的职业生涯。直到成为管理者,我才意识到,当开发者主动掌控自己的职业发展道路时,会带来多大的不同,这也会极大地帮助他们的上司为他们争取权益。

我曾遇到的大多数工程师都认为,他们的经理会为他们打理好一切与职业相关的事务,而优异的绩效评估和晋升机会也会自然而然地降临。或许,在小公司或初创公司,这种情况确实有可能发生;但在大型科技公司,要想获得职业上的认可,就必须付出额外的努力。在大多数情况下,这并不需要增加太多额外工作,只是许多工程师并不知道该从何处着手。

本部分的观察结论、概念和方法适用于各个层级的工程师,从初级工程师到资深工程师及更高职位均可借鉴。

第1章 职业路径

在职业生涯的道路上,每个人的轨迹都是独一无二的。有些职业要素很容易明确,比如工作地点、职位头衔及总薪酬。然而,许多其他重要因素却难以量化,比如与同事共事的体验、职业发展的机会及工作与生活的平衡。

职业发展路径多样,且无法简单地界定何为“理想”的职业道路,因为这因人而异。你所能做的,就是找出哪条职业道路对你而言既有趣又可行。

人们踏入软件工程领域的途径也各不相同,有更为常见的途径,比如获得计算机科学相关专业的大学学位,也有自学成才的工程师和转行人士。我曾与一位同事共事,他在成为开发者之前,做了20年的化学工程师,之后才自学编程。

在本章中,我们将探讨与职业生涯相关的主题。

科技公司的类型

成本中心与利润中心

典型的软件工程职业路径

思考职业发展的另类视角

薪酬与公司“层级”

1.1 科技公司的类型

虽然难以对科技公司进行绝对分类,但从软件工程师的角度来看,它们确实具有一些共同特征。常见的公司类型有以下几种。

科技巨头

这些公司是像苹果、谷歌、微软和亚马逊这样的大型、公开上市的科技企业。它们通常雇佣数万名软件工程师,市值高达数万亿美元。

科技巨头的工程岗位因顶尖的薪酬、超越资深工程师(staff engineer)级别的职业发展机会,以及能够影响数亿客户的工作机会而备受追捧。此外,在这些公司任职,还有机会与业内顶尖同事共事。

中大型科技公司

这些公司以软件工程为核心业务,规模小于科技巨头,可能雇佣数百或数千名软件工程师,如Atlassian、Dropbox、Shopify、Snap和Uber。

这些公司通常提供与科技巨头类似的薪酬和超越资深工程师级别的职业发展路径。虽然用户基数相对较小,但工程师的工作仍然可以影响数千万客户。

成长型公司

这些公司是由风险投资支持的后期公司,且产品与市场契合,正在投资以扩大规模。它们可能会为了提升市场份额而故意亏损,如Airtable、Klarna和Notion。

这些企业通常为了在估值中证明其价值,为未来融资轮次做准备或筹备上市,而在高压下快速发展业务。

在众多快速增长的企业中,有一类被称为“独角兽企业”,即估值超过10亿美元的公司。在21世纪最初10年,独角兽企业相对较少,成为“独角兽”往往预示着该公司可能成为下一个行业巨头。时至今日,独角兽企业已屡见不鲜,因此这一身份已不再那么具有区分度。

初创公司

这些是由风险投资支持的公司,它们已筹集到较小规模的资金,并正在寻求产品与市场的契合。这涉及构建一个能够迎合客户需求的产品。

初创企业天生具有风险性;它们往往缺乏可观的收入,并依赖筹集新一轮资金来维持运营,而这需要产品与市场相契合。

一个成功从初创公司成长为成长型公司的例子是2011年的Airbnb(爱彼迎)。该公司成立于2008年,获得了Y Combinator的种子投资。到2010年,Airbnb的产品已经获得了市场的认可,并筹集了720万美元的A轮融资。2011年,由于投资者看到了其潜力,该公司又筹集了1.12亿美元的B轮融资。

一个未能跨越初创阶段便宣告失败的创业公司例子是Secret,这是一款匿名分享应用。Secret成立于2013年,允许用户匿名分享他们的秘密。该公司在两年内取得了不错的进展,并筹集了3500万美元的资金。然而,到了2015年,它宣告关闭,并将部分资金退还给了投资者。

初创公司通常会为软件工程师提供最大的自由,但也最不稳定。由于公司的存亡取决于在资金耗尽之前是否实现了产品与市场的契合,因此这些公司在工作与生活平衡方面也可能要求很高。同时,创始人对初创公司的环境有着巨大影响。一些人推行“word hard,play hard”的文化,而另一些人则专注于可持续的工作文化。初创公司提供最多样化的工作种类、人才结构和成长机会。

提供股权的初创公司是高风险高回报的工作场所。如果公司业务蓬勃发展,并最终通过公开上市或被收购的方式退出,那么持有大量股票的早期员工将获得丰厚的财务回报。这种情况在2020年Airbnb以860亿美元市值公开上市时发生过,也在2022年设计协作工具Figma被Adobe以200亿美元收购时上演过。

拥有技术部门的传统非科技公司

这些企业的核心业务与技术关联甚微,技术部门仅是其众多部门之一。其中不乏有超过50年历史的老牌企业,它们在软件开发时代之前就已成立。另一些企业则身处技术并非核心价值驱动力的行业。

此类公司的例子包括宜家(家居装饰)、摩根大通(金融服务)、辉瑞(制药)、丰田(汽车)和沃尔玛(零售)。

许多此类公司已开始实施数字化转型,并旨在使软件开发对其业务更具战略意义。然而现实情况是,在这些地方,技术部门更多是一个成本中心而非利润中心,而且这些企业提供的薪酬通常低于科技巨头和许多成长型公司。

但是,相较于大多数技术导向型公司,传统企业往往能提供更稳定的工作岗位和更佳的工作与生活的平衡。然而,对于软件工程师而言,不利之处通常在于职业选择相较于科技巨头和成长型公司更为有限,且资深工程师之上的职业晋升路径也较为稀缺。

传统但技术密集型公司

在传统企业中有一个有趣的群体,它们以硬件、软件服务或两者兼具的形式,将技术作为其核心产品。这些公司在初创时期往往取得了显著的成功,如今已发展成为成熟、可靠且盈利的企业。然而,随着岁月的流逝和增长速度的放缓,它们形成了与年轻科技公司截然不同的、更为僵化的组织结构。

此类公司的例子包括博通、思科、英特尔、诺基亚、爱立信、梅赛德斯-奔驰和萨博。硬件密集型企业及汽车企业通常可以归入这一类。

人们普遍认为,与科技巨头或成长型公司相比,这些公司的吸引力较低。在薪酬方面,它们几乎总是低于科技巨头,而且在采纳新工作方式的速度上也通常不如年轻公司敏捷。

但是,这些公司确实提供了复杂且具有挑战性的工程项目,作为工程师,参与其中能带来极大的满足感,而你的工作成果也可能产生堪比科技巨头的深远影响。此外,这些公司通常非常稳定,往往能提供比科技巨头或成长型公司更可预测的工作与生活的平衡。软件工程师在这类公司的任期也可能很长,这为其带来了在年轻公司中较为罕见的可预测性和稳定性。

小型非风险投资公司

自筹资金的公司、家族企业及生活方式型企业(以创始人的生活方式为存在目的的企业)都是不需要风险投资的小型公司的例证。这意味着如下两件事。

1)没有投资者施加的不惜一切代价增长的压力。

2)必须实现盈利,否则企业将面临倒闭。

这些特征表明,此类小型公司很少呈现高增长态势,在招聘和业务运营方面均较为保守。然而,得益于舒适的工作节奏、盈利能力,以及许多人更倾向于在稳定公司长期任职而非频繁跳槽至更为繁忙的工作环境,这些公司往往能成为友好且稳定的工作场所。

公共部门

政府不断有投资软件开发的需求,而且确实在这样做。

公共部门工作的优势在于稳定,而且薪酬通常明确告知并遵循一定标准。许多职位在休假和福利方面也颇为优厚。

不利之处可能包括流程缓慢、官僚主义盛行,以及需要维护难以更改的遗留系统。在一些国家,从政府职位转向私营部门也可能更加困难。

一个声誉良好的政府组织典范便是英国的数字服务部门,该部门负责构建和维护众多政府网站。其工作方式堪称楷模,例如,他们在GitHub上发布了大量工作成果。

非营利组织

这些组织旨在服务于公众或社会事业,如Code.org、可汗学院和维基媒体基金会。

非营利组织提供的薪酬通常低于风险投资支持的公司,但非营利组织的使命与众不同,它们并非为了给投资者带来回报或给所有者创造利润。非营利组织的工作环境也各不相同,有些对技术人员来说是非常理想的工作场所,但技术部门通常更像是成本中心。

咨询公司、外包公司和开发者代理机构

到目前为止,我们讨论的都是雇佣软件工程师来构建产品和服务的公司。然而,通过代理机构或外包公司“租用”软件工程专业技能也有相当大的需求。

外包公司根据客户需求提供尽可能多的软件工程师,并由客户决定如何在其业务中分配这些工程人才。与此同时,咨询公司会与客户签订合同,通过提供执行这项工作的软件工程师来端到端地构建复杂项目。咨询公司通常负责构建和交付整个项目。

咨询和外包公司的例子包括埃森哲、凯捷、EPAM、Infosys、Thoughtworks及Wipro。

开发者代理机构通常是中小型公司,专门承接诸如为客户构建网站、应用程序及类似项目等较小的咨询项目。它们还能为客户提供运维服务。作为开发者代理机构的全职员工,咨询工程师往往按日或小时向客户收费。

对于软件工程师而言,咨询公司、外包公司和开发者代理机构的优点在于,它们通常是最容易获得工作机会的地方,尤其是当你经验不足时。这是因为这些公司往往对人才需求量大,而且相较于其他类型的客户,它们提供的薪酬较低。

其他优点还包括通常会为经验较少的工程师提供培训机会,有机会参与各种各样的项目,以及作为承包商有机会接触和了解许多不同的工作环境。

在咨询公司工作也有不利之处,通常体现在以下几个方面。

在职业发展方面,这些公司通常不提供资深工程师级别以上的发展路径,而资深工程师级别仅高于高级工程师一级。

工作范围仅限于客户设定的范围。咨询公司通常被聘请来承接客户认为超出其核心能力的项目。

不太注重良好的软件工程实践。客户只为短期成果付费,而不会为开发者致力于长期事务(如减少技术债务)而买单。

以后可能难以转向以产品为中心的公司。像科技巨头、初创公司和成长型公司这样构建产品的公司,往往有着截然不同的文化,其中可维护性和主动性都很重要。在咨询公司工作太久,可能会使转向这些地方变得更加困难。

学术机构和研究实验室

这些机构通常是大学的一部分或与大学紧密合作,从事长期研究项目。有些专注于应用研究,而另一些则进行基础研究。

在研究实验室工作的好处是可以将技能应用于较少探索的领域,并在几乎没有商业压力的环境中获得稳定的工作。

哪种类型的公司最适合你的职业目标?

如我们所见,作为软件工程师,有许多类型的公司和组织可以考虑。那么,哪一种最适合你呢?

你不太可能同时在上述所有类型的工作场所找到机会。因此,根据你的情况,将名单缩小至现实可行的选项。如果可能的话,与身为工程师的朋友、家人和人际网络中的其他人交谈。听听他们对自己工作场所的看法,以及他们的实际工作情况。

不要忘记,同一类型的公司之间也可能存在巨大差异,甚至同一工作场所的不同团队也有显著差异。在传统企业的技术部门,在一个出色团队中工作可能会比在科技巨头一个苦苦挣扎的团队中工作更惬意。

1.2 典型的软件工程职业路径

在公司内部,软件工程师的职业路径相当简单,最常见的两种是单轨和双轨职业道路。

单轨职业道路

个人贡献者(Individual Contributor,IC)和管理者的单轨职业道路通常如下所示。

等级

个人贡献者

管理者

1

软件工程师

2

高级工程师

3

资深/首席工程师

工程经理

4

总监

5

工程副总裁

6

首席技术官

典型的单轨职业道路,随着级别的提升,薪酬和期望也会提升

在规模较小或非技术导向型公司中,软件工程师在达到资深/首席级别(即第3级)时,实际上就触碰了职业天花板。要想继续发展,他们只能转向管理轨道。

转换职业路径的一个弊端在于,许多工程师逐渐认识到管理工作并不适合自己,于是选择离职,另谋出路。这就意味着,雇主会失去那些本有可能成长为优秀管理者的工程师,或者因为不喜欢管理工作而彻底离开公司的技术人才。

双轨职业道路

工程团队规模扩大至30~50人及以上的公司,或更具前瞻性的公司,通常会设立双轨职业晋升体系,以避免工程师在面临职业选择时陷入困境,即要么停滞在与一线经理薪酬相仿的级别,要么转型为管理者。双轨职业晋升体系通常如下所示。

等级

个人贡献者

管理者

1

软件工程师

2

高级工程师

3

资深工程师

工程经理

4

高级资深工程师

总监

5

首席工程师

高级总监

6

杰出工程师

工程副总裁

7

会士工程师

高级工程副总裁

8

首席技术官

典型的双轨职业阶梯,同样,随着等级的提升,薪酬和期望也会提升

在实行双轨职业晋升体系的公司,存在几种不同的职业发展路径,如下所示。

1)个人贡献者:从软件工程师起步,经过高级工程师,逐步晋升至更具挑战性的个人贡献者级别。

2)工程经理:从高级工程师或资深工程师转型为工程经理,然后沿着管理轨道晋升。幸运的话,有机会晋升至总监及以上职位。

3)在个人贡献者与管理者之间切换:在担任管理者角色后回归工程师身份,未来或许还会再次切换。这种做法在这类公司中比人们想象的更为常见。

所有职业路径都是独特的

实际上,在科技行业,许多人换工作相当频繁。我所认识的大多数软件工程师每隔几年就会换一次工作,这也会改变他们的职业轨迹。因此,职业路径变得多样化,你可以在经验丰富的软件工程师的LinkedIn资料中看到这一点。以下是几个例子。

《资深工程师之路》(The Staff Engineer’s Path)一书的作者塔尼娅·赖利(Tanya Reilly)拥有长达20年的职业生涯,她的职业路径相当线性,一直沿着软件工程师的道路发展。

系统管理员(富士通、Eircom)

→ 软件工程师(谷歌)

→ 高级软件工程师(谷歌)

→ 资深系统工程师(谷歌)

→ 首席软件工程师(Squarespace)

→ 高级首席软件工程师(Squarespace)

尼基·赖特森(Nicky Wrightson)在她20年的职业生涯中,很长时间都沿着软件工程师路径发展,之后才转向管理岗位。

软件开发人员(咨询公司)

→ 专业顾问和开发人员(电信公司)

→ 开发人员(法国巴黎银行、摩根大通、摩根士丹利)

→ 六个月休假

→ 首席工程师(《金融时报》、River Island、Skyscanner)

→ 兼职首席技术官(创业孵化公司Blenheim Chalcot)

→ 工程主管(Topi)

马克·齐梅尔宗(Mark Tsimelzon)30余载的职业生涯丰富多变(在本书出版时,他担任WhatsApp工程主管),从软件工程师开始,到交替担任创始人和技术开发者,以及管理职位。

软件工程师

→ 工程经理

→ 创始人(创业公司后被Akamai收购)

→ 产品经理(Akamai)

→ 创始人(创业公司后被Sybase收购)

→ 工程总监(雅虎)

→ 驻场创业者(风险投资公司)

→ 工程副总裁(创业公司后被雅虎收购)

→ 高级工程总监(雅虎)

→ 工程副总裁(Syapse)

→ 首席工程官(Babylon Health)

→ 工程总监(Meta)

常见的职业路径

软件工程领域日新月异,充满活力,因此软件工程师有大量机会通过把握机遇来塑造自己的职业生涯,这不足为奇。我至少观察到十几条“常见”的职业发展道路。

终身软件工程师。他们始终从事软件工程师的工作,职位不断晋升(如高级工程师、资深工程师、首席工程师等),并在不同公司之间跳槽。他们通常会在每个新职位上转换技术栈并拓宽自己的技能组合。

软件工程师转型为专家。他们专注于某个领域,如原生移动开发或后端开发,并长期深耕于此。

通才/专家摇摆者。他们先专注于某项技术,然后转向更广泛的职位,如此循环往复。

专注于特定细分领域的软件工程师。例如转型为网站可靠性工程师或数据工程师,他们虽然也会进行一些编程工作,但主要工作内容与软件工程的常规工作大相径庭。

软件工程师转型为合同工/自由职业者。在达到高级工程师的地位后,这类人成为合同工或自由职业者,往往收入更高,且无须过多担心公司内部政治和职业发展问题。

软件工程师转型为技术负责人。他们起初会带领团队,但不一定从事管理工作。即使他们换工作,最终也会回归技术负责人的岗位。

软件工程师转型为工程经理。他们成为工程经理,并沿着这条职业道路继续发展。

软件工程师转型为创始人或企业家。在软件工程师职业生涯之后,他们开始创立或联合创立一家公司。

软件工程师转型为非软件工程师。他们转向其他技术领域,如开发者关系(DevRel)、产品管理、技术项目管理(Technical Program Management,TPM)、技术招聘等。他们作为软件工程师的经验仍然有效,并且能够探索自己感兴趣的新领域。

软件工程师/工程经理摇摆者。他们先成为工程经理,然后又回到软件工程师岗位,这种转换往往会重复几次。查丽蒂·梅杰斯在《工程师/经理摇摆者》(The Engineer/Manager Pendulum)一文中详细描述了这条越来越常见的职业发展路径。

上述路径的组合。例如,软件工程师先转型为工程经理,再转为产品经理,最后成为创始人,或者任何其他组合。

非线性职业发展路径。例如,软件工程师先成为工程经理,然后为了家庭或追求其他职业而长时间离开职场,最后以工程总监的身份回归。非线性职业发展路径因人而异,各具特色。

在本书中,我们探讨了在公司内部更为典型的职业发展路径,即从初级工程师成长为资深工程师。然而,尽管这样的职业路径对于在公司内部晋升的个体贡献者而言颇为典型,但在软件工程师群体中却未必普遍。通过详细介绍从软件工程师起步的多样化的职业道路,我希望向大家展示并不存在唯一“正确”的职业路径。每个人的机遇和偏好各不相同,你应当有勇气去探索那些不那么传统的领域。

1.3 薪酬与公司“层级”

对工作的各个方面,包括专业挑战、灵活性及工作与生活的平衡进行量化,是一项棘手的任务。

然而,有一项较容易量化的指标便是总薪酬,但需注意,私营公司的股权激励计划往往难以准确量化。作为招聘经理,我观察到薪酬方案似乎呈现出三峰分布的特点。

数据显示,相同职位和头衔在不同类型的公司中,薪酬可能相差2~4倍。谷歌的高级工程师的总薪酬很可能是非科技公司或小型家族企业高级工程师的2倍,甚至4倍。总薪酬由以下3个要素构成。

软件工程师薪酬的三峰特性,相似职位的薪酬可能(也确实)大相径庭(第一层级是地方公司,第二层级是地方市场顶尖水平,第三层级是区域市场顶尖水平)

基本薪资。

现金奖金。

股权(在上市公司中是可流动的,而在私营初创公司和成长型公司中则是非流动的)。

接下来,我们来谈谈与薪酬相关的技术市场的三个层级。

第一层级:地方市场

此层级公司以地方市场为基准设定薪酬。这类公司通常包括:

地方初创公司;

小型非风险投资公司;

拥有技术部门的传统非科技公司;

公共部门;

非营利组织;

咨询公司、外包公司及开发者代理机构;

学术机构和研究实验室。

第二层级:地方市场顶尖水平

此层级公司旨在提供地方市场顶尖的薪酬,以吸引并留住杰出的地方人才。这类公司通常包括:

部分中型科技公司,尤其是那些针对地方市场优化薪酬的公司;

部分成长型公司;

部分初创公司,通常是资金充裕且专注于区域市场的企业;

部分设有技术部门并加大技术投资力度的传统公司。

第三层级:区域/国际市场顶尖水平

此层级公司旨在提供区域内乃至国际上的最佳薪酬,用以与同级别的第三层级公司竞争,而非地方竞争对手。这类公司通常包括:

科技巨头;

大多数中型科技公司;

资金充裕的成长型公司,这些公司与科技巨头和中型科技公司竞争人才;

资金雄厚的初创公司,从上述群体中招聘人才。

第三层级公司的薪酬通常包含3个组成部分:

基本薪资;

每年发放的股权;

每年发放的现金奖金。

当上市公司发行股票时,这些股票可在归属期后作为整体薪酬方案的一部分进行出售。这正是大科技公司及类似规模公司的软件工程师(达到资深级别)每年通过股票薪酬获得的收入超过其基本薪资的原因。

许多初创公司和成长型公司也会为软件工程师分配股权。然而,在私营公司,这些股权并不具有流动性,因此任何股价上涨都只是“账面收益”,直到公司完成上市或被收购等退出操作。这些退出途径是早期持有大量股票的员工实现财富增值的方式,正如早期Uber员工所经历的那样。当然,私营公司风险更高,因为许多公司最终无法实现退出。2023年,Foursquare的早期员工就遭遇了这样的困境,在公司成立14年后,他们的股票期权到期作废,化为乌有。

合同工和自由职业者

到目前为止,我们已探讨了全职员工的整体薪酬。然而,我们还需审视合同工与自由职业者的薪酬情况,他们虽常从事与全职员工相似的工作,但薪酬支付方式却有所不同。

他们按与公司商定的费率收费,通常按小时或日计费。从人力资源的角度来看,他们并非公司员工,而是依据企业间合同向客户提供软件工程服务。不同国家对此类人员的称谓各异,美国与英国称其为合同工,而许多欧洲国家则称其为自由职业者。本书统一采用“合同工”这一称谓。

合同工与全职员工的一大区别在于其薪酬可能更高,高级及以上级别的软件工程师作为合同工所收取的费用几乎总是高于第二层级薪酬方案的水平。同时,部分高端合同工的收入甚至可达第三层级薪酬方案的水平。

在某些国家,尤其是欧洲,全职就业收入税负较重,合同工收入则可能税负较轻。

从雇主的角度来看,合同工与全职员工之间最大的差异在于灵活性,雇主可以快速招聘合同工,并同样迅速地终止其合同。此外,雇主无须担忧职业晋升、培训或离职条款。休假通常也不在此类协议范围内,当合同工休假时,他们不会为休假日计费。

合同工的绩效管理与职业发展路径同样有别于全职员工。他们无须接受绩效评估,也无晋升机会。因此,他们无须参与全职员工为取得良好绩效管理成果而进行的许多活动。许多人选择成为合同工,是因为他们不希望基于公司内部层级完成更多的职业发展,而是更喜欢专注于工作本身,减少绩效管理流程和办公室政治的牵绊。

合同工的一个不利之处在于,他们的工作稳定性通常低于同等职位的全职员工。在大多数国家,全职员工的工作受到法律法规的保护。但对合同工而言,解雇流程设计得非常简单,通常雇主只要不续签固定期限合同,或按合同规定的时间发出通知即可。合同工易于聘用与解雇,因此在困难时期往往成为首批被解雇的团队成员。

然而,合同工往往愿意接受较低的工作稳定性,以换取更高的薪酬。他们中的许多人都是高级或更高级别的工程师,对于不再追求公司职业晋升感到心满意足。

各层级间的权衡

基于薪酬理念划分的公司层级之间如何比较?由于每家公司各不相同,且每个工作环境都有其利弊,因此难以做到客观。以下是关于全职员工第一、第二和第三层级的一些观察分析。本书未详细讨论合同工,因为他们没有既定的层级或晋升目标。然而,优秀的合同工往往具备本书“高级”和“资深”部分所提及的诸多特质。

第一层级(地方)

第二层级(地方顶尖)

第三层级(区域顶尖)

求职难度

最容易

更具挑战性

非常具有挑战性

绩效期望

通常合理

往往要求更高

几乎总是要求极高

个人贡献者的职业发展路径

通常可达高级或资深级别

有时可超越资深级别

几乎总是超越资深级别

工作和生活平衡

可以成为重点

通常不再是重点

通常不再是重点

三个层级的公司对比

高薪公司自然吸引众多求职者,这也意味着这些公司能够对软件工程师提出(通常确实会提出)最高的要求。

1.4 成本中心与利润中心

许多公司在经营中采用“利润中心”和“成本中心”的概念。你所处的“中心”类型,对你的职业生涯有着重要影响。

利润中心是指直接为企业创造收入的团队或组织。一个典型的例子是谷歌的广告部门,该部门直接负责创造谷歌的大部分收入。虽然许多团队都在为此贡献力量,例如搜索团队将访客引入网站,但是,如果没有广告团队为广告商构建投放广告预算的工具,谷歌的收入将大大减少。

成本中心则是指不直接创造收入,但对公司顺畅运营至关重要的团队或组织。一个很好的例子是负责合规的工程团队,他们确保公司在欧洲符合《通用数据保护条例》(GDPR,欧盟于2018年正式生效的一项数据保护法规)要求。他们的活动虽然必不可少,但并不产生收入,因此从商业角度来看属于成本中心。

在大公司,在成本中心或利润中心工作各有哪些影响呢?

晋升:在利润中心工作,晋升几乎总是更容易。通过展示对收入生成的贡献,更容易为晋升争取支持。一个例外是在大型科技公司,对于资深工程师及以上职位,除了全公司范围内的业务影响,解决全公司范围内的工程挑战也是一种期望。这种要求激励经验丰富的工程师加入平台团队,以推进他们的职业生涯。

绩效评估与奖金:从入门级到高级工程师,在两种类型的组织中工作通常没有区别。但在更高级别,利润中心的人员往往获得更好的“评分”和奖金。这是因为当工程师的贡献在其他方面相同时,大多数企业自然倾向于赚钱的员工。

内部调动:员工想要进入利润中心是可以理解的。然而,情况往往并非如此,许多工程师被复杂而有趣的工作所吸引,而这类工作大多发生在尚未成为利润中心的“重大赌注”项目上。相反,利润中心往往是组织中更“无聊”的团队,因此想加入的人较少。想象一下,如果进入Meta并选择一个团队,你是愿意参与广告基础设施建设,将广告收入提高0.005%;还是愿意加入一个新团队,致力于打造一种令人兴奋、富有创新性的社交连接方式?

流失率:由于更多员工离开公司或转入利润中心(因为在这些团队中职业晋升更容易),成本中心的流失率几乎总是更高。

工作保障:当公司需要节约成本时,成本中心往往是裁员的首要目标。

那么,如何知道你的团队或组织是利润中心还是成本中心呢?方法如下。

你的团队或组织是否报告每个时期的收入?如果是,你可能在利润中心。

你的公司如何赚钱,哪些组织带来收入?如果是银行,是销售部门得到所有功劳,还是前台?技术部门是否因创造收入而获得认可?技术部门内哪些团队得到认可?

查看组织结构图。技术部门在组织中的地位如何?工程和产品开发部门向谁报告?与市场营销、财务、运营和其他团队相比,工程部门有多少副总裁?

在全员大会上,CEO称哪些团队为“战略性”团队,并因增加收入而获得认可?你的团队或组织是否在其中?

你的公司是否已经上市?如果是,阅读季度报告以了解公司的关注重点,这很可能是利润中心所在的领域。

软件工程既可能是成本中心,也可能是利润中心。

在大中型科技公司,以及以技术为核心业务活动的初创公司和成长型公司中,技术和软件工程通常被视为利润中心。

在传统公司和公共部门,技术通常被视为实现目标的“手段”,因此被视为成本中心。

在咨询公司和开发者代理机构,开发是公司提供的服务,这意味着这项活动通常是利润中心。

在成本中心和利润中心都有工作经历能让你获得更全面的视角。当你在利润中心工作时,很容易对成本中心产生优越感。然而,高效的公司需要这两种类型的团队和组织,因此掌握如何在两种环境中蓬勃发展是一项有用的技能。

1.5 思考职业发展的另类视角

信不信由你,在工作和职业发展中,除了职位头衔和薪酬,还有很多更重要的东西。职位、公司声誉和薪酬都是最容易谈论的,因为它们都很具体,而且薪酬数字也提供了一种直观的岗位比较标准。以下是一些影响你对工作满意度的其他因素。

共事伙伴及团队氛围。

你的上司及你与他们的关系。

你在团队和公司中的角色定位。

公司文化。

公司的使命及其对社会的贡献。

职业成长机会。

你在此环境中的身心健康。

灵活性。你是否可以远程或居家办公?如果可以,频率如何,需要提前多久报备?

随时待命。它的要求有多高,压力有多大?

工作之外的生活:你能否轻松做到“工作归工作,生活归生活”?

个人动机。

下面将这些因素进行可视化。

思考职业生涯的另类视角

将上图中的各个因素与你所申请职位的薪酬待遇进行权衡。资深专业人士为了“提升”这些因素中的一个或多个,而接受降薪的情况并不罕见。在当前工作和下一份工作中,找到适合你的平衡点。与那些只关注工作中易于衡量部分的人相比,你将拥有更加令人满意的职业生涯。

相关图书

DeepSeek原理与项目实战大模型部署、微调与应用开发
DeepSeek原理与项目实战大模型部署、微调与应用开发
Python编程快速上手——让烦琐工作自动化(第3版)
Python编程快速上手——让烦琐工作自动化(第3版)
软件工程3.0:大模型驱动的研发新范式
软件工程3.0:大模型驱动的研发新范式
精通MCP:AI智能体开发实战
精通MCP:AI智能体开发实战
图机器学习
图机器学习
Vibe Coding:AI 编程时代的认知重构
Vibe Coding:AI 编程时代的认知重构

相关文章

相关课程