赞
踩
软件工程和所有职业一样,也有等级之分,正如我们所知道的那样,它是基于经验,技术和领导力进行的区分,如果你正在阅读这篇文章,你可能还不清楚它们的界限在哪里。例如,初级开发人员和高级开发人员,或者初级开发人员和入门级开发人员,而且当公司有自己的标准来判断开发人员级别的时候,就更加模糊。
随着你在事业上的进步,你会到达一个你想要跳跃到下一个阶段的地步。在每个阶段我们都有自己的期望,技能要求和工资要求。我将尽力根据刚才提到的标准对每个级别进行细分:入门、初级、高级和技术领导。本文不是真理,但希望它能引导你走上正确的方向和正确的成长道路。
让我们开始行动吧!
我要直接说出来,这可能会是你职业生涯中最困难的阶段!对每个人(包括我在内)来说,迈出第一步并不容易。我们有着不同的教育背景,不同的国籍,这些影响了我们的工作机会。例如,从培训机构出来的人和拥有大学学位去实习,是不一样的。
找工作一开始会让人气馁,但是别担心,我们都经历过,只要有勇气和毅力,你就能找到第一份工作,如果你正处于这个阶段,正在苦苦挣扎,那就稍微降低一点你的期望值,试着去实习或创业---尽快把技能付诸实践,并开始投资自己。
在大多数情况下,你会非常依赖你的团队和导师来指导你,帮助你成长。此时可能会有一点冒名顶替感,但把它放在一边吧,你的公司和团队并不期望你知道一切。他们可能知道,你的大部分时间将用于提问和学习。
很多入门级工程师的职责是学习他们将要工作的开发环境,学习团队的工作流程,当你跟上速度时,你会被要求加入代码仓库,去补充一些次要问题。
在你完成的功能和BUG修复的整个迭代过程中,你将学习到软件开发的生命周期是如何运行的,以及你们的项目是如何运行的。不同公司之间的软件开发生命周期往往非常相似。通常大多数公司的项目遵循需求->设计->业务->实施的结构。
你可能会和其他工程师在一起,有些人比你更有经验,级别更高。这些工程师,通常是更资深的工程师,将负责帮助你学习,并成为对团队有贡献的成员。把这当作一个向他们学习技能的机会,这将帮助你在职业生涯中取得进步。
深呼吸......记住初级工程师不会被期望 "一蹴而就",一个团队会指导你并帮助你成长。这句话你可能已经听过无数次了,但说真的,不要害怕问问题,这一点怎么强调都不为过,每个前辈曾经都是后辈。让自己漫无目的地在问题上挣扎,不会帮助你成长,你应该为你的问题设定时间,当你觉得被卡住时,就向外寻求帮助。
作为一名初级工程师,你可能是刚从大学毕业或培训机构毕业,而在当今这个时代,学位往往不能准确衡量一个人的能力,成为一名初级工程师,取决于你的技能和实际经验。
入门级工程师应该了解他们正在使用的技术的基本原理,以及它们的生态环境。深入理解是很重要的一部分,你应该对你所使用的软件栈中不同部分都有一点了解,这样能让你知道在哪里学习更多的知识和不知道的东西。
此外,你应该了解 git版本控制软件是如何工作的,如果你了解分支策略,还会加分。最后,如果你有 pull 请求/ merge请求的经验,是更好的,因为你将在团队中大量的使用它们。
你可能已经在 Glassdoor 或 LinkedIn 上搜索过了,它们会根据你的定位给你一个相当准确的范围。根据我的经验,你可能会选择6.5-7.5万美元之间的任何工作,但是,起薪将取决于教育程度、经验和技能。另外,美国的工资水平要高于欧洲或其他地方。这也会因你所从事的技术而有很大不同,所以一定要对你所在的地区、公司和技术做更具体的研究。
中级工程师介于初级和高级开发人员之间,作为一名中级工程师,你已经开始熟悉了一些技术,你不需要太多的帮助或指导,而且已经拥有多个项目的经验。
一个中级开发人员很可能有几年的经验和数小时的编码工作,这很难用数字表示,你甚至可能换过公司,在不同的项目代码库中工作。
中级工程师是已经工作了几年的工程师,或者已经有了第二层身份,公司会期望你对软件开发的生命周期有很好的理解,并且在大部分时间内能够在没有太多的指导下承担工作。并且工作上的问题完全可以澄清和解决。而且中级工程师往往不会为实现技术上的某个功能而纠结。
中级工程师的知识范围,将集中围绕他们支撑的应用程序和应用程序的整个流程上。这个级别的工程师能够接受一个复杂度较高的功能,并在合理的时间内完成它。
中级工程师还应该能够从零开始实现全新的特性,并将这些特性与代码库的其余部分集成在一起。此外,他们会有把某些功能拆分成组件的经验,以及具备如何处理技术问题的高级思想。
从初级工程师跳到中级工程师,一个很好的方法就是在一个项目上花费大量的时间,学习它是如何工作的,并且学习代码仓库的各个方面。投入大量的时间对代码库不同部分进行了解,有助于快速提高你的开发能力,编码编码编码。
与入门级一样,你需要了解更多你所从事的技术背后的深度知识。例如,如果工作中使用React,你应该更多的理解React背后的高级概念,并开始理解如何将一个UI元素分解成许多不同的部分来创建,如果你可以使它们在其它应用程序上复用,就可加分。
此外,你应该在这里开始了解行业趋势,了解新兴技术的最新情况。科技行业正在不断发展、改进,越来越多的解决方案可以解决旧问题。
在强调一遍,工资因公司和地点有所差异,例如,一个中级工程师至少有2-3年的工作经验,你的目标就是8-9万美元左右,不过 Fackbook 的薪水和初创公司的不同,但是你可以通过股权或额外的福利找到折中方案。
下一步,成为高级工程师!这绝对是一个非常激动人心的头衔,你将获得更大的自主权和市场价值(每个公司都想要一个熟练的高级开发人员,所以准备好迎接LinkedIn 私信的冲击吧)
高级工程师展示了专业知识,并在多个项目展示了自己的才能,还可以指导初级和中级开发人员。在这个角色中,你需要是一个多面手,所以在日常的工作中,要随时适应新情况和保持思维敏捷,你将成为领导者和导师,负责解决复杂软件问题,并充当所有知识来源(不要有压力)。
作为一名高级工程师,将开始与领导/经理一起设计新的系统,并估计整个项目所需的工作量。高级工程师还能够提出多种解决方案,理解每种方案的优缺点,最后,能阐明哪种解决方案最适合团队。高级工程师也可以适当减少参与编程的时间,而将更多时间用于指导、设计和管理工作。
高级工程师往往是项目经理、工程师和管理层之间的桥梁。通过了解应用程序所在的架构,以及即将进行的工作的复杂性,高级工程师可以帮助保持项目的正常运行,并在需要时提供支持。
这样导致高级工程师对团队其他成员的支持作用更强,能够在团队需要时填补空白,并解决其他工程师的难题。此外,高级工程师拥有丰富的经验和远见,能够看到团队成员在哪里可能遇到障碍,并主动消除它们。团队对高级工程师的信任很重要,因为其他团队成员会期待高级工程师解决他们解决不了的问题,并在这个过程中指导团队。
在团队之外,高级工程师也会在组织或企业内部找到改进的机会。他们会开始编写共享代码库,以便其他团队使用这些代码库。他们会寻找机会消除重复的工作,去除单调乏味的工作,提高团队的效率。也许某些团队正在重新造轮子,从而使团队之间有机会共享代码,以使工作流程更加简化,这些可能是含糊不清的高层次要求,但是一个高级工程师应该能够在没有指导的情况下,将这些模糊的情况缩落实到解决方案中。
由于这个角色的具备支持特性,软技能变得非常重要,需要知道如何与队友沟通,有礼貌地讨论具有挑战性的话题,并适时打断冲突。高级工程师需要在团队中建立人际关系和使用软技能,利用这些技能来帮助那些正在为某个问题苦苦挣扎的工程师。
在技术方面,高级工程师将精通项目中使用的技术,以及项目的整体架构。把设计模式、系统架构和性能提升策略当成习惯。在不了解你的专业的情况下,很难说得更具体,但我想你已经明白了!
在开发者的阶梯顶端,你将有最多的机会,并能够获得一个真正舒服的薪水。在美国,高级工程师的薪水应该在10万到11万美元之间,同样,这取决于你所在的城市和公司。
成为高级工程师后,下一个步骤是进入管理层。管理显然不适合所有人,但如果你在这个位置,让我们看看你能期待什么。
你将从个人贡献转变为管理人员和项目。这角色的编码量要小得多,因为作为一个经理,你将依靠团队来建立项目所需要的东西。
离开个人贡献(IC)并不适合所有人,由于工作节奏和风格的变化,一些高级工程师从来没有跳槽到管理层。经理和领导将开始更多地依赖他们的人际关系、关系、业务技能和以前的经验,来帮助他们在不同的项目上带领团队走向成功。
你需要领导你的团队,同样重要的是,你需要为你的团队代言。你的工作是使团队保持在项目持续交付的轨道上。这意味着你需要为团队提供新功能所需的资源,或消除阻碍他们完成任务的障碍。
这样意味着作为一个经理,你需要对公司的商业模式有很好的了解,这样才能知道当某些问题出现时该找谁谈。一个强大的管理者应该知道在解决团队的具体问题时应该联系和依靠谁。
除了项目方面,管理者也是一个角色,你有责任帮助团队成员,让他们对自己的角色感到满意,并给予他们成长的机会。你要帮助他们实现他们想要的目标,指导他们度过团队中的困境,甚至要处理团队成员之间的人际冲突。这也意味着你需要处理团队成员表现不佳的情况,并帮助他们回到正轨。管理岗位需要大量运用软技能。
在不同的组织中,管理层可能需要管理学学位或管理经验。很多时候,高级工程师可以进入管理岗位,因为他们对公司了解,并且公司了解他们的成功经验。无论公司对管理角色的要求如何,软技能都是极其重要的。
理解他人,与他人建立关系,在团队冲突和困难的谈话中,保持冷静和镇定是管理者的常态。对行业趋势的持续学习,对软技能的持续练习可以帮助管理者取得成功。
像其他的薪水范围一样,它也有所不同:)高级工程师和经理之间往往有重叠,起薪大约在11万美元到12万美元之间。
成为一名软件开发人员有许多不同的阶段。它起始于一个非常低调的环境,通过向他人学习来发展个人的开发技能。这也导致团队中大量的贡献者角色更加独立,在这里,他们可以被信任,并且在项目时间表内交付不同复杂度的软件功能。
经验可以引导开发人员指导其他人,找到提高效率的领域,并带领团队走向成功。在优秀的团队中,软件开发人员以相互支撑的方式帮助彼此学习、成长、挑战他人。在快节奏和不断变化的软件开发世界中,团队之间相互帮助,开发出优秀的产品,并不断创新。
原文标题:What’s the difference between a junior, mid-level, and senior developer?
原文链接:https://thenextweb.com/news/difference-between-junior-mid-level-senior-developer-syndication
51CTO 首发:初级、中级和高级开发人员之间有什么区别?-51CTO.COM
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。