原文转载于:https://my.oschina.net/editorial-story/blog/3133210我们的中国文化,对“面子”看得特别重,所以你会发现身边到处都是高级 XXX,听着倍儿有面子,程序员也不例外 。
但是你真要问每个人,你认为的高级 XXX 是什么样子的,估计每个人都有不同的回答 。
我还记得在我刚开始从事编程工作的时候,对坐在边上不远的那位我心目中的高级程序员的印象是:
工作至少有 6、7 年以上,能写一个用起来很方便、看起来很牛逼、但是不太容易让初级人员看懂的框架 。前两天,我把这个问题丢到群里,大家给出的答案中,占比最高的是以下几个 。
- 有 N 年以上编程经验(大部分都说 5 年以上)
- 有出版过技术图书
- 对某领域内对常用框架原理有了解,并且实际使用超过 2 年
- 可以随时随地快速写出常见的一些算法
- 至少封装过一个被全局使用的开发框架
- 写出来的代码,阅读起来很好理解
- 能带领其他人员成功完成项目
不过这也正常,毕竟像初级、中级、高级这种高度抽象的词汇,想要得到一个可描述的定义与人交流,必然需要夹杂着个人的主观因素 。
但是很多行业都在这么进行分类,自然有它的道理和好处 。
我觉得其中最大的一个好处恰好是“主观”的附属品——弹性 。
比如,我现在想招一位高级程序员,面试的时候不管是通过还是不通过,我都有理由来解释我对“高级”的定义 。如此一来,我对陌生人的判断就有了更大的“弹性” 。
这其实是面试官的一种权利,也是长期以来面试者总在面试中处于下峰的原因之一 。
事物总是有两面性的,我们在对陌生人弹性的同时,间接地也对内部的人弹性了,会导致内部的一些人才培养出现问题 。
比如,你觉得内部的高级程序员不够,希望能在外部招聘的同时,从内部也培养一些出来 。但是此时,你又面临了需要定义什么是“高级”的问题 。
如果没法定义一个能够达成共识的标准,又如何指导培养的方向呢?只能是一句空话 。
长此以往会导致更严重的问题:真正的高级程序员不够,只能让中级程序员顶上 。顶替的时间长了,会让一些中级程序员误以为自己已经达到了高级水平 。
在我平时的面试中,这样的案例屡见不鲜,网上流传的工作 10 年 = 1 年重复 10 次的段子是真实存在的 。
下面我来聊聊我对“什么是高级程序员”的个人看法,欢迎你和我一起探讨 。
不管是什么行业,什么岗位,在这个高度分工协作的现代社会,所需的能力主要分为三个维度,我的理解大概是这样的:
- 专业能力:好奇心、敢于挑战困难、刻意养成好习惯、要求严格
- 连接能力:共同体意识、同理心、实事求是、接地气
- 领导能力:主人翁意识、沟通/谈判技巧、目的导向
根据这三个维度的水平差异,我们对初级程序员、中级程序员、高级程序员做一个简要的描述 。
初级程序员 - 知道有事要做处在初级阶段的时候,我们的精力大多只会专注在专业能力的提升上 。这个时候“领导能力”和“连接能力”是很弱的 。
所以,这个时候哪怕你有强烈的好奇心也无法很好地表达出来,大多只能被动的接受工作安排 。
在这个时期做事情需要依赖一些教程、文档,只能“依样画葫芦”,几乎不能在不借助外部信息的情况下解决之前从未遇到过的新问题,所以百度、google 就成了他们唯一的选择 。
你可以在你的身边观察一下,如果经常有以下这些场景出现,大多是初级程序员的表现 。
- 很难提出正确的问题,大多会直接问别人这个功能应该怎么做 。如果你清楚地向他解释,他就会完全按你说的去做,甚至你写的示例代码都会 copy 过去 。因为在他们的世界里,只有编译成功和编译失败,任务完成和任务未完成 。
- 经常犯错误,所以会预留过多“弹性时间”,以便有时间在到期日之前重做 。所以总会抱怨“没时间” 。
- 对与自己有工作交集的人员的职能没有认识 。比如,对测试人员总是充满敌意的,因为他们发现了错误,“阻碍”了自己完成工作 。
推荐阅读
- 到底什么样的行业赚钱厉害?
- 科普:临街住宅到底买几楼噪音小?
- 程序员工作必备:10个超实用的GitHub库
- |为“高价”鱼竿买单,到底值不值?钓鱼人需要擦亮眼睛
- 好白酒和普通白酒,到底差在哪?好喝与否不是唯一标准,看完醒悟
- XO到底是种什么酒?如今很多有钱人为何都在喝?一次性让你搞明白
- 海南过冬到底热不热?一篇文章让你看懂海南天气
- 机器指令到汇编再到高级编程语言
- 程序员用Python实现自动化控制键盘和鼠标
- 茶艺到底是什么,茶树菇炒腰花的做法是什么