天下网吧 >> 网吧系统 >> 系统动态 >> 正文

怎样才能叫高级程序员?

2016-8-23不详佚名
人可以给其他人提供多少指导?”但正像我们的员工指出来的,如果到此为止的话,还会有非常多令人困惑的地方。

怎样才能叫高级程序员?

那我们该怎样定义一位候选人到底能把他的本职工作做得多好?我们怎样能把评判标准引向一些具体的方面,而千万不要变成数学公式?

我们最终按照候选人要做的事总结出了三方面:技术能力、领导力和交际能力,并细化提炼出了12个特质。我将在下一篇文章中详细阐述这12个特质,但现在我可以简单说说。

三大方面

· 技术能力(Technical capability):技术能力强的人通常都对技术有浓厚兴趣,他们会不断钻研决不放弃,最终会做出可供经验不足的工程师使用、维护和学习的解决方案

· 领导力(Leadership):有领导力的人知道怎样为自己及别人发展并保持一种目的感。他们会指出公司里及自己职业生涯中出现的问题,并且揽到自己身上最终解决掉。

· 交际能力(Community/Connectedness):交际能力强的人非常希望自己成为一个大集体中的一员,有非常强的奉献意识,身上有别人(同事、客户等)无法轻易描述的个人魅力,并且存在感非常强,生活充实快乐。

“对文化的适应能力”怎么样

我们最初差点把交际能力叫做“对文化的适应能力”了,但我非常怀疑这个定义实际上是个扼杀思想的陈词滥调。“对文化的适应能力”就是一个万金油,所有你想在程序员身上见到的可你又说不出来的东西都可以用它往上套,而且这里面也非常容易藏入偏见。

当我们定义好了可以让Frontside的文化一致的标准之后,上面的观点就定义成了交际能力。

在三个不同方面衡量资质

还记得那三个方面吗?技术能力、领导力和交际能力,每个方面都有自己的从初级到高级的发展路线。

现在人们换职业都不是什么新鲜事了。很容易见到那些有很强领导力和交际能力但刚参加完代码训练营的人,他们的技术水平就只能被认为是一般。相反,一个经验丰富又受过正规培训的技术人员却有可能缺乏领导力和交际能力。

很少有人真的能在三方面都能达到高级水平,事实上也很少有人真的想在三方面都成为高级。我们Frontside把资质定义为这些方面的混合体,并努力帮助人们在他们想提高的方面获得进步。

证据:唯一能得到的衡量依据

衡量每个方面的资质都需要证据。如果你已经做了一些工作,那你手上应该已经有了一些证据。

我们将在下一篇文章中讨论这12个特质,每一个都有详细的标准,可以让候选人提供证据来说明他们经过时间的积累的确具有这些特质并且经验丰富。

但总的来说,如果在某个方面有一两项特别擅长和精通的特质的话,就可以认为他在那个方面是高级了。

比方说,假如某个人告诉你他的代码用好几种语言实现过,那在“技术好奇心”这个特质上就可以得高分了。如果他还会非常严谨的为项目的核心代码写出全面、高质量的测试用例并用于持续集成,你就差不多可以认为他在技术能力上达到了高级水平。

或者如果某个人经常辅导别人、组织聚会,或者会做一些让大家过得更轻松的事,那我们就差不多可以在交际能力这方面给他打高分。

如果某个人曾经带过几个团队,那他就应该已经掌握了带团队的技巧。再加上挖掘问题根本原因的能力,那你就可以认为他在领导力的方向上达到高级了。

我们怎么定义“高级”

我们的衡量标准是如果某个人在技术能力上达到高级水平,他在领导力或交际能力中有一方面也能达到高级水平,我们就认为他是高级程序员了。如果他还想继续提高剩下的一方面,我们愿意提供帮助。

如果他是在领导力和交际能力都能达到高级水平,在技术方面能属于中高级的话,我们也认为是高级程序员。

举个一年前发生过的真实例子,我们雇佣了一个初级程序员,因为据我们评估,起码在最初的六个月中他需要非常多的指导。

到了第六个月,他的技术水平就已经达到中级了。到第一年结束时他就已经达到了高级水平。我敢这么说的原因是我们知道如果他离职,我们需要雇佣一个高级程序员来顶替他。

这样的事情为什么能发生?因为他是在我们公司起步的,而当时他已经在交际能力和领导力方面都可以达到高级水平了。所以他要在我们团队中做高级程序员的工作只是需要提高技术能力而已。

只看技术水平并不够

对于技术水平高但在领导力和交际能力方面都缺乏经验的人,不能直说“在我们这里你达不到高级程序员的标准”,这话太刺耳了。但对于他在团队中能承担的责任来说,我们可以暂时评订为中级,等他把另一方面或者两方面都提高了之后,我们再把他提升为高级。

很多公司只根据技术水平来做判断,但这样对于我们这种小型的而且非常依赖合作模式工作的公司来说行不通。其实我非常担心那些只衡量技术能力的公司是认可“孤独的天才开发者”这样的危险想法的,觉得一个人技术水平高,就想当然的认为领导力和交际能力也很好。

在大公司中每个人都只负责一小部分工作,我非常乐于见到他们分享对于“高级程序员”的定义,那应该会在技术和非技术的方面都更加全面,让我们工作得效率更高,尤其是在需要与客户打交道的团队里。

成为高级需要多久?

“高级程序员”是不是就意味着“若干年的经验”?事实上我并没有看到过哪个人不用五年就可以成为高级程序员的。要在很短的时间内就把一些特质发展得非常好来在某一方面达到高级水平其实是非常困难、甚至不可能的,更别说在多个方面全部成为高级了。

而且“五年经验”并不一定要意味着“五年的软件开发经验”。如果一个人已经在领导力和(或)交际能力上满足了条件,那他只需要提升技术能力,就已经可以发挥高级程序员的作用了。

我们招聘的“秘密武器”很大程度上源于我们观察到的事实:对于具有领导力和交际能力的人来说,要再提升技术能力并不需要很多时间,反之则不然。我见过很多这样的人,从代码集训营中出来两三年后就已经成了非常好的高级程序员。

告别直觉

定义“高级”是一个仍在进行中的而且出乎人意料困难的过程,但我们还是要做这件事,因为它对我们非常重要。如果不能给“高级程序员”下一个清晰的定义,我们就迷失了培养员工的方向,就没有具体的办法来衡量要加入我们团队的人,也没有办法让员工相信我们可以信赖,更没办法来改进流程。

这个行业已经应该告别“我一见到这个人我就知道他是个高级程序员”这样下结论的年代了,我们该向着一些我们可以定义和分享的东西努力。让我们一起把开源的思路带到我们雇佣和发展员工上吧。

本文来源:不详 作者:佚名

声明
声明:本站所发表的文章、评论及图片仅代表作者本人观点,与本站立场无关。若文章侵犯了您的相关权益,请及时与我们联系,我们会及时处理,感谢您对本站的支持!联系Email:support@txwb.com,系统开号,技术支持,服务联系QQ:1175525021本站所有有注明来源为天下网吧或天下网吧论坛的原创作品,各位转载时请注明来源链接!
天下网吧·网吧天下