奇幻新游活动中心



总说阿里P7,程序员等级到底意味着什么?结果出乎意料

级别是相对的稀缺性

级别更多是代表对应人才在其组织、行业中的稀缺性,并且往往只有内部纵向比较意义,一旦跨组织,其意义就很有限。

在创业公司里的CTO,很有也就是大公司的高工(高级软件工程师)出身;而默默无名的独立开发者,也有可能成为行业巨擘。

在一些新兴的领域比如最近很火的人工智能,入门的门槛很高,人才比较稀缺。一些名校的博士生可能一毕业就可以成为“高级”、“资深”AI工程师。

相对来说,比如前段计算的门槛不高,并且技术日新月异。所以前段工程师可能需要很多年的积累,才能说的上“登堂入室”。

开头说的大厂的级别似乎可以成为业内通用货币,为何是这样呢?

因为大厂的规模和业务都很庞大,一些大公司之间,由于业务上有重叠,并且经过长期的人才流动(跳槽),在市场的调节之后,互相之间的级别形成了一些对接。不但国内的大厂有这样的现象,国外的大厂之间也会有这样的情况。

而一些规模较小的公司,可能聚集了一些大厂的程序员,或者创始人本身从大厂毕业,也会倾向于从大厂去借鉴级别系统。但是正如上面所说,由于受到公司规模的限制,吸引到的人才分布不可能和大厂保持一致,其级别可信度就会比较低。

小公司的级别是否一定是有水分呢?也不竟然。这里得分公司和不同的岗位。

技术驱动型公司的核心程序员岗位,尤其需要技术过硬甚至是行业领军的人物。在这样的公司里,可能挂着软件工程师头衔的员工都是在其他公司都是高级软件工程师以上的职务。

业务驱动型的公司,更多的会靠销售团队来推广业务,技术团队往往并不是决定公司发展的关键。在这样的公司里,往往可以看到高级程序员多是公司元老,并且主要的职责是管理,让更多的程序员更高效的为产品服务。

级别不是衡量单维度的能力

对于程序员的级别到底应该对应何种能力,有很多极左或极右的认识。

极左派认为级别越高的程序员应该写代码越厉害。那么到底什么是厉害?

厉害是算法的能力嘛?如果是这样的话那些国际编程竞赛的金牌们应该是最顶级的程序员,但显然不是。

厉害是做产品的能力嘛?Linux之父Linus一个人在1994年就写出了第一版Linux内核,然而他1998年加入全美达公司后也只远远不是最高级别的技术人员(CTO或者是VP of Engineering)

极右派认为级别越高的程序员代码能力越不重要。

他们觉得级别高的程序员只是会吹牛,或者会做PPT,把身下的程序员的功劳都揽在自己身上。

从一个角度上来说这是倒果为因,级别越高的程序员往往写代码的时间很少,而并不是他们的代码能力不行。纵观各个公司的技术高级职位,鲜有之前没有在一线技术岗位干过很长时间的。比尔盖茨、雷军这些大家耳熟能详的人物都是技术出身,并且技术能力都很强。

无论是极左派或者极右派,他们都忽视了一个事实:程序员的级别不应该只是衡量单维度的能力。

软技能和硬技能

一个人的技能可以分为硬技能(Hard Skills)和软技能(Soft Skills)。

对于程序员来说,硬技能包括并不限于算法,设计,实现,测试,架构等多个方面。高级程序员不比是写代码快,也不是比写的代码多,更不在于能写出多么“精妙”的代码。

程序员的硬技能实力应该表现在:

1. 解决难的,复杂的,抽象的问题。

2. 设计和实现出高效、可扩展、可维护的软件、框架、系统。

3. 推动组内、组间的技术方向发展。

如果你观察一些公司里的大拿程序员,他们都或多或少的会在以上的方面展示过人的一面。做好以上的几点,可以让程序员变成一个好的“技术人”。

在硬技能方面之外,同样还有软技能,程序员的软技能包括:

1. 学习能力——快速掌握自己所不擅长的领域,并结合自身实际吸收和运用。

2. 沟通能力——和技术和非技术性同事之间的进行高效流畅的沟通,能够接受和传达必要的信息。

3. 协调能力——分清任务轻重缓急,把握住短期目标和长期目标之间的平衡,解决人与人之间的冲突。

4. ……

程序员的软技能和硬实力同样重要,有的时候甚至要大于硬实力,为什么呢?

因为往往你不是一个人在工作,一个人的输出和团队相比是很有限的。一个人的硬技能再强,也突破不了自身的物理极限(时间、身体),而现代化的企业中,需要团队的合作,才可以在短时间内完成庞大的工作。

再说Linus,他的硬技能强到可以一个人去写操作系统,但是在所在他的公司里也不能做到最高级别的技术人员,究其原因,一个是他可能没有野心不想去做,另一个重要原因是他的软技能——特别是沟通能力上有很大的缺陷。如果由他来带领团队的话,那么可能还达不到他一个人的输出能力。

但我们是否可以一味的只追求软技能的提升软技能,而不重视硬技能的发展呢?软技能不是万能的,软技能也要硬技能做为依托。学习、沟通、协调能力都是基于你自身对需要学习、沟通、协调的对象(技术)有清晰的认识,而这些认识来自于你的硬技能储备。一个刚毕业的程序员,无论他的软技能多么逆天,没有技术上的积累,也很难胜任高端的职位。

我们可以用一个公式来总结一下:

程序员的影响力(Impact) ∝ 自身的硬技能 * 自身的软技能 + 所在团队的能力 * 自身软技能

如果理解了这个公式,那么对于第一段中各个公司的级别不对称现象就有清晰的认识,我们可以分析以下一些团队的例子:

1. 高技术小团队=> 强调单兵技术作战能力 => 程序员的级别 ∝ 自身的硬技能

2. 低技术小团队=> 强调单兵技术作战能力和协力其他团队的能力 ≈ 程序员的级别 ∝ 硬技能(少) * 自身的软技能

3. 高技术大团队=> 需要协调高技术人才 => 程序员的级别 ∝ 自身的硬技能(多) * 自身的软技能

4. 低技术大团队=> 需要充分的协调、管理能力 => 程序员的级别 ∝ 自身软技能

总结

每个人都有自己擅长的和不擅长的,能够扬长避短则事半功倍,反之盲目的追求不合适自己的高级级别,则事倍功半。看清自己的长处和短处,寻找最适合发挥自己的空间,这样升级也会顺利不少。

希望看完这篇博文,能够让大家开启思索自己的升级之道,也祝大家早日步步高升。返回搜狐,查看更多