CodeGym /课程 /Kotlin SELF /程序员之路

程序员之路

Kotlin SELF
第 7 级, 课程 6
可用

程序员之路

1. 职业阶梯

程序员也有基于资历的等级划分。曾经,人们使用“代码工 (coder)”、“程序员 (programmer)”和“黑客 (hacker)”等概念,但现在大家都转而使用源自美国 IT 行业的英文职位名称。

开发者主要有 6 个等级:

  • Intern Software Engineer(实习软件工程师)
  • Junior Software Engineer(初级软件工程师)
  • Middle Software Engineer(中级软件工程师)
  • Senior Software Engineer(高级软件工程师)
  • TechLead(技术主管)
  • Principal Software Engineer(首席软件工程师)

在不同的国家,甚至不同的公司之间,具体的标准可能会有所不同,但核心逻辑大体如下:

🌱 Intern Software Engineer(实习软件工程师) — 实习生。他们正在学习编程,既没有商业项目经验,也没有参与大型项目的经验。通常在经验更丰富的同事指导下工作。他们的主要工作任务是通过完成简单的编码任务和参与测试,来学习代码库和软件开发的基础知识。

🐣 Junior Software Engineer(初级软件工程师) — 已经是程序员了,但缺乏实质性的商业经验,或者经验不足一年。他们在更有经验的开发者的指导下工作,负责实现项目的某些部分并参与 Code Review(代码评审)。这一职业阶段的重点是深化技术技能并理解项目任务。

🦾 Middle Software Engineer(中级软件工程师) —— 在技术决策上拥有更多的自主权,负责项目的重要部分,开始指导经验较少的同事,并更积极地参与架构讨论。他们通常拥有 2–5 年的实践经验。

🧑‍🔬 Senior Software Engineer(高级软件工程师) —— 负责复杂系统的设计与实现,在团队内提供指导和领导力,参与项目战略规划,并经常代表团队与客户及其他利益相关者沟通。他们通常拥有 5–10 年的经验。

🧠 TechLead(技术主管) —— 对项目的最终技术成果负责,领导开发工作,解决最棘手的问题,确保符合技术标准,并协调开发人员的工作。

🏆 Principal Software Engineer(首席软件工程师) —— 在最高技术水平上工作,经常参与公司技术战略的制定、创新解决方案的开发以及技术标准的建立;担任技术主管的总导师,是复杂技术问题的关键专家。

有趣的是,大型公司可能会有额外的角色和子角色。例如,Google 拥有以下角色:

  • Staff Software Engineer (L6):对所在部门的技术方针有重大影响。
  • Senior Staff Software Engineer (L7):从事大规模且复杂的项目,定义公司技术发展的战略方向。

2. “乐高”式产品

很久以前(1975 年),Pascal 语言的创始人 Niklaus Wirth 写了《算法 + 数据结构 = 程序》一书。 从那时起,一切都变了。现代软件产品已经与 10 年前大不相同,更不用说 20 年前了。至于 1975 年,那已经过去 50 年了,简直没法比 ⏳

现代程序员不再手工编写程序。相反,他们通过组装现成的部件(库)来构建程序,并编写代码来帮助这些部件交互 🧩。现代软件产品可以由数十甚至数百个程序组成。其中一些运行在用户的电脑和移动设备上,而大多数则运行在数据中心服务器上。

许多这类程序(如 Web 服务器或数据库)早已编写完成。你只需要正确地配置它们,使其按预期工作即可。尽管随着时间推移,配置过程可能会变得极其复杂,以至于实质上变成了开发工作 🤦‍♂️。

程序员一直在与自己博弈。与其在不同的程序中重复编写类似的代码,他们更倾向于编写可以按需配置(定制)的库,然后在需要的地方简单地调用它们。

在过去的 20 年里,程序员编写了海量的库、框架和开源仓库。数量简直数以百万计。如今,一切从零开始编写代码被视为一种不好的实践。相反,你应该利用高质量、经受过验证的解决方案——即库、框架、包和模块——来组装程序 🧱。

但即使是这种方法也正在变得过时。过去 10 年的趋势是向云端迁移——大型数据中心会为你的程序提供所需的一切。想要数据库?我们有数百种可供选择。想要稀有、独特的 Web 服务器?我们也有!只要你愿意付费,任何需求都能满足。

3. “我是工程师” © Elon Musk

img

你不再需要自己编写那些复杂且枯燥的东西。如果需要某种功能,通常已经有现成的库和框架可用。你的任务是:(a) 知道它们存在,(b) 找到合适的选项(通常有多种选择,各有各的质量和细微差别),(c) 理解如何将其集成到你的项目中 🎓

正因为如此,工作反而变得更有趣了。现在,你可以比 30 年前快 10 倍的速度为产品添加新功能。那时,如果需要 Web 服务器,你需要从零开始编写;20 年前,你购买、安装并配置它;而现在,你只需进入 Azure 或 AWS 云门户,启用所需服务即可 🌐

顺便提一下,这就是 Kotlin 语言流行的原因之一。它不仅适合构建大型企业级解决方案,还非常适合“粘合”不同的组件——通过丰富的 JVM 生态系统,几乎可以与任何东西集成:数据库、微服务、REST API、消息系统、云服务、分析平台。

因此,Kotlin 软件工程师这一职业早已转变为 Kotlin 全栈开发者。现代开发者必须理解数据库(PostgreSQL, MySQL/MariaDB, MongoDB 等)的工作原理,以便正确构建交互;需要了解前端(HTML, CSS, JavaScript/TypeScript, React, Angular)的工作方式,以便与 Kotlin 后端(Spring Boot, Micronaut, Quarkus)进行通信。当然,现在离不开 Docker——这已经是行业标准了 🐳。

现代开发与 20 年前大不相同。程序员写代码的时间不超过 50%——其余时间都花在阅读文档、学习新技术、设计以及会议上的团队协作。单打独斗的程序员现在反而成了罕见的例外。

评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION