6.1 职业阶梯
程序员也有根据技能等级的不同分级。以前我们会用到“coder”、“programmer”和“hacker”这些概念,但现在大家都转向使用美国IT行业的英文称谓。
对于开发者来说,有六个主要等级:
- 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):负责大型、复杂项目,确定公司技术发展的战略方向。
6.2 Lego 产品
很久以前(1975年),Pascal语言的创造者Niklaus Wirth 写了一本书《算法 + 数据结构 = 程序》。从那时起,很多事情已经改变了。
现代软件产品已经不是10年前的样子,更不是20年前的样子。1975年就更不用提了,那已经是50年前的事了。
现代程序员不再手工写程序。他们更像是用现成的组件(库)组建程序,并编写帮助这些组件协同工作的代码。
现代软件产品可以由几十甚至上百个程序组成。其中一些在用户的电脑或移动设备上运行,而大部分则运行在数据中心的服务器上。
许多这样的程序,例如web服务器或数据库,已经写好了。只需正确配置它们,让它们正常运行。虽然随着时间的推移,配置过程可能变得如此复杂,以至于实际上变成了开发。(*facepalm*)
程序员总是和自己较劲。与其在不同程序中反复写类似的代码,他们编写可配置(可设置)以满足自己需要的库,然后将它们连接到所有需要的地方。
过去20年,程序员们编写了大量库、框架和公开的代码库。它们确实有很多个。现在从头开始写所有代码被认为是不好的做法。相反,需要从优质和已验证的解决方案中选择——库、框架、包和模块。
然而,这种方法也已经过时了。过去10年的趋势是迁移到云、大型数据中心,为你的程序提供所有它们所需的东西。想要数据库?我们有成百上千种可供选择。想要稀有的独特的web服务器——也有这样的!只要你愿意花钱,任何选择都可以实现。
6.3 “我是一名工程师” © Elon Musk
再也不需要编写复杂和无聊的东西了。如果你需要酷炫复杂的功能,已经有现成的库可以使用。你只需要:a) 知道它的存在,b) 找到合适的(可能会有几十个质量不同的替代品),c) 了解如何将其集成到你的项目中。
这种方法反而让工作变得更有趣。现在你可以以十倍的速度为产品添加新功能。30年前,如果你需要web服务器,你需要自己写一个。20年前——购买、安装和配置。现在——只需登录“云”管理后台并开启。
这是Python语言流行的原因之一。它非常适合不是用于编写大型复杂的解决方案,而是用于“粘合”不同部分。鉴于它的受欢迎程度,它在这方面做得很好。
而且python开发者的职业已经转变为Python Fullstack Software Engineer。现代的Python开发者必须了解数据库的工作原理,以便正确地使用它。理解HTML & JavaScript,以便设置前端与python后端的工作。Docker也很重要——这是行业标准。
现代开发与20年前的情况完全不同。现代程序员编写代码的时间不超过他们时间的一半。剩下的时间他们在阅读文档、学习新技术和参加会议(讨论会)。独立程序员早已成为过去。
GO TO FULL VERSION