小马的世界

读书笔记-软件工程师指南【1-1】前言 职业程序员成长基础

下面的内容是我在作为一名程序员入职之前阅读的由Gergely Orosz写的The Software Engineer’s Guidebook。我将将阅读时得到的重要的信息总结成中文以供大家分享。

第〇部分:前言

作者是一名10年的软件工程师,并且作为主管也工作了5年。作者在第一年作为程序员的时候苦于不知道作为一名程序员在职业上应该如何成长,询问了他的主管,但是主管也并没有给出具体的反馈,因此作者想当自己做主管的时候,一定要为团队成员提供如何成长的有益的建议。作者之后发布了很多博客,并且开办了The Pragmaic Engineer Newsletter作为补充材料。因此这本书为新老程序员提供了很多建议。

本书按照程序员的典型职业发展路径展开讲解,从初级程序员逐步成长为杰出员工或首席工程师。除此之外,书中还涵盖了许多现今社会中越发重要的“软技能”,这些技能对程序员来说也变得愈发必要。

本书的第一部分和第六部分适合所有程序员。2-5涵盖了作为程序员的不同阶段。

下面的如果有翻译的部分,我将用作者的第一人称口吻来叙述。

第一部分:程序员的职业基础

在我刚开始工作的几年里,我从未思考过我的职业发展方向问题。我只是相信只要努力工作,就会得到回报。不过,随着时间的推移,我意识到自己似乎停滞不前已经很多年了。

直到我转到 JP 摩根和微软工作,我才开始明白,不一定是工作最努力或者代码最优秀的人就能获得最大的奖金或升职机会。

最重要的是要为自己的职业规划负责。在小公司,可能会有上司或主管帮你规划,但在大公司,你可能需要自己负责。首先,你需要明确,当谈论职业发展时,你应该考虑什么?你需要了解哪些概念?

1.1 职业路径

每个人的职业道路都是独一无二的。很难去定义哪种职业道路才是好的。首先,要明确自己对哪种职业道路感兴趣,以及了解这种选择是否符合自己的目标和激情。

  • 不同类型的公司

特大型技术公司

这些公司规模庞大,主要销售技术产品,如苹果、谷歌、微软、亚马逊等。通常拥有成千上万的程序员。在这些公司工作通常备受欢迎,因为他们的产品影响着亿万用户。

中大型技术公司

这类公司以技术为先导,程序员对公司核心价值有着重要贡献。比如Uber、Dropbox、Snap、Shopify等。虽然用户量可能不及特大型公司,但依然能影响数百万用户。这些公司通常能提供与特大型公司相媲美的薪酬。

上升期公司

这些公司多是风险投资赞助的,通常面临较大的发展压力。

初创公司

作为风险投资的对象,这些公司致力于构建产品以满足用户需求。虽然风险高,但发展潜力也很大。初创公司可能不够稳定,但通常有“拼命工作、玩得尽兴”的文化,提供多样化的工作任务、优秀的团队人员和众多成长机会。

传统非技术公司的技术部门

这些公司的主营业务与技术无直接关联,如优衣库、宜家、JP摩根、辉瑞、丰田等。它们为了内部数字化而设立技术部门。虽然报酬可能不如技术公司或上升期公司,但通常提供良好的工作生活平衡和工作稳定性。

传统的技术型公司

这些传统制造业企业在很多年前已经取得成功,如思科、因特尔、梅赛德斯奔驰、诺基亚等。由于成立已久,公司组织结构可能与新技术公司有所不同。

非风险投资的小公司

这类公司没有股东和上市的压力,因此工作更自由和稳定。

非赢利机构

非盈利机构通常提供比风险投资公司低的报酬。

咨询/外包和派遣公司

这些公司可能不以技术为核心产品,但却为其他公司提供产品。

学术和研究实验室

这部分不做过多叙述。

  • 典型的软件工程师职业发展路径有两种方式:
  1. 单一轨道职业路径:在初始阶段,从初级软件工程师逐渐晋升为中级工程师,再到高级工程师或者主要工程师。之后,转向管理职位,例如主管、经理、总监、副总裁、首席技术官等。
  2. 多元轨道职业路径:在担任软件工程师的同时,兼顾承担管理职责。