1. 职业晋升路径
程序员也有根据资格划分的等级。曾经有“编码员”、“程序员”和“黑客”等概念,但现在都转成了美国IT行业的英文称呼。
对于开发者来说,主要有6个等级:
- Intern Software Engineer
- Junior Software Engineer
- Middle Software Engineer
- Senior Software Engineer
- TechLead
- Principal Software Engineer
不同国家甚至不同公司,参数可能会有差异,但大致意思是:
- 🌱 Intern Software Engineer — 实习生。他们还在学习编程,没有任何商业经验,也没有参与大型项目的经验。通常在更有经验的同事指导下工作。主要任务是学习代码库和软件开发基础,完成简单的编码任务,参与测试。
- 🐣 Junior Software Engineer — 已经是程序员,但没有丰富的商业经验或少于一年的经验。在更有经验的开发者指导下工作,完成项目的部分任务,参与代码评审。这个阶段主要是深化技术技能和理解项目需求。
- 🦾 Middle Software Engineer(或简称Software Engineer):拥有更大的自主决策权,负责项目中的重要部分,开始指导经验较少的同事,更积极参与架构讨论。通常有2–5年的实际工作经验。
- 🧑🔬 Senior Software Engineer:负责设计和实现复杂系统,提供团队内的指导和辅导,参与项目的战略规划,常代表团队与客户或其他相关方沟通。通常有5–10年的经验。
- 🧠 TechLead:对项目的最终技术成果负责,领导开发工作,解决最复杂的问题,确保技术标准的遵守,协调开发人员的工作。
- 🏆 Principal Software Engineer:在最高技术层面工作,常参与公司技术战略制定,开发创新方案,制定技术标准,是技术领袖和复杂技术问题的关键专家。
有趣的是,大公司可能还会有额外的角色和子角色。例如,Google的职位有:
- Staff Software Engineer (L6):对所在部门的技术政策有重要影响。
- Senior Staff Software Engineer (L7):负责大型复杂项目,定义公司技术发展的战略方向。
2. Lego产品
很久以前(1975年),Niklaus Wirth,Pascal语言的创造者,写过一本书叫《Algorithms + Data Structures = Programs》。从那时起,变化很大。现代软件产品和10年前完全不同,甚至比20年前还要不同。别提1975年了——那已经过去50年了⏳
现代的程序员不再手写程序。他们更像是用现成的组件(库)拼装程序,然后写代码让这些组件协同工作🧩。现代软件可以由几十甚至上百个程序组成。有些在用户的电脑或手机上运行,大部分在数据中心的服务器上。
很多这些程序,比如Web服务器或数据库,已经写好了。只需要正确配置,它们就能正常工作。虽然随着时间推移,配置过程可能变得非常复杂,实际上就变成了开发🤦♂️。
程序员们不断在和自己较劲。为了避免重复写类似的代码,他们写库(libraries),可以配置(调优)以满足不同需求,然后在多个程序中复用。
过去20年,程序员写了大量的库、框架和开源仓库,数量以百万计。现在,自己从零写代码被认为是不合时宜的做法。更好的方式是用高质量、经过验证的解决方案——库、框架、包和模块🧱拼装程序。
但这种方式也逐渐过时。最近10年的趋势是迁移到云,大型数据中心提供一切你需要的资源。想要数据库?有上百个选择。想要稀有的Web服务器?也有!任何需求都能满足,价格由你决定。
3. “我就是工程师” © 马斯克

不再需要自己写复杂又枯燥的东西了。如果需要某个功能,现成的库和框架已经帮你准备好了。你的任务:a) 了解它们的存在,b) 找到合适的(通常有几个备选,质量和细节不同),c) 明白如何集成到你的项目中🎓
这样一来,工作变得更有趣了。现在你可以快10倍地为产品添加新功能。30年前,要用Web服务器,你得自己从零写。20年前,要么买,要么安装配置。现在,只需登录Azure或AWS云平台,开启所需服务🌐
这也是C#语言流行的原因之一。它不仅适合写大型应用,还能“粘合”各种组件——通过.NET几乎可以集成任何东西,比如数据库、微服务、REST API、消息队列或云服务。
因此,C#/.NET开发者的职业早已转变为Fullstack .NET Software Engineer。现代开发者需要了解数据库(SQL Server、PostgreSQL、MongoDB等)如何工作,以便合理设计交互。还要懂前端(HTML、CSS、JavaScript/TypeScript、Blazor),以配置与C#后端的通信。当然,现在Docker也是标配了——行业标准🧪。
现代开发和20年前相比,差别巨大。程序员写代码的时间不超过50%,剩下的时间用来阅读文档、学习新技术、设计方案和团队开会。单打独斗的程序员,已经很少见了。
GO TO FULL VERSION