it-swarm.cn

您什么时候应该称自己为高级开发人员?

可能重复:
入门级/小/高级开发人员之间有什么区别?

我很好奇高级开发人员的含义,因为该定义显然并不符合我的预期。我一直在看到这些22至23岁的青少年,他们自称为高级X开发人员或高级Y开发人员。对我而言,大四必须具有10年左右的编程经验,才能称自己为“大四”。我在这里看到了很多这样的青少年(因此提出了问题)。我错了吗?为什么?

298
Kev

在以下情况下,您可以称自己为长者:

  • 您可以处理整个软件开发生命周期,从头到尾
  • 您领导他人,或其他人寻求指导。
  • 您可以自行管理项目

与其他领域不同,软件开发是一种好奇的生物。

有时,刚从大学毕业的朋克乐队可以在拥有20多年“经验”的退伍军人周围跑来跑去。编程是一个奇异的世界,其中代码为王

有些在2年或更短的时间内达到上述目标,另一些则需要10年。

433
Darknight

当我听到“高级开发人员”时,我想到的是精通编程的人。我想到一个可以设计,编码和测试系统的人。他们可以讨论系统架构或组件设计。他们了解并使用设计模式。此人可以预见性能瓶颈,但不知道要进行预优化。该人员将在适当时利用异步编程,排队,缓存,日志记录,安全性和持久性。当被询问时,他们可以详细说明他们的选择以及利弊。在大多数情况下,他们已经掌握了面向对象的编程和设计,但这并不是绝对的其他语言,例如Javascript,F#,Scheme是强大的并且不是面向对象的。他们善于风险管理,最重要的是,他们可以与同事交流之前提到的内容。

什么是精通?有一个普遍接受的想法,就是要掌握任何一项技能,人体和心灵都要花费10,000个小时的重复才能掌握和内化一项技能。这在Malcolm GladWell的书 (Outliers )中有详细介绍。当原始作者谈论精通某个领域时,他指的是达到竞争激烈的领域的顶峰将花费10,000小时。

Malcolm GladWell的异常值的一些示例是:

Mozart他21岁的时候就创作了第一把协奏曲,乍一看似乎很年轻,但是他从11岁起就开始创作音乐。

甲壳虫乐队最初是被回避的。他们被告知他们没有芥末酱,应该考虑其他工作方式。他们在德国呆了3年,在不同的场地玩了1200次,每次时长为5到8个小时。他们重新崛起为我们今天所熟知和喜爱的甲壳虫乐队。

最后,20岁的比尔·盖茨从哈佛退学,创立了微软。在某些人看来,这似乎是愚蠢的,但考虑到他20岁时就花了将近一半的年轻编程生涯。 1975年,全世界大概只有50个人有他的经历。他的经验使他具有预见微软未来的远见。

彼得·诺维格(Peter Norvig)在他的论文“ 十年内自学编程 ”中还讨论了10,000小时规则。

在乔治·伦纳德(George Leonard)的《 Mastery 》一书中,详细介绍了如何掌握一项技能。必须一遍又一遍地练习这项技能。重复次数越多,您就越会意识到每次重复的差异。只有有了这种洞察力,您才能变得更好。

软件行业的头衔(初级,中级和高级)在各个组织之间都是误导性的,并且不一致。我曾与多家公司合作,这些公司将高级开发人员定义为具有5年或以上经验的人员。没有提到体验的质量,只是他们坐在计算机前五年了。在与这些人一起工作时,他们中的许多人还没有掌握面向对象的编程,但是他们被认为是高级开发人员。

必须有一种更好,更客观的方法来衡量软件工程师的技能水平。 John Haugeland 发布了计算机程序员的技能表。这是一种衡量 程序员的技能水平 的客观方法,否则会给人以直觉的感觉。

在查看软件工程师时,我会看到4级技能:发光,高级,中级和初级。

