7 分钟
来谈谈面试与招聘
本文为卢灿伟的第25篇原创
一
上一篇提到了一个观点,技术管理者是否要成为技术大牛,很多朋友都发表了自己的观点。
其实上一篇的观点我这里做一些补充,如果你的团队人员在5个人以下,且都是某一领域的技术,那么你作为技术管理应该是最懂这块的,因为这样你下面大多数情况下都是一些经验不足的小朋友们,所以需要你在前面帮他们解决技术难点。
如果你的团队规模大于5人,且都是不同领域的技术,这个时候你应该做整体的考虑,应该更关注在团队本身。
作为一个技术管理者,很容易陷入样样行,样样不行的地步,包括我自己现在也发现这样的问题,尽管我是全栈技术,什么都能做,但是随着企业规模的发展,你会缺乏核心的竞争力。所以多维度一定要和T型人才理论结合起来,你的广度一定要以某一个深度作为支撑。举个例子,之前我在安卓上有非常资深的经验,但是我没有继续挖掘深度,缺少更高层的硬能力,而后端的能力也缺乏竞争力。
尽管之前说的以团队为最大价值输出,但是你也要跳出这个概念,如果没有了团队,你还有竞争力吗?比如说起NBA,当球队成绩好,大家都会说XX给力带出了好成绩。当球队成绩不好,大家都要求让教练下课。大家可以好好思考下,自己的核心竞争力在哪?
二
回到标题,最近在不断的被毒打,感觉自己离学会造火箭不远了。
这也是大家常调侃的面试造火箭,进去拧螺丝。
发现每家企业对这个研发Leader的岗位的定义是不一样的,这些可以从公司面试官的考察点看出来,但目前接触到至少80%以上,我认为他们的核心需求是找一个研发工程师。
说到这里,就需要说下技术人员的岗位了,CTO、技术总监/研发总监、研发Leader、架构师、高级研发工程师。
不知道大家了解这些岗位的区别吗?
高级研发工程师:团队规模应该在5人以下,可以带1-2个副手把规划的功能实现,主力干活者,有技术难题也是她来亲自攻克解决。比如一些核心功能开发,疑难BUG解决等等。这个岗位是偏技术岗,主要是以实现产品功能为主。
研发Leader:研发团队小于15人,而且你有1-2个高级研发工程师。这个时候他主要是以提升团队效率为主,比如任务的管理,生产质量的提升,团队专业里提升等等。这个时候其实已经偏管理了,主要是团队的产品为主,包括还需要面试、新人指导等等。
技术总监:团队规模超过20人,有多条产品线,
那这时候就需要有一些公共技术平台,去提升几条产品线研发团队的效率,并且需要协调和管理多不同产品线组。这个时候就是纯管理岗位了,以提升个多个团队的效率为主,技术中台建立、一些通用开发工具框架的简历等等。
架构师:团队规模超过100人,那这个时候你需要有人来做整体的架构规划、设计,不能让研发总监和研发Leader来做这件事情,他们更多是负责人员的管理、项目的管理。这个时候的主要工作是,做技术选型、技术架构风险识别、技术实现的工作量评估,一些底层技术框架实现,核心系统做技术架构升级规划。
CTO:当你的架构师团队也建立完成了,那么你就开始需要CTO了,他需要从商业、产品、技术、管理、团队来做综合管理。这个时候主要工作是要根据通过技术产品来做业务增长,捕捉新的商业机会,做战略规划,并且需要让商业团队和技术团队做好创新探索,站在全局层面改进业务流程,研发团队职级的建设等等。
三
在我这么多年的经历中,我面试过很多公司,接触过很多面试官,也作为面试官面试过很多人。
就我目前的看法来说,80%的面试官都没做好面试官的准备。
懒人面试
相信各位做Java的同学基本上都会碰到过HashMap这类问题。面试官会从网上找到A、B、C、D的面试题来问你,你知道了就PAAS,你不知道就回去等通知。其实某种程度我不太了解这个事情的意义在哪里,做为面试者来说,面试前找了一套面试题,然后背。面试官找了一套面试题背,然后问完就人家回答完就结束了。
还是举上面HashMap的例子来说,大家都知道HashMap是以“数组+链表”数据结构,那为什么要用这种结构,解决什么问题。这种结构会导致什么问题,后面是怎么优化的。为什么HashMap的底层数组的长度总是2的n次方,是为了解决什么问题?为什么loadFactor为0.75?
但很遗憾的是,大多数都是说一下什么是HashMap这种开放性问题,然后若有所思的思考看着你,给你一种好像没回答好的错觉,其实面试官自己都未必清楚,说的就是我这种面试官。
另外一种是你知道A吗?嗯,我知道。你知道B吗?不好意思,我不知道。回去等通知吧。
我找了一些面试题,这家伙答出来一半以上,虽然我也不知道他到底懂不懂,但是我也没办法继续深入问,毕竟我也不懂,应该还行吧,在找个人面试下。
不知道是不是leetcode带起了算法面试的风气,大家都热充去刷算法题,似乎刷满了多少题,然后拿到大厂的offer这种事情越来越多。大家面试都喜欢上来先考算法题,但有多少是你真正面试进去后会使用到的?
另外还有的就是你给我设计一套秒杀系统,你给我设计一套抢红包系统,有再具体的需求吗?就是你网上看到的那些,高并发是现在面试的标配了,回去等通知吧。
为什么我这里要说是懒人面试呢,因为他们不区分你和他,不去看你的过往经历,不去了解你的其他能力,比如沟通、学习、管理、解决问题思路等等,企图用一套标准去筛选候选人,最后导致企业无法招聘到优秀的人才,优秀的人才无法找到合适的企业。
四
我这么多年面试过很多人,招聘过大量优秀的人,也接触过很多优秀的面试官,在他们身上学习到非常丰富的筛选经验。很多看似不太好的简历,经常被HR说这个人之前的工作经历不太好、这个人背景不好,后来他们进入公司后都能在他们的岗位上做出很优秀的成绩。
那么我们要如何考察一个技术候选人呢?
我主要看中的两点是
过往的经历你可以理解为他之前做了什么,怎么做,为什么要这样做。未来潜力主要是他的思维方式、学习能力、责任承担等。
过往经历
过往经历我主要考察的点在于候选人之前做过什么,比如他的项目是做什么的,他负责哪一块,做了哪些事情。
其实就是聊他的项目,从业务功能到技术架构到具体的某个功能点的实现和碰到的问题和解决方案,这里基本上会过滤掉一批人,这批候选人无法把自己做过的事情讲清楚。
然后你可以抓住几个你比较关心的点去问,因为每家企业的规模和现状是不一样的,尽量不要以自己主观的看法去问问题,所有的架构和设计都是基于当前企业的现状下设计出的最合理的架构。
你可以在他的基础上去设计一下问题问他如何优化,比如你增加你的数据量规模、比如在架构中有服务故障、突然来的大流量等等,重点不是在于他回答的时候合理,如果有错误的地方你可以在用假设引导,这样你就能考察到候选人解决思路和他的技术认知极限在哪。
未来潜力
很多时候,候选人的工作经历和当前岗位的技术栈不是特别符合的。
举个例子,React和Vue是前端的两大阵营,那么我作为面试官,如果我们公司的技术栈是React,是不是要问你会不会React,如果不会是不是不需要来面试了。
所以这个时候要偏向几个点去了解候选人的情况
逻辑能力
虽然我上面说了算法题,但是我是想表达不要堆算法题。刷题没有问题,但是你得理解为什么要这样做。作为面试官的你可以出一个算法题,然后让候选人讲他的实现思路,然后在实现一个版本,然后你可以加深难度,或者提出问候选人有没更加优化的方案,并给一些提示引导。这个时候再去看候选人的实现。
这里给一个我曾经经历过的例子,比如说从一个有序的数组[1,2,2,3,3,3]获取到一个去重的数组,后来根据我的回答有调整了面试题,把有序的数组放到最前面,比如变成[1,2,3,2,3,3,3]去考察你解决问题的思路和实现。
另外一个就是对业务的理解能力,比如你可以给出你现在已经解决了的问题,然后给到候选人,让他提出解决方案,在一步步加强问题。最后参照你自己解决方案去做判断。
这里也分享一个例子,当时的问题是一个已读/未读的功能的一个设计,在我说完设计后,又提出,如何节省空间。在我回答节省空间的方案后,根据我的回答再提出,那么如何保证群列表人员变动保持数据的正确性。
基础能力
这个就很好理解了,你面试什么岗位,那么就需要什么岗位的基础能力,但很多人都会陷入一个理论知识的应答,更多的应该是考察候选人对这个知识点的掌握程度,实际应用程度。还是以前面的那个HashMap举例子,你可以从HashMap聊到锁,从锁再聊到事务,从事务在聊到分布式,从分布式在到服务发现等再去做不同的延伸,比如数据库、缓存,消息队列等等。
还有是前面提到的高可用,可以从一个单点的服务功能实现,一步步延伸到微服务,分布式的问题,消息补偿,流量削峰等等。
很多时候,并不是候选人不懂,很有可能是你不会问,可以考虑你问完加上一句我表达的是否清楚来询问候选人,当候选人回答不知道的时候,很有可能他是连你的问题都没搞清楚,这个时候可以考虑给候选人一些耐心和引导。
解决能力
这块更多的考察候选人在特殊限制下的应对场景和处理方案
举个例子,我以前接触过一个很有意思的面试题,我们让候选人做一个Ins的登录功能,然后很大一部分候选人无法完成,只是因为他们无法看到Ins的文档。这里大的结论可能有点主观,但是在工作中,很多问题需要你自己去解决,而且不是通过技术手段。
另外可能会问一些在项目合作过程中,询问候选人如何解决合作问题,比如跨团队的合作,前后端的合作问题,能看出候选人是否自己有思考过如何去解决这些非技术类的问题,还是说把这些问题丢给他老大。
- -
我们现在都跑的很快,比如通过推荐算法让我们找到更感兴趣的东西,通过一些远程面试工具让我们的面试效率更高等等,我们都试图用技术去解决我们所有问题。
但我们是否有停下来思考过,我们通过这些工具是否真的找到合适的人呢,如果面试官没有准备好,对于自己要的人没有一个清晰的画像,就算再好的工具、再好的渠道也无法解决招聘的难题,我们是否有办法去解决这个问题呢?
1024,愿每个程序员都能在自己喜欢的岗位上摸鱼。
推荐阅读
技术管理者是否要成为团队的技术大牛
如何定义你的产品为用户创造了价值