浅谈社招招聘(二):来自招聘者的建议——如何优化简历

“是金子总会发光”不适用于招聘。为了提高简历通过率,你需要针对招聘者关心的东西来优化你的简历。

优化整体格式

不要忽略排版细节!收到简历时,良好的排版会给人留下良好的第一印象,而差劣的排版会让人怀疑此人是否能认真工作。

你的简历请满足以下要求:

  1. 内容、版式简洁明了;
  2. 排版清晰,逻辑顺畅;
  3. 字体字号整齐,标点符号规范;
  4. 正确拼写英文单词,例如MySQL而非mysqlMysqlMySql

请避免套用网上模板:下载量越多,说明用的人越多,也越容易让HR审美疲劳(甚至会让人觉得你参加过培训班)。“keep simple and naive”的设计也是可以的,例如只有标题加下划线、正文加项目符号、内容保持对齐三种样式,足够了。

以下问题会导致你直接出局:

  1. 错别字和语病——中国话都写不好,说明你工作不认真;
  2. 篇幅过长,例如写了五六页内容——说明你表达能力和总结提炼的能力差;
  3. 页面版式太花哨,或者有背景色/背景图,让人难以阅读重要内容——面试时简历是要打印出来的;
  4. 使用了乱七八糟的文件格式,无法打开,或者打开之后乱码——浪费HR时间;

投递简历时请将文件转为PDF格式,因为Word格式容易导致排版错乱。

梳理项目经历

工作与项目经历是招聘者最关心的内容。通过项目经历,招聘者可以了解到:

  • 你的语言表达能力、总结提练能力如何?
  • 有没有做过大型项目?
  • 是否熟悉大型系统会遇到的问题(数据量大、并发量高,等等)?
  • 有没有经历过完整、规范的工作流程?
  • 独立完成,还是团队协作完成?
  • 在项目中是凑数、普通成员,还是核心成员或救火队员?
  • 曾经参与过哪些行业,是否与本公司一致?
  • 实践过哪些技术栈(Vue/React,Spring Boot……)?只是肤浅地增删改查,还是深入研究、优化完善?
  • 只做过开发工作,还是做过管理工作,或是多面手?
  • 有没有个人思考?
  • ……

反例与分析

先看几个非常典型的反面案例:

案例一

  • 项目名称:XXX项目
  • 项目简介:XXX……
  • 工作职责:
    1. 参与系统需求、设计
    2. 开发了XX模块、XX模块
    3. 系统部署与维护

分析:没有体现技术栈,我们无法得知你用了什么语言和技术,也无法得知你的参与程度,只能认为你在凑数。

案例二

  • 项目名称:XXX项目
  • 项目简介:XXX……
  • 工作职责:
    1. 参与系统需求、设计
    2. 开发了XX模块、XX模块,使用了Spring Boot+MyBatis+Redis+Kafka+XXXXXX
    3. 系统部署与维护,系统部署在Linux服务器,使用Tomcat+MySQL+XXX

分析:虽然介绍了技术栈,但只是简单地堆砌单词,没有结合项目具体工作描述,无法体现出你是如何利用这些技术的。

案例三

  • 项目名称:XXX项目
  • 项目简介:XXX……

分析:只介绍了项目,没写自己做什么事情,怎么认定你有项目经验?(这就好比我把QQ、微信、支付宝等产品介绍写到简历中,我就是参与过大型互联网产品开发的人了)

案例四

  • 项目名称:XXX项目
  • 项目简介:XXX……
  • 工作内容:
    • 针对XX功能进行判断:在A情况下,系统采取a措施,处理b数据,做出c操作,实现d效果;在E情况下,采用f方法,提示用户录入g数据,根据h规则与i规则进行j处理,得出k结果。

分析:请专注于技术,不要钻到业务细节中,一是招聘者不会关心具体业务(我们用不到你们的业务),二是你会泄露你们公司的商业机密。

整理工作内容

通过上面几个反例,你需要意识到合适的项目经历应该包含以下内容:

  • 项目名称
  • 项目背景
  • 技术栈
  • 工作职责(说明不是凑数的)
  • 个人亮点(说明不是应付工作的)

项目背景

用简洁的语言交待项目背景:

  • 项目或产品大概是做什么事情的;
  • 项目的意义或优势,例如政府项目可以是提高了信息化管理水平;
  • 简要交待技术栈,用了什么框架,用了什么技术。