Luminary(10+ years)是一位熟练掌握技能并着手改善各自学科的人。一些示例包括: Ted Neward鲍勃·马丁叔叔 ,Donald Knuth, Oren EiniPeter Norvig ,Linus Torvalds 。灯具会根据您的技能而变化。

资深(7至10年以上,第3级)是过去10,000小时以特定类型编程的人。对设计模式有深入的了解,并在适当时利用异步编程,排队,缓存,日志记录,安全性和持久性。

老年人很可能永远不会到达Luminary。发光器经常被发现说话和书写。他们正在积极尝试影响自己的纪律。

中级(4至6年,级别2)是了解日常编程的人。他们独立工作并创建可靠的解决方案。但是,他们还没有创建或维护大型或复杂系统的经验。通常,中级开发人员非常擅长组件级开发。

初中(1至3年,Level 1)是一位了解编程基础的人。他们要么拥有软件工程或计算机科学学位,要么是自学成才。他们的代码不断被审查。给出了有关算法,可维护性和结构的指导。

243
Chuck Conway

“什么时候应该称自己为高级开发人员?”-当我开始指导初级开发人员时。

111
duros

我注意到了同样的趋势。前几天的问题之一是关于一位具有2-3年从业经验的高级开发人员的经验。

您可以将橡子树称为树,但这不会改变它的样子。

唯一合乎逻辑的结论是,“高级”还具有其他含义:

  • 相对等级,例如“刚大学毕业的那个家伙”
  • 西班牙语拼写不好的人,即他们打算放下塞纳尔语
  • 南部拼写,例如“高级臀部裂纹,拉起裤子”

这些天,这只是一个职位,可能不会说出相对的行业经验。

23
Steven A. Lowe

你错过了重点。

上级没有任何意义。少年没有任何意义。标题没有任何意义。我的头衔-副业务系统总监。我的职责是-管理所有IT事务,从内部软件开发到基础架构,安全性再到客户网站。我的软件开发经验-自学。我的网络经验-自学成才。我在IT领域的整体能力-比您还差。

我的管理和指挥能力-值得商,,但我的性格和个性使我胜任并成功。

头衔并不意味着能力和努力就意味着一切。我不是最好的-并且相信这样做会很自大。

忘记标题的困扰,证明自己的价值!

21
Steve

我认为 最好的答案是由Darknight给出的

我觉得有必要指出以下几点。

2-3年的编程经验(一起工作+个人工作)不足以使一个人看到足够数量的项目并处理足够多的问题。只是行不通。您需要时间让事情转瞬即逝,反思您的经历,并在思维上迈向更高层次的思考。不会在一夜之间发生。

我想说,经过5-7年的实践(再次致力于+个人合作),奇迹不会出现。人们可能在某些语言和框架上有很多经验,但是还没有跳到新的思维水平。

另一件事是个人的整体成熟度。我认为它最早接近30年。在此之前,我们的大脑可能以更高的时钟速率工作,但它会处理垃圾,因为它在内存中缺少足够的数据来查看大图。我们的一般生活经验为我们的思维和工作方式增添了一些微妙而真实的东西,因此编程也成为另一种工作。

我对长者的个人接受:至少27岁。至少有7年的工作经验。在此之前,我个人会对此表示怀疑(但仍然持开放态度,这只会给我带来更多证据)。

19
user8685

最近,Martin Fowler发表了一篇不错的博客文章。我从中拿走的东西是:

  • 它与您为某人工作了多长时间无关。您工作了三年,成为了高级开发人员。六年后会怎样?您会成为资深的高级开发人员吗?

  • 高级开发人员不会看不起您,也不会认为自己比您强。那很重要一旦让自我受阻,就会有麻烦了。

  • 高级开发人员不会对此负责。他们预见到问题,并以积极的方式解决它们。

  • 人们想与高级开发人员合作。这对我来说是关键。我希望人们与我一起工作,并且希望他们喜欢与我一起工作。

  • 高级开发人员不是最聪明的工程师。他们无法解决最复杂的问题。他们的技能不仅仅与编程有关。他们的沟通技巧也同样重要。

  • 高级开发人员擅长估算。

  • 高级开发人员始终关心他们的工作。他们了解到,无聊的任务必须以与其他任何可能更有趣的任务相同的质量完成。

