最近因为帮人组建研发中心,面试了很多开发工程师,对“技术能与和工作年限是否匹配”的理解更深了,记录下来分享给大家。
为便于讨论,简单的依据工作年限划分出 3 个阶段:
- 1 ~ 3 年
- 4 ~ 5 年
- 6 ~ 8 年
接下来讨论面试官对每个阶段的开发者的要求,看看到底什么是“技术和年龄不匹配”。
面试官怎么要求 1 ~ 3 年经验的开发者
下图是我从一位做了 2 年 Android 应用开发的小伙伴的简历中截取的片段:
这位小伙伴说“熟练掌握自定义控件”,我问他通过继承 View 来实现一个自动以控件需要重写哪些方法,他回答说,“onDraw”,我问他还有别的吗,他想了 10 秒钟没答上来。
实际上,要继承 View 来实现一个自定义控件,起码要重写“onMeasure、onDraw、onLayout”三个方法。
这就是我们对工作 1 ~ 3 年的开发者的能力要求:
了解用过的知识点、技能点本身,知道它们可以实现什么、怎么用,不要有错误的概念。
再举个例子,比如你用过 Qt 的 QTimer 类,面试官问你 QTimer 类能否用在非 GUI 线程中,你应该可以答得上来(答案是可以)。面试官再让你举例说明 QTimer 在非 GUI 线程中怎么用,你答不上来,那没关系,因为你没用过。
这就是这个阶段的要求:用过一个东西,知道它怎么用,能用在什么环境下,具体使用时的操作步骤。
面试官怎么要求 4 ~ 5 年经验的开发者
下图是我从一位工作 4 年的 iOS 开发工程师的简历中截取的片段:
我们看到这位小伙伴提到熟悉多线程,在面试时就问他用的哪种方式,他说使用的 GCD ,然后我们问他是否了解其他的多线程方式,他说还有 pthread,但没用过,其他的不知道了。
实际上,有 4 年 iOS 开发经验并且在简历中说自己熟悉“多线程”的程序员,起码应该了解还有其它三种多线程的方式:
- pthread
- NSThread
- NSOperation
并且还要知道 4 种常见的多线程编程方式有什么异同、什么场景下该用哪个。
这样,你的能力和工作年限才是匹配的。
假如你用过 GCD ,其它的都没听说过,那面试官就会认为你的能力配不上你的工作年限。
这就是面试时对这个工作年限的小伙伴的能力要求:
对用过的知识点、技能点,了解原理,知其然且知其所以然,能灵活应用
。同时,要能对实现相同功能的不同组件均有所了解并知其优劣,此时应该是能举一反三,触类旁通的。
这也是我对简历中“熟悉”一词的理解。
面试官怎么要求 6 ~ 8 年经验的开发者
公司对经验超过 5 年的开发者,要求会更高:
常用的技术框架,要理解原理、设计思想、实现细节,研究过内核、源码,可以定制、扩展、优化。
或者可以根据项目需要,参考已有框架,建造自己的框架。
这也是我对简历中“精通”一词的理解。
比如 iOS 的图片加载框架 SDWebImage ,支持从网络中下载且缓存图片,并设置图片到对应的
UIImageView 控件或者 UIButton 控件上,是我们开发 iOS App 必不可少的框架。
对于有 5+ 年 iOS 开发经验的小伙伴来讲,如果用过几次 SDWebImage ,公司可能就会要求你看过它的源码,了解它内在的实现,比如它内部是怎样下载的、怎样使用多线程的、怎样缓存的,然后可能会认为你应该能自己写出具备类似功能的组件。
你能做到这样,能力和年龄就是匹配的啦。如果你做了 5 年以上的开发工作,用过的框架,没有一个掌握到这种程度的,那不好意思,别人大概率会认为你的技术能力匹配不上你的工作年限。
你在哪里?
好啦,现在,观照一下自身,看看你的技术能力是否配得上你的工作年限?
配不上的话……本文还有续篇——“技术和年龄不匹配时怎么办”,敬请期待。
阅读《程序员的成长课》,Get技术精进的方法,京东购买:https://item.jd.com/12243573.html。