目的是让他人对你项目的价值、技术有个基本的了解。

工作职责

简单讲一下自己在团队中的主要职责(例如开发人员),让招聘者知道你在项目中不是吃干饭的。当然,如果项目经历充实,不写角色也无妨。

提炼亮点

要想说明工作能力强,就要拿出实际的证据,例如解决了项目问题,或者干出了业绩,拿亮点闪瞎招聘者的眼睛。

工作内容应当尽量遵循“STAR法则”(情境、任务、行动、结果)来写,让人知道你不是机械地执行命令,而是有针对性地解决了实际问题:

  • 情境:需要解决什么问题,或者遇到了什么事情
  • 任务:你的目标是什么
  • 行动:你做了什么事情
  • 结果:最后达到了什么效果。如果能量化,那么务必提供一个有说服力的数字,例如系统响应时间从2s降低到200ms,或者承担了30%的开发工作。

举两个典型例子:

  • 开发XX、XX模块
    • 分析:只有“行动”,没有背景和结果,也无法体现XX模块的重要性,会让人认为只做了一些基础的增删改查。
    • 优化:
      • 使用XXX框架、XX技术 (行动:使用了XX技术),开发XX、XX等核心功能模块 (如果是核心功能,强调核心)
      • 使用XXX框架、XX技术 (行动:使用了XX技术),开发XX、XX等模块,开发工作量占全系统的30%。(如果不是核心功能,强调工作量)
  • SQL性能优化
    • 分析:优化怎么做的?有效果吗?
    • 优化:
      • 通过慢查询日志、执行计划识别分析执行效率较低的SQL (行动之一:通过两种方法发现问题),根据具体情况改写SQL,调整索引 (行动之二:通过改SQL和建索引解决了这个问题),提高数据库查询效率,查询时间从平均xx降低到xx (情境和结果:系统性能低,经过优化,系统性能提高)

除主要工作外,为了提高工作效率而搞研究也是能接受的:

  • 编写Python脚本 (行动:写Python脚本)实现XX、XX等任务的自动化 (目标:自动化),大幅提高团队工作效率,有效地避免了内容遗漏、操作失误等问题 (情境和结果:解决了人工操作效率低、容易出错的问题)
  • 在开发过程中指导其他员工,并进行了X次技术分享活动,主题包括XX、XX等。

如果是一个参与程度不高的项目,提练不出什么亮点,那么建议隐藏掉,只谈大项目。

加分项

以下事情会从侧面证明你的工作能力,如果与你参与的项目匹配,请在简历上进行体现:

  • 成型产品:有成型产品,说明系统已经上线了。如果产品评价好,说明系统做得不错,不是糊弄的。
  • 技术栈:大家都喜欢新技术。用过各类新技术的员工更受欢迎。
  • 团队规模:小团队工作可以随意一些,而大团队工作不规范就会变成屎山。在大型团队中工作,阅历应该更丰富了。
  • 合同额、开发周期:项目制公司的话,合同额和开发周期也能证明软件规模。做过大型项目,阅历和规范程度应该会比较高。
  • 用户量:道理同上。
  • 相同行业:就算技术差点,至少业务知识不是零蛋。

如果技术栈太老旧

因为商业项目更加追求稳定,所以很多项目仍然用比较旧的技术栈,甚至还在使用JDK 5,这是正常现象。不必隐瞒具体技术:老旧技术用熟了,能够掌握基本原理,切换起来也容易。

很多公司希望员工进去就能干活。完全没碰过新技术的话,找工作会非常吃亏,所以建议在简历中体现自己特意学习过某些新技术(例如因XX技术较为落后,曾自学XXX并尝试用新技术实践项目功能,让HR觉得你比较上进),或者直接假装自己项目是用新技术开发的。但是,除了在简历提及以外,你必须要确实实践过,否则面试会穿帮。

优化结果