仅作说明

我认为上面列出的技能是除了基本的软件工程技能和实践之外,优秀的高级软件工程师还应该具备的技能。

14
CodeART

当您指导了很多人,并且在最初与您不同意后的几年后,对此最感谢您时,请随时在您可以命令的任何标题后加上“ Senior”。

在此之前,“领导”可能是一个更具描述性的术语。

对我而言,“高级”一词表示与人交往时的实践经验和智慧的结晶。请考虑以下情况:

团队中有16位程序员,每位程序员比其他团队多拥有1年的丰富经验。这意味着,第16位程序员拥有16年以上的经验。当一辆公共汽车猛撞到一家商店时,八名最有经验的成员被惨死。现在有一半经验的人会被视为高级开发人员吗?我不希望,我希望公司迅速用比他们失去的同等或更多才干的人来代替这些空缺。

我不喜欢将术语“ journeyman ”带入编程中,但是其中一些适用。我不将“高级”一词传递给经验不足15年的任何人,因为它超出了技术知识的范围。

13
Tim Post

我发现这个“初级/高级开发人员”标题是错误的并且具有误导性,因为没有真正的度量单位。我们都是拥有较少或更多实际经验的软件开发人员。不要试图为软件开发人员创建层次结构,这毫无意义,而且可能会损害主要关注点:一个优秀的软件开发团队。

7
Claudiu Constantin

当您回顾以前的工作并意识到它是什么废话时。而且您了解自己已经变得越来越好,但是还有很多路要走,而且学习是永远的。

5
Bernard Dy

有时我会看其他职业,想知道为什么软件编程本身无法实现标准化。这个问题没有用,因为获得一定水平会有一个公认的标准。然后我意识到,“谁死了,让他们成为国王?”

我们都知道,经验,教育,证书和头衔对其他所有人来说都是对程序员能力的最基本的了解。您要么知道自己在做什么,要么不知道。您可以闻到自己的气味,也可以闻不到。

3
JeffO

“ WHAAAT。..单元测试!!!我是一名高级程序员……我不再需要测试我的代码了”

之前听说过..。因此,他让“初级”修复了错误并对其进行了测试。

“我们将聘请一名建筑师……不,不是X先生,我们想要一个更高级的人,一个不再编码的人”

面试后

  • 那么您熟悉哪些编程语言?

  • ahem ...我曾经使用过COBOL和FORTRAN,但现在大多使用MS Word,Excel和PowerPoint。

  • 太好了...什么时候可以开始?

真正的高级只是一个视角问题,就像史蒂文所说的标题一样。但是,我希望我可以说,最后编写的代码很重要,但是不幸的是,在很多情况下,西装和领带的影响更大,尤其是当您不再由具体成就(代码)来衡量时,而是如何好吧,您可以说服您的重要性层次结构。

3
Newtopian

当其他人致电给您高级开发人员时。没有一个定义。它随着公司的变化而变化。在一家条件良好的公司中,新生的工作量减少了,学习曲线很慢。在初创公司中,新生可以承担很多责任,并可以在更短的时间内学到很多东西。我已经亲身体验了这一手。不幸的是,只有其他有经验的人才能通过查看代码或工作的质量来计算您的知识深度。而且我敢肯定,时间到了,每个人都会获得他们的头衔。
如果您不这样做,则可以更改公司。 :-)

2
Manoj R

和许多其他标题一样,这是一个标题。这里的这些“青少年”甚至可能拥有博士学位,这并不一定意味着什么。但这显然会给他们带来更高的薪水。同样适用于高级开发人员或高级架构师。或高级项目经理等.

考虑到这一事实,最好是由您的同事称为“我们的高级开发人员”,而不是在多年的经验之后将其标题添加到您自己的卡中-我有机会时就这样做了。 :-)

