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年),Nicklaus Wirth,Pascal语言的创造者,写过一本书叫《Algorithms + Data Structures = Programs》。从那时起,很多东西都变了。现代软件产品已经不是十年前的样子,更不是二十年前的样子。说到1975年,那已经过去了50年 ⏳
现代的程序员不再手动编写程序。他们更像是用现成的组件(库)拼装程序,然后写代码让这些组件协同工作🧩。现代软件可以由数十甚至数百个程序组成。有些在用户的电脑或手机上运行,大部分则在数据中心的服务器上。
许多这些程序,比如Web服务器或数据库,已经写好了。只需要正确配置,它们就能正常工作。虽然随着时间推移,配置过程可能变得非常复杂,实际上就变成了开发的一部分。🤦♂️
程序员们不断在自我挑战。为了避免在不同程序中重复写类似的代码,他们开发了库,可以根据需要配置(调优),然后在所有需要的地方引用它们。
在过去的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