根据以上建议,简历优化结果如下:

  • 项目名称:XXX项目
  • 项目简介:XXX,目前用户访问量已达XXX万。项目使用了XXX、YYY、ZZZ等技术。(把项目使用到,但是你自己没有深入使用过的技术框架放到项目简介里,让招聘者了解你们项目大体的技术栈)
  • 工作职责:主要负责前期需求调研、需求编写、系统设计,以及XX与XX模块开发工作。(让人知道你的主要职责是开发人员,而不是测试、运维或者PPT岗位)
  • 工作内容:(此处专注于展示亮点)
    • 作为项目主要成员,使用XX框架开发XX模块,实现XX、XX、XX等核心功能。
    • 使用XXX作为消息队列服务,实现后台数据推送功能。
    • 在技术选型过程中,考虑到XX功能会存在瞬时高并发场景,选择XX框架进行处理。实际开发过程中,利用XX框架,将XX数据进行XX处理,并发能力xx%。
    • 通过慢查询日志、执行计划识别分析执行效率较低的SQL,根据具体情况改写SQL,调整索引,提高数据库查询效率,查询时间从平均xx降低到xx。
    • 与其他同事合作,对项目进行拆分和重构,实现基于XXX的持续集成和自动化部署。
    • 编写Python脚本实现XX、XX等任务的自动化,大幅提高团队工作效率,有效地避免了内容遗漏、操作失误等问题。
    • 在开发过程中指导其他员工,并进行了X次技术分享活动,主题包括XX、XX等。

这样写,就算仍然找不到工作,至少会有更多公司通知你参加面试了。

个人技能优化

通常简历上还会写着“熟悉XXX”、“了解XXX”。这个地方也是有优化空间的:

  1. 注意招聘中的招聘要求(JD),“熟悉”、“了解”的内容尽量贴近JD。碰到不太懂技术、会用Ctrl+F来检查单词的HR时不吃亏。
  2. 梳理你“熟悉”、“了解”的东西,确定这些技能的学习成本。尽量少写那些只需要几分钟或者一两天就能掌握的东西,多写一些需要时间积累才能熟练掌握的东西。
  3. 不要简单地“熟悉XX”、“了解XX”。熟悉了解之后要再写点东西,例如“熟悉JavaScript,掌握原型链、Promise等原理”,这样才能说明你真熟悉JavaScript。
  4. 如果你英语好,或者会翻墙(注意不要明说,以免因言获罪),或者有一些软件开发方面的个人爱好,也可以稍微提及。

了解其他加分项与减分项

加分项

如果工作时间不长,大学英语六级过了,或者拿过ACM区域赛之类等含金量较高的奖项,请把它们写到简历中。

如果有软考高级证书,或者拿到了行业认证(例如Oracle认证),请务必写到简历里。

如果以下账号有实际内容,也请写到简历中让人知道:

  • GitHub:例如参与过开源项目,提交过代码,或者自己的GitHub仓库被打了很多Star,我们会认为你有一定的能力。
  • 个人博客:如果个人博客活跃,而且有一些写得好的原创文章,我们就知道你对技术有所思开,擅长总结。
  • 技术论坛:例如活跃于Stack Overflow,我们会认为你对技术掌握比较好,有解决问题能力。

注意:如果你在简历中写了社交媒体链接,那么我们一定会进入这些网站来核实真伪。假如你的GitHub或博客中缺乏原创内容,只有些helloworld级的练习文件,或者都是些转载或fork内容,或者在找工作时候才胡乱凑些东西,那么我们会认为你是在装X,然后把你的简历给Pass掉。

减分项

  • 培训班经历:由于培训班培训内容经常与行业实际脱节,所以很多公司不喜欢招参加过培训班的人,甚至会直接将有培训班经历的人给Pass掉。实际工作中用到的技术知识基本上都是“实践型”知识,照着网上的培训教程就能学会基本用法,实在没必要去培训班。
  • 外包公司经历:外包公司员工经常被安排做一些初级工作,接触不到核心功能与技术。如果简历中体现不出你有所思考,那么我们只能当作民工来使唤了。
  • 小公司/非软件公司经历:小公司,或主业不是软件的公司(例如电子商务),通常缺乏标准开发规范,其中的开发者可能也缺乏规范意识。

最后的注意事项

写完之后务必从头到尾认真检查几遍。如果有信得过的哥们,可以再让他们帮忙检查一下简历。

只要你能把事情说得像自己做过一样,那么项目经历就可以稍微吹吹牛,毕竟我们不可能去你们公司系统里核实代码提交记录。但是,简历的内容会被拿来当作面试的话题,因此要提前想好实施细节(甚至包括版本号),而且不懂的东西不要乱编,以免被打脸。

本系列文章