很多企业在贴出招聘要求时,会着重写到:招聘高级程序员。然而下面的具体要求却不尽相同,大体上分为以下几种:
● 15年以上编程经验
● 2年编程经验,学习能力强
● 1年使用热门框架经验,且框架发布时间大于1年
● 一本技术书的作者
● 可默写某计算机科学的算法
● 写过开源库并在公司有所应用
其实,每个公司、每个人对高级程序员的定义都是不一样的,既然如此,为什么还要区分高级程序员呢?
老实说,“高级程序员”是一个主观性非常强的词,很多时候来自于人们的主观判断,跟上面的条条框框并没有太大关系。很多人在界定一个程序员的水平的时候,都是根据他在公司内部的作用确定。
始于责任
可能判断一个程序员的算不算的上高级,一个比较公平的标准就是:你的责任是什么、如何完成任务、完成任务需要哪些帮助。对此,我们可以以一家小公司为例:
● 公司规模很小,每个人都扮演着多重角色,每个项目都从头跟到尾,承担的责任也多。
● 依赖并打造内部社区的力量,以及参与的外部社区,尤其是开源界。
● 在技术目标和代码可维护性、可用性上追求极致。
因此,团队成员的责任要求就确定了:
● 可以为队友和客户提供清晰专业的技术和项目指导
● 可以在内部和更大的编程社区辅导他人、教授并做出贡献
● 可以很愉快地将软件交与客户或者接手维护的其他程序员同事
简单的解释:连体三角形
这个解释又回到了前面开始时的说明,一个简单的评判标准:这个人能给别人多少指导?这个人需要多少指导?可以用下面简单的连体三角形进行解释说明:
但是这种标准也有缺陷,它过度依赖人们的主观判断,缺少客观的硬性技术要求。
新的框架
鉴于上述评判标准也有其限制,因此人们又开始思考并讨论了新的框架,尽可能公正地作出判断,因此就有了下面更复杂的框架解释:
这种解释对“高级程序员”的描述更加全面和客观,总结起来主要是以下三个方面:技术能力、领导力和交际能力
技术能力:技术能力强的工程师可以为其他经验不足的程序员提供必要的指导和帮助,以保证产品需求顺利实现和产品上线。
领导力:有领导力的人更能凝聚部门力量,保证大家目标一致,并且能充分发现手下员工的特质并作出不同的指导。同时有领导力的人责任感也更强,会把大部分责任揽到自己身上完成。
交际能力:交际能力强的人在集体中的存在感也强,有很强的凝聚力,身上也有自己独特的魅力。
然而,以上三种能力共存在同一个人的身上,现实生活中这样的人少之又少,一般技术性强的人会过分钻研于技术,其他两项能力并不突出,同样的,其他两项能力强的人,就会有较少的时间用在技术钻研上,所以,技术会稍差些。因此,企业在定义程序员的程度时,还需要按照公司内部的主要需求来张贴要求。
唯一可以衡量的依据
虽说上面提的几个方面都是比较重要的,但很难做出实际衡量,唯一可以作为依据的就是你曾经坐过的事,简称—证据。其实这一点在大多数人面试的时候都有所感觉,就是面试官常问的,你的项目经验,以及你在这个项目中单人的角色和承担的责任。基本上程序员能说出项目经验,面试官就可以为他定位了。
成为高级程序员的路有多长?
成为高级程序员确实需要一定时间的积累,不然单单技术上就很难达到要求。但这也并不是说非要很长的时间才能具备高级程序员的诸多素质。小编认为,一个具有领导能力和很强的交际能力的程序员可以在很短的时间内提升技术能力,反之则不一定。所以程序员应该着重培养自己的领导能力和交际能力,这样你的“高级”之路会短一些、顺利一些!
文章来源于网络
联系我们:
地址:北京市海淀区交大科技大厦13F(北京华信智原)
电话:010-51667116
友情链接