除此之外,我想说10年是最短的时间(包括大学或其他学历)。

2
Lukas Eder

我最近看到一些工作,正在寻找经验不足一年的CS毕业生。即使只是标题,这对我来说似乎还是疯狂。首先,它暗示了标题的淡化。我敢肯定,在这些帖子中看到的两家公司还有其他“超高级”头衔来代表真正的前辈。我认为这不是一个糟糕的招聘策略。头衔并不能代表一切,但在两项工作之间,其他所有条件都是平等的,我可能会拿一个拥有“首席首席开发人员”头衔的职位。

尽管很难确定“首席首席开发人员”(或任何高级职位,“高级”或其他职位)的合理性。我认为量化它不会太客观。粗略地讲,如果他们通常是会议室中最好的,并且会议室中至少包含8名专业开发人员,则应该说他们是高级的。这表明,老年人至少要处于第87个百分点。尽管我会说这些开发人员可能是经验最丰富的开发人员,但我绝对不会说经验==“高级”甚至亲密。同时,虽然我怀疑真正的7岁以下或8岁以下的年长者的数量必须非常少,但对于少于7岁或8岁以下的人来说,成为大师并非不可能。

当我22岁时,我当然属于“不太可能成为大师级”。尽管我处于“一年经验的10(或30)年”类型中,并且确实很想让自己变得更好,但我还是想起那些人,即使他们在工作中付出了零的努力。经过数十年的学习,通过纯粹的渗透,在各种学科上仍然比我获得了更多的知识。对于他们整个项目生命周期,我根本无法对他们了解的多。我与一个比我大的人一起工作!真正认为我比他更了解维护该范围的项目对我来说是很冒昧的。

要记住的另一件事是,如果您在22岁时开始称自己为高年级,那么32岁时您会变成什么样?假设您已经处于高层,对您的未来会有些不利。许多人会根据10,000小时的规则来确定某人何时是专家。在马尔科姆·格拉德威尔(Malcom Gladwell)提出建议的书中,很明显专家不仅是最好的专家,而且还发挥着一定的作用。新手无论如何都不是最糟糕的,但是它比方法更能说明方法。新手可以很快学到古怪的东西,但是在做一些最常见的东西时通常会遇到麻烦,就像专家一样快。专家可以以极高的精确度和速度来完成日常工作,并且知道要寻找的东西可能表示有问题,但常常难以对变化做出反应或学习超出其舒适范围的东西。考虑到这一点,我什至不想成为专家。我想尽可能地吸收尽可能多的新信息,直到能够进入稳定的域为止。

2
Morgan Herlocker

它可能与金钱有关。

一些公司遵循固定的薪酬计划。由于某些给定的规则,它们无法将您置于“开发人员”阶梯的中间。但是它们会使您陷入“高级开发人员”阶梯的底部。

就个人而言,我发现一个人刚从大学毕业就获得了高级头衔却很奇怪,但另一方面,谁在乎呢?我已经成为“开发人员”已有十多年了,即使我现在更换工作场所时获得了“高级”头衔,这也没有任何意义。我仍然是新领域的新生-至少有一段时间...

2
Vegar

第一次基于至少一个面试环节获得工作,而这次面试本质上不是“经典技术面试”(即,谈论架构,概念,设计,公司观点,经验等)。

我的经验(有限)是,初级开发人员通常是完全根据标准面试问题的表现而聘用的,而高级开发人员通常是基于各种其他互动而雇用的。

1
Uri

10年 ??你一定在开玩笑。好的,您如何定义10年?假设有人15岁开始编程,但25岁成为专业人士?

这个行业不是那样运作的。我认为不同的公司会让人们在5-8年之间的任何时候称他们为X或Y高级。本组织的许多资历并不单单具有能力,这与个人所采取的主动性以及他愿意分享的职责有很大关系。大多数时候,具有合理技能和强烈动机的人会成为高级专业人士。

顺便说一句22岁不是青少年;-)

1
Geek