初级程序员怎么进阶成中级(程序员成长必读)
初级程序员怎么进阶成中级(程序员成长必读)效率曲线这是Meilir Page-Jones对软件工程专业知识进行分类的另一种方法。这一分类将专业知识分为七个阶段,并将生产力作为关键标准。尽管在90年代最初用于评估软件工程,但这种方法可以很容易地重新应用到我们的现实中。确定了获得和掌握技能的5个阶段。Andy Hunt在他的书《实用思考与学习:重构湿件》( Pragmatic Thinking and Learning: Refactor Your Wetware)中将Dreyfus模型应用到软件开发中。作者使用Dreyfus模型来构建在整个学习过程中发生的根本变化。这使他能够并列出不同阶段的程序员如何看待开发过程和解决问题,以及他们如何形成心理模型。德雷福斯模型的五个阶段说明了从新手到专家过程中最重要的变化资料来源:《实用思考与学习:重构你的湿件》,作者:Andy Hunt
软件开发人员的职业阶梯基本上包括三个层次:初级、中级和高级。行业应用这个术语来更好地理解和分配资格的程度,以及确定工资水平和职责。
了解开发人员的资历级别将有助于为特定的工程师设定更准确的期望。此外,这种区别不仅会改善内部沟通,也会加强客户和供应商之间的沟通,使所有的互动更加有效。通过区分这些职位名称,客户可以更好地了解IT行业的能力水平。
在本文中,我们将根据以下标准来分析软件开发人员的资历:技术知识、日常职责、独立工作、与团队的交互以及远景。
软件开发中的专业知识评估方法作为资历级别分析的一部分,我们将描述几种现有的评估程序员专业技能的方法。将它们应用到给定的级别将提供一个更广泛的软件开发中资历的视角。
技能习得的Dreyfus模型(The Dreyfus model of skill acquisition )确定了获得和掌握技能的5个阶段。Andy Hunt在他的书《实用思考与学习:重构湿件》( Pragmatic Thinking and Learning: Refactor Your Wetware)中将Dreyfus模型应用到软件开发中。作者使用Dreyfus模型来构建在整个学习过程中发生的根本变化。这使他能够并列出不同阶段的程序员如何看待开发过程和解决问题,以及他们如何形成心理模型。
德雷福斯模型的五个阶段说明了从新手到专家过程中最重要的变化
资料来源:《实用思考与学习:重构你的湿件》,作者:Andy Hunt
软件工程专业知识的七个阶段。这是Meilir Page-Jones对软件工程专业知识进行分类的另一种方法。这一分类将专业知识分为七个阶段,并将生产力作为关键标准。尽管在90年代最初用于评估软件工程,但这种方法可以很容易地重新应用到我们的现实中。
效率曲线
来源:Meilir Page-Jones的《软件工程专业知识的七个阶段》
程序员能力矩阵。这个程序员技能集矩阵是由Sijin Joseph开发的,他是一位在设计和构建软件产品方面拥有超过15年经验的技术领导者。矩阵有一个三级结构,这与初级-中级-高级角色分布相关。这个矩阵还包括0级,在我们看来,这相当于一个培训生级别的软件工程师。在描述每个资历级别的技术知识期望时,我们将引用这个来源。
实习(Trainee):刚从学校毕业一些公司有实习项目,他们招收基本只有理论知识、没有工作经验的初级工程师。在这种情况下,初学者的职称将是见习生。
根据Meilir Page-Jones的经验,我们将开发者职业生涯的早期阶段分为三个阶段:天真、暴露和学徒(Innocent Exposed and Apprentice)。
最初,工程师很少接触到真正的开发。公开的开发人员向以专业的方式编码迈出了第一步。最后,一个学徒已经基本具备了处理实际项目的能力。
谈到技术知识,受训人员主要局限于使用IDE作为文本编辑器进行编码,而没有利用IDE的附加功能。他们很少处理API,经常需要查阅文档。除了他们所擅长的核心平台之外,学员们对任何框架都不熟悉,对数据库也只有一个模糊的概念。
初级开发人员:通过试验和错误作为一名初级开发者,你很难迈出第一步,因为他们经常来来往往。为了降低合同成本,雇主倾向于以自由职业者或短期合同的形式雇佣初级开发者。
尽管如此,初级员工的王牌是激励和活力,而许多高级员工已经不具备了。年轻的人知道他们付出的努力会得到回报,因为他们能更快地进入下一个阶段。
替代方法。参照Dreyfus模型,我们可以将初级阶段分为新手和高级初学者两个阶段。
为了让游戏顺利进行,新手开发者需要通用的与上下文无关的规则。他们没有耐心,想要立竿见影的效果。同时,错误也会使他们瘫痪,因为他们不知道如何处理错误。
高级初学者从遵循固定的规则开始,根据他们处理过的类似情况制定出一般的原则。主要的问题是,他们忽略了更大的背景,也许认为它无关紧要。
使用Meilir Page-Jones的分级,我们可以指一个初级执业者。当开发人员开始通过试验和错误采用新技术并将其应用于公司项目时,他们的生产力就会充分提高。
初级技术技能和职责 初级开发者的团队合作和视角 中级开发人员:编程世界的主力拥有3年以上经验的初级开发者可以利用自己的技能成为中级专家。中级开发人员有时被称为“编程世界的主力”,他们用例程代码提供了最具影响力的功能。
替代方法。德雷福斯模型将中间开发者描述为称职的。在这个阶段,它们还可以很好地进行故障排除和调试工作。
有能力的程序员有高度的主动性和足智多谋。他们在团队中扮演领导角色,并能指导新手。然而,有能力的开发者仍然缺乏经验,无法在项目中优先考虑他们所关注的焦点,他们几乎无法反思自己的错误。
根据专业知识的七个阶段,我们可以认为中级开发人员是熟练工。他们努力磨练自己的技能,提高生产力。熟练工的能力足以成为软件工程建议的来源。
中级开发者技术技能和职责 中级开发者的团队合作和视角 达克效应许多中级开发者都受到了达克效应的影响,这阻碍了他们职业生涯的进一步发展。这种心理现象描述了掌握一点知识实际上是多么危险的事情。因为自信,开发人员可能会高估他们的技能,这阻碍了他们的进步。也就是说,这种情况是软件开发中的一个大问题。虽然这种认知偏差可能发生在各个级别的员工身上,但中层员工最容易受到这种偏差的影响。
事实上,许多工程师无法描绘出比他们目前正在实施的方法和实践更好的方法和实践。有过一系列失败项目的程序员可能会屈服于这样的信念:一个项目通常都是一场噩梦。
在相反的情况下,有时软件工程师可能会意识到他们知道的很少,还有很多东西需要学习。这就是程序员开始向更高级别过渡的时候。
Dunning-Kruger效应对开发者的影响取决于他们的资历和知识。
为了减少不准确的自我评估对技能获取和整体职业发展的影响,开发人员应该通过扩展他们的知识领域和从业务的不同部分收集反馈来不断提高他们的能力水平。他们应该总是找时间反思自己的进步,得出正确的结论。
高级开发人员:问题解决者拥有深厚专业知识和详尽经验的开发人员可以指导他们的同事,他们被称为资深人员。此外,高级开发人员在他们所支持的业务领域也有丰富的知识。他们的能力甚至可以扩大,以帮助市场营销和整体业务发展。高级开发人员总是会考虑他们所做的工作给业务带来了多少好处。
简而言之,他们的工作就是为问题提供最好的解决方案。实际上,一个高年级开发作者正在试图预见问题并在它发生之前解决它。作为一个问题解决者,senior必须提前考虑到系统的瓶颈,并时刻记住工具使用不当造成的漏洞和问题。
在领导一个项目时,一个资深的人会根据该领域的最佳实践知识做出合理的关于软件设计和实现的决策。
替代方法。根据Dreyfus模型,资历可分为熟练(初级专家)和专家两个阶段。
熟练的程序员会取得重大突破——他们能够反思自己的工作表现,分析错误,并从中吸取教训,得出正确的结论。通过利用反射和反馈,熟练的开发者可以显著提高自己的表现。这种方法是敏捷项目管理的核心。
现在开发人员知道上下文是成为专家的关键。因此,他们不是严格遵守规则,而是实现各种方法来调整它们以适应特定的环境。
专家是德雷福斯模型中最高级的。根据安迪·亨特的说法,一个人可以通过超过10年的艰苦而坚定的练习达到这个目标。因此,专家是一种罕见的物种。这些高级开发人员已经将他们的专业知识转化为直觉。
专家们从他们对不同角色、技术和情况的广泛经验中直观地了解最佳实践。
就软件工程专业知识的七个阶段而言,这个层次有两个阶段:硕士阶段和研究员阶段。
- 硕士是一名熟练的技术人员和优秀的教师,有深厚的方法论基础。更重要的是,该开发人员了解产品背后的业务价值。
- 研究员是高级开发人员,从一个特定的项目转向一般的方法研究。研究人员追踪软件工程技术中的缺陷并加以改进。他们也寻求新的问题,以找到解决这些问题的方法。
独立工作高级开发者是提供指导的人。 团队合作高级开发者把团队放在第一位,总是试图找出他们能做什么来帮助成员。他们有良好的软技能,同时在客户和团队之间保持平衡。 愿景高级开发者看到了最终的目标——完成的应用程序必须解决的问题。长期愿景是为最终用户带来价值的关键。
高级开发人员之后是什么?高级开发者是晋升阶梯上的一个很好的起点。一些高级开发者想要进入更多的技术岗位,另一些则更喜欢管理岗位。以下是一些高级开发者可以考虑转岗的选择。
- 架构师。这是技术职业阶梯上的最高级别。架构师的工作是设计将由高级和初级开发人员组成的团队实现的复杂系统。根据业务问题的重点,有企业架构师、技术架构师和解决方案架构师。你可以在我们专门的文章中了解更多。
- 产品经理。一个有编码经验的产品经理将更容易领导产品交付。从内部了解开发过程,他们将能够更有效地管理产品工作。
- 高级领导人。高级领导的工作与编程几乎没有关系,而全是与人打交道的技能:激励、激励、领导和制定战略。在做出决定公司方向的高层决策时,高级领导要确保所有员工都遵循这些决策,并相信公司的使命。
在定义开发人员的资历级别时,重要的是要考虑以下显著影响级别的可变因素。
- 技术堆栈。在机器学习方面,一个人可以成为专家,但在web开发方面只能保持中级水平。与此同时,开发人员甚至可以在许多其他领域成为初级开发人员。
- 项目。一个项目可以水平扩展,也可以垂直扩展,这需要不同的技能和专业知识。
- 组织。招聘组织的特点也应该考虑在内。考虑公司的规模和他们为候选人设定的个人要求。小型企业通常会寻找拥有更广泛技能和职责的专家。例如,小型企业的工程师可以同时负责产品开发和部署。相比之下,一个更大的组织可能需要高度专业化的专业知识,比如DevOps生命周期的特定阶段的工程师,他们将使用特定的自动化工具。
此外,每个组织对这些术语都有自己的含义。因此,根据工作场所的不同,两个高级程序员可能是非常不同的。《卫报》数字开发团队的高级开发经理Robert Rees对此评论道:“在招聘时,我们需要向自己和组织外的人解释什么是高级开发人员。有时候,我们也有一项困难的工作,就是向那些目前拥有“高级开发者”头衔的人解释为什么我们不认为他们是《卫报》的高级开发者。”
关于为您的项目选择具有正确专业知识的开发人员的技巧与就业有关的一个重要问题是这项或那项任务需要什么专业知识。如果您对能够满足您的项目的能力水平只有一个抽象的概念,那么雇用一个开发人员通常会很乏味。以下是一些有用的建议,可以帮助你在招聘过程中找到正确的选择。
有一个清晰的项目目标,并对实现该目标所需的专业知识水平有一个基本的了解。
考虑你可以支配的时间和预算。虽然初级员工需要更多的时间进行培训,但高级员工不需要太多的提升,并且会立即开始做出贡献。然而,雇用这样的员工要贵得多。
关注团队和组织人才构成。从第一天起就让高级开发人员担任领导角色是组织工作流程的必要条件,因为只有高级开发人员才完全有资格为项目选择合适的技术和平台。
停止根据职位招聘。拥有头衔与拥有在工作岗位上取得成功的技能和能力是不同的。一个人在成为高级开发者的过程中所积累的经验比获得的游戏更重要。因此,为了保持现有的角色有意义,我们必须抵制头衔膨胀。
由【超级程序员】编译,全网同号。
本文:http://jiagoushi.pro/node/1458