如何培养一个高级软件工程师?

大多数公司组织必须回答这个问题:“怎样才能让一个普通软件开发人员成为高级开发人员?”这是一个具有挑战性的问题,因为它是非常主观的。 搜索互联网上的答案,你会得到很多不同的答案。 也包含主观的标准,这增加了问题的额外难度。

使得这个问题变得更难回答则是一些公司并不真正关心。高级职称伸手即来,需要用的时候发出招聘即可。

“哦,其他公司给你增加20%的薪水? 我们则会给您一个高级职称! “。

一个公司也许能够通过提高应聘者的职称而无需大幅加薪。

“我们不能给你太多,你看到这个行业发展太快! “。

这与那些真正关心并且拥有高级开发人员的高标准公司形成对比,这些公司只是追求名头上的高级工程师。

由此可见,如何解决怎样培养一个高级软件开发人员变成了一个挑战。

有“这个人做了很好的工作! 值得推荐“的方法。 其实这种想法很容易想到,因为它很简单。 只要跟着你的直觉就可以。 问题是这种方法可能倾向于偏袒。

“这个人很有趣随和! 他们的工作也真的很棒。 值得晋升“。

即使没有厚此薄彼,这种做法可能会导致偏袒的表象。可能有其他人认为他们与这位开发者一样好,也应该获得晋升。 只是不幸运而已,最终打击其他人的积极性。如果你够幸运,领导层会来和你谈谈为什么你没有得到晋升。在这一点上,必须有一个比“哦,你还不够好"更好的答案。

让我们通过创建一个清单细化。

有一个标准清单看起来很容易回答为什么一个人得到一个晋升,但另一个没有。它还为那些想要获得提升的人提供了一张职业升迁指南。

但是清单有很多问题。 第一个是:如果你构建一个任务清单, 你会只有2-3个条目吗?

当我们开始建立一个清单,如果我们的清单只有2-3个项目,我们觉得需要内容填满它。因为一个简短的清单是一个看上去不太好的清单。 ,我们将开始试图找一些无关紧要的评估项目以使我们的评估清单看起来更丰富。这可能导致错误的激励。

检查清单的另一个问题是,如果您有高级开发人员的可量化指标,他们才能工作得很好。 其实并没有良好的可量化的措施来评价一个好的开发人员。 依据编写的代码行是否工作? 修复的bug数量也不起作用。 工作时间长短绝对不能作为量化指标。 衡量一个好的开发者的每一个度量是定性的,这使得这些度量都是主观的。这使得清单并没有比跟随你的内心更好。事实上,它实际上更糟糕,因为清单会耗费人们时间来构建它并试图跟随它的人中产生开销。也不会为公司带来价值。

我曾经很高兴地在我的团队中争取推荐了一个开发人员。我这样做的原因是因为我注意到,有一天由于某种原因,我的工作压力很少。 这是因为我有一个更轻的工作量。我没有像以前一样仔细审查代码。我不需要像以前那样批准那么多的决定。我不需要处理我的团队的工作导致的许多问题,因为这些我曾经做过。

我不需要做这些事情,因为这个开发人员显着提高了他的能力。他的代码质量高得多。其他开发人员对其代码的评价也好多了。 我只需要审核他尚未审核的pull请求,而不是查看每个pull请求。 最重要的是,如果我不在,他会推进项目。当然,他仍然会与我确认的事情,如果可能的话,但缺乏我的批准不会阻止他取得进步。

有一段时间,如果我度假,很少做事。我发现这个开发人员已经成为一个高级开发人员,至少在能力上胜任,只是名头职称还没有正式给予。

对我来说,什么时候发现一个高级开发人员:当你可以信任他们,可以完成没有你在场的事情时。

这个标准仍然是非常主观的,非常类似于跟随你的直觉的方法。我可以说,它至少比下面这些评价客观:“这是一个好的代码审查”或“该项目处理得很好”,这些观点仍然是非常主观的。你存在偏袒的看法。

Professor Beekums: What Makes A Senior Software De