聊最近的一次面试

JerryZhang 2017/07/16

我司最近在招 iOS 开发,有个面试,肖峰有事请假了,我就代面了一下。面试的人让我思考了一些东西,今天就和大家聊聊。

应聘的人我们就他叫 A 吧。当我看到 A 的简历的时候,有些吃惊。有 6 年以上工作经验,换了三份工作。一直在做 iOS 开发,有几个上线的项目。长达四五页的简历,茫茫多的文字,通篇的控件术语以及框架名称,看的我眼花缭乱。

我发现一个奇怪的现象:安卓/iOS 这些前端开发的简历都总喜欢写各种控件名称,似乎标签越多就越牛逼一样。坦白说,我很反感这样的简历,如果在加上「精通」二字,基本上我从心里上就 pass 了这个人。当然想法归想法,如果你经历过小型创业公司有多难招人的话,你就不得不硬着头皮去面试,给别人一个机会,也给公司一个机会。真的是没办法,一些事情总需要人来做。

继续说简历这件事,刚毕业的毕业生写出满简历的术语,我可以理解。但是有过几年工作经验的人,是不应该写出这样的简历的,因为你关注的点早就不应该是这些语言、控件表层的东西了。

不说五六年,三年左右的技术人,至少有两个方向中的一个在你的简历中体现出来:一个是技术能力,另外一个是业务能力。技术上:熟练使用两三门语言,常用的开发、调试环境和平台熟练,版本管理工具,常见的数据结构和算法等等这些只是基本功,在简历中一带而过即可,没什么可以炫耀的。除此之外更要的是,应该熟悉一个完整的框架:涉及到网络、系统、I/O(SQL/NoSQL)等,以及问题排查方法和常见的调优工具。业务上应该写明你参与过的项目,少写文字,最好有确定的数值,比如用户量多少?日活、同时在线多少?更重要的是你在这个项目中的职责:是架构?核心开发?数据分析?还是协助开发等等。

面试之前,让 A 答了一份 C 语言面试题,预计答了 40 分钟左右(面试题当初应该是肖峰从网上找的,题目还是不错的,偏向基础,但是想问深入的话可以问的很深)。面试题 A 没答对几道题,我也没什么意外,毕竟之前面试的人就没人答对过几道题,甚至有人一道题都不会。

面试是我和我们公司 iOS 小伙子一起面试的,我没有做过 iOS 开发,帮面面基础。聊了之后,才了解到 A 的这几年职业经历:非科班出身,第一份工作和编程毫无关系;第二份工作,因公司需要 iOS 开发,公司就找了一批人去学习 iOS 开发,学了几个月,就拉回来做产品开发,而且是外包性质的;第三份工作应该才算是真正的互联网公司,可惜干了没超过一年,因个人原因回到了合肥。按说实际的开发经验应该是三年左右的时间,时间节点我记不清了,大体差不多。

非科班出身,大部分都是自学的,而且是一个人的折腾,没什么沟通。这种感觉我非常能理解。他让我想起了 11 左右在博客园写博客遇到的一个朋友:也是非科班出身,一直再学习和写 C# ,因为一个人折腾,没人沟通,也就不知道 C# 到底是怎么念的。直到工作以后才知道念:「C Sharp」,在公司还闹出了笑话。

聊了一会,我发现 A 的技术非常的不全面,对 iOS 的开发技巧以及 Object-C 可能了解的还不错,也有一些处理问题的经验。但是我让他描述一下除了「编程语言」之外的自己接触过的或者了解过的技术,他都答不出来。我再尝试问一些数据结构、算法、操作系统方面的东西(毕竟有些人不擅长表达,或者紧张之类的,所以多问问),也几乎是一张白纸。最后没办法能问一些做过的项目相关技术,发现做的都是一些 UI 层面的工作。

到后面我已经不想问任何问题了,在我心里已经 pass 了,因为即便勉强能满足日常工作需求,技术的成长性也太低了。但是在让他反问公司的问题的时候,我心里上对他的认知有了些改观。他问了公司的文化,技术氛围,研发人员,以及是否有定期的技术交流/分享会。并坦言,自己意识到在外包公司的几年里浪费了很多时间,想找一个好一点的技术公司,大家一起工作、学习。A 的性格有些腼腆,基本的沟通能力没啥问题,整体聊下来感觉也像是可以踏踏实实做事的人,比较契合我们研发团队的氛围。

面试结束之后,我比较纠结。跟肖峰简单沟通了一下,肖峰说你面的你定吧。起初跟肖峰说发个 offer 吧,后来又想想觉得还是算了吧。我非常的理解 A 的技术现状,也很明白他的感觉。

我的每一次技术成长的都是从否定自己之前的认知开始的,如果有一天你发现自己之前写的代码就是垃圾,恨不得重新写一遍的时候,那说明你编码水平上升了一个层次;如果有一天你发现你技术不再是一个点而是一个面的时候,那说明语言和工具可能对你不再是槛了;如果有一天你发现你开始在需求和资源之前做权衡了,那说明你开始像个软件工程师了。这些都是我自己亲身经历后的感觉。但是现实是很残酷的,我们是一个创业公司,我们招的人不说一定要独当一面,但至少应该可以在没有人带的情况下独立的完成指派的开发任务;还有一个因素是,工作几年一般都会因为家庭分散很多精力,而且或多或少都会带一些经历文化过来,这种经历文化对于还没有自己独立的企业文化的小公司带来的影响远大于大公司。

对 A 我感到一些惋惜,又或者说他运气不好,这运气并不是我公司是否选择他,而是他的几年经历。毕业之后的三五年对技术人的职业生涯影响特别大,如果你遇到了一个不错的团队,不错的 Leading,那可能你就很快的成长起来,学会如何做事,而不需要自己付出多少努力。反过来,则是你付出了更多的努力,可能到最后才意识到自己的方向都是错的。相比 A,我觉得自己很幸运。

人们常说,任何时候开始都不算晚,但这大都是对自己说的。事实往往是:相同水平人的不同选择,努力付出了很多年的人,也可能赶不上别人的起点,因为社会的随机性实在太高了。


我司在招服务器开发,需求如下(有意向的可联系我):

职位描述:

  1. 产品开发与维护
  2. 编写部署、监控脚本
  3. 内部交互管理工具开发
  4. 线上数据统计与分析

任职要求:

  1. 良好的计算机理论学科基础和编码规范
  2. 熟悉 Linux 系统,习惯于在类 Unix 系统下编码、调试
  3. 熟悉 Python 语言和常用库,了解 Django 框架
  4. 熟悉 MySQL 常用命令,了解数据库理论
  5. 了解 Redis 等 NoSQL
  6. 至少熟练使用一种版本管理工具

加分项:

  1. 对前端技术基础有了解(JavaScript,HTML,CSS)
  2. 善于利用 Shell/AWK/Python 做数据分析
  3. 有多门编程语言编程经历
  4. 一个长期维护的个人博客和良好的书面表达能力