如何写一份更好的简历

作者:Windson Yang
更新时间:November 16, 2018
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明 www.enginego.org。

本文章由 ResumeJob 贡献,ResumeJob 能帮助你审视简历,模拟面试,重新规划你的职业生涯。

之前我写了一篇如何准备技术面试的文章,得到了不少读者的支持,也给了我更多动力把求职系列教程写下去。

面试前要准备的第一件事就是写简历,从零开始写简历是一件痛苦的事,因为它既重要又耗时。现在就有很多求职者在电脑前急躁不安地搜索简历模版和参考例句,却不知道如何下笔。写得太短的话 HR 一定觉得没诚意,写得太长的话又无从下手。有的求职者写完连自己都不忍心看,错别字连篇,排版混乱就投出去,所以海投简历也没有回应。而且程序员工资相对较高,有大量人才从其他专业转来,竞争非常激烈,所以如何从众多简历中脱颖而出,赢得面试的机会就非常重要了。这篇文章会从两个方面介绍简历的常见问题。

  • 简历中的常见错误

  • 简历应该怎么写

看完之后,读者就能从中学习到如何写一份能吸引住 HR 眼光的更好的简历。


简历中的常见错误

1. 信息过多,缺乏重点

常见表现是十几行的技能列表

熟悉使用 Python,Go,熟悉 C++,HTML,CSS, Vue, jQuery。

熟悉基本数据结构,算法设计能力。

熟悉 TCP/IP,UDP,HTTP,DNS,WebSocket 等网络协议。

我举一个血淋淋的真实例子:

没错,这就是我收到的一份简历的开头,20行 的熟悉掌握。这位求职者开始就把自己了解的所有工具都列出来,希望通过长长的技能列表突显自己的经验和学习能力,但是却适得其反。大部分人遇到大段文字都会选择跳读,不信你回头看看,第3行 和 14行 其实是一样的。HR 只有从简介或者基本介绍中觉得求职者初步符合资格了,才会认真把简历看下去,其余情况都是快速搜索关键字。例如要招前端工程师,HR会先搜索 Vue,React,jQuery 等前端框架的关键字,如果看了 10秒 都没找到的话,就会看下一份。所以越简洁清晰的简历,HR 反而越有可能认真看。这里有个小技巧,投简历不要扎堆在周末投,而应该在平日投。周一是最多简历需要处理的时候,HR 花费在每份简历上的时间会响应减少,同时,HR 会倾向于把同一天的求职者当成竞争对手,从中挑选合适的,那么简历越多竞争也越激烈。

长清单的另外一个问题是,当 HR 扫到里面有几行是一些非常基础的技能时,可能会开始质疑求职者的技术能力。想象下,终于到周末休息了,你想找部轻松的电影看看,上网搜索到一个 20大 最佳喜剧电影榜单。当你快速浏览的时候,如果发现好几项都是烂片,一点都不好笑,这个情况下,你就会开始怀疑这个喜剧电影排行榜有问题,不会继续看下去,HR 看技能列表也是一样的,清单越长,出现的问题可能也越多。 那么技能列表应该这么写呢?因为 HR 可能是工程师,也可能是非技术员工,所以技能列表也应该简短而排版清晰,让外行人也能快速定位技能。我建议参考这种方式(按熟练度降序,但不要强调熟练度):

后端框架:Django, Flask, Scrapy

前端框架:Vue, React, jQuery

数据库:Redis, MySQL

工具:Docker, Jenkins, Git

其他:HTTP, TCP/IP, WebSocket

外语:大学英语四级,能流畅阅读英文文档

就是如此简短,让 HR 能快速定位到求职者的技能,做出是否看下去的判断。另外这个技能列表应该放在简介之后,我们之后会介绍。

2. 无意义描述

第二个常见错误就是叙述项目经验的时候进行无意义的描述:

XXX平台

根据项目任务要求完成规划工作和按时完成软件开发。

完成爬虫模块,展示模块。

开发后台管理系统,实现自定义分页,第三方登录。

完成数据整理与入库功能。

HR无法从这样的描述中得到有效的信息,也无法判断求职者的技术能力。需要根据

  • 什么事情: 构建 IP 代理池,优化爬虫策略和防屏蔽规则
  • 使用什么工具: 使用 Scrapy 开发异步爬虫系统
  • 结果怎么样: 提升 200% 网页抓取速度

三个点来修改,最好加上数据来证明。

XXX平台

构建IP代理池,使用 Scrapy 开发异步爬虫系统,优化爬虫策略和防屏蔽规则,提升 200% 网页抓取速度。

使用 Vue 框架完成后台管理系统,实现自定义分页,第三方登录等 6个 主要功能。

负责数据的清洗与存储到 MySQL 数据库,使用数据库索引减少 50% 数据查询时间。

我理解大部分求职者并没有面试官的经验,没看过多少人的简历,连回忆项目就已经很难了,更不用说写出来。所以我们准备了一些简历上能用到的,关于简介/工作经历/项目经验例句在这里,大家可以根据自己的实际情况来修改。

  1. 有良好的代码风格,通过添加注释提高代码可读性,注重代码质量,研读多个开源项目,学习改善代码的健壮性与扩展性。
  2. 有良好的代码编写习惯,具有良好的沟通、协作能力能力,有良好的职业道德和较强的工作责任感。
  3. 理解操作系统中进程、线程、死锁、虚拟化、文件系统等原理和简单实现。
  4. 大型互联网分布式系统的架构设计和开发经验,拥抱新技术,有很强的学习能力。
  5. 有扎实的计算机理论基础,良好的算法与数据结构基础,了解计算机基本原理与常见机制。 …

如果你写完不知道写得如何,也可以请求我们帮忙 Review 简历或模拟面试。重要的是,从现在开始统计,养成先测量再优化的开发习惯。而且尝试去发掘性能瓶颈,就算没有统计过查询时间,也可以展示 CPU 或者内存负载数据,最起码也要像第二条一样阐述完成了哪些主要功能。

3. 排版杂乱,错别字多

错别字绝对是零容忍,连自己的简历都不重视,HR 更不会重视。喜闻乐见的例子:

熟悉iOS发布上架流程,真机调戏

熟悉 mysql 数据库,了解 MySQL 基本原理(术语前后不符)

还有的简历字体极小(因为内容太多,又要塞在两页中),行距小,难以阅读。中英文之间空格混用,模块之间没有明显的分隔,让 HR 找不到想要的信息。有些招聘网站并不能完全正确渲染 PDF 文件。(例如拉勾网,遇到 PDF 文件翻页就会有大片空白出现。),我找了两个真实的例子放在下面,你问为什么海投没有回应,HR 问你这样的简历怎么看。

wrong2

写完简历之后一定要自己仔细检查,再请一位朋友看一遍,请求中肯的建议。在排版上我建议大家用 HTML 写然后转成 PDF,HTML 比 Markdown 和 Word 更好进行样式与版本控制。有兴趣的读者可以使用我们的免费 HTML 模版付费 HTML 模版(均通过热门招聘网站测试),确保自己的求职简历能更好呈现在 HR 面前。

all_tem

如何写一份更好的简历

一份简历总体可以分为 6个 模块:基本信息,个人简介,技能列表,工作经历,项目经验,教育情况,其他。这个顺序能让HR从浅到深快速了解求职者的优势与技能。学校信息如果是重点学校或者萌新工程师,可以提前,放在基本信息之后。

基本信息 工作经历 项目经验 教育情况 其他
姓名 公司名称 项目名称 学校名称 兴趣爱好
邮箱 岗位 项目介绍 专业 志愿者工作
电话 主要职责 主要职责 就读年份
Github/博客 在职时间 项目时间 获奖情况
个人简介 项目经验
技能列表

基本信息

姓名/电话

如实填写即可,要注意的是,投简历之前,可以先在这里查询该公司是否注册了。有些猎头会随便起一个公司名字,专门接受简历然后再联系求职者,不小心投递了就出卖隐私了。

邮箱

写常用邮箱即可,论坛上,偶尔会讨论使用什么尾缀的邮箱看起来比较厉害,有的建议用 gmail,觉得能突显英语能力。有的建议使用 Outlook 或者 163,在国内能比较稳定地接受邮件。也有鄙视 qq 邮箱的,觉得太私人而显得不专业。我无法代表所有 HR 给出意见,某些 HR 可能会因为邮箱尾缀而对求职者的初步印象产生影响。不过,只有在求职者的简历没有亮眼点,结构混乱的前提下,HR 才会因为这些小细节而筛掉他们。只要求职者在简历中展现出自己的优点,什么邮箱尾缀都不重要。

Github/博客

放上 Github 或者博客链接的前提是它能突显求职者的编程能力,如果 Github 既没贡献过开源项目,一年就 commit 了几次的话就不要放进去了。技术博客写得多的话可以放上去,有些职位要求里面也会提到这些加分项。

求职意向

这个细节很多求职者会忽略,一名 HR 可能会接受不同职位的简历,如果简历上没有注明应聘的职位,HR 也就不知道怎么去判断求职者合不合适了,最简单的方法,直接看下一份简历。所以求职意向必须说清楚自己的目标职位,例如前端工程师,爬虫工程师

其他信息

其他信息包括政治面貌,性别,年龄,照片等。如果要投国企或者事业单位,党员的政治面貌可能有帮助,至于其他加不加没什么太大关系。合起来,基本信息部分可以像这样写:

杨勇

邮箱: contact@osjobs.net / 电话: 133-5555-6666

Github: github.com/abc / 求职意向: 爬虫工程师

简介

简介非常重要,也是HR开始了解求职者的第一步。一开始不知道从何下笔的时候,可以根据目标职位的职位要求来参考,而且当看到目标职位都要求熟悉多线程编程而自己不太理解的时候,就是非常好的补习机会了,面试绝对考啊。这里我们假设求职者喜欢的一家公司的岗位描述与要求如下:

Python爬虫工程师

岗位描述:

  1. 负责爬虫系统架构设计和开发;
  2. 参与设计系统技术方案,核心代码开发和系统调优;
  3. 参与各专项技术调研,新技术引入等;

岗位要求:

  1. 2年 或以上 Python 开发经验,本科及以上学历,计算机相关专业;
  2. 热爱计算机科学和互联网技术,精通 Python 语言,熟悉正则表达式,熟悉 MySQL 数据库;
  3. 熟悉 Python 网络编程,能够设计和维护基于 TCP/IP 协议的高性能事件驱动框架程序;
  4. 有强烈的求知欲,优秀的学习和沟通能力;

先分析下这个岗位的要求,需要开发爬虫系统,有Python开发能力,对网络协议有了解。抓住这几点之后,我们就可以针对这个岗位写简介:

两年 Python 后端开发经验,熟悉 Scrapy 框架,作为主力工程师参与设计与开发过多个项目,负责系统核心模块的开发,自动化测试与部署。熟悉 HTTP 协议、TCP/IP 协议,了解正则表达式,XPATH的用法,了解 Redis,MySQL 数据库与 Linux 系统的常见机制与原理。有优秀的学习能力和团队沟通能力,经常与团队进行技术分享,能与团队共同成长。

简介/工作经历/项目经验中的关键字应该加粗。这里的第一条首先突出个人的开发经验,简单介绍之前主要工作职责(有爬虫开发,自动化测试与部署经验)。第二条展现自己的符合岗位要求的专业知识与技能列表,第三条列出软技能,以与团队进行技术分享为例子,突显出团队合作的能力。

如果是非科班或者萌新工程师的话可以尽量从个人项目,学习能力以及软技能突显自己的能力。

两年独立开发 Web 项目经验,了解项目开发流程及自动化部署,设计以及开发了 Todo-list,博客等项目,实现了浏览,评论,点赞等功能。熟悉 HTTP 协议、TCP/IP 协议,了解 Redis,MySQL 数据库与 Linux 系统的常见机制与原理。热衷学习计算机技术,自学了计算机系统,数据结构等多个计算机课程。

非科班工程师要与科班工程师竞争,最好自己有做过岗位类似的项目。优质的个人项目也是加分项。博客,爬虫,Todo-list 这些实在太常见了,我不是说它缺少技术含量(可以看看 Python 作者 Guido van Rossum 写的爬虫),只是太多求职者都只完成非常简单的功能,没有深究原理。如果能完成一些与众不同的项目的话,那么就能吸引到HR的眼球了,500lines 里面就有很多有趣的项目。如果觉得跟不上,可以跟着几个 MOOC 课程学习,里面也有实现一些有趣的项目,例如浏览器搜索引擎和社交网络,看起来难,但是它都会有一步步的说明与示例代码。我相信大部分开发者都能从中学习到很多。试想下,如果上面的简介改为:

两年 Python 后端开发经验,了解 Scrapy 爬虫框架,设计开发了简单的浏览器,实现语法解析,编译功能。开发了一个搜索引擎和社交网络,实现了搜索,关注功能。熟悉 HTTP 协议、TCP/IP 协议,正则表达式,XPATH 的用法,了解 MySQL 数据库 与 Linux 系统的常见机制与原理。热衷学习计算机技术,自学了计算机系统,数据结构等多个计算机课程。

是不是非常不一样了,HR也会愿意给机会这样特别的求职者。写简历的过程其实也是自我反省的过程,从中你能知道自己哪里不足,及时地弥补与学习,才能得到好的 offer。

有些工程师会有一些误区,他们觉得如果循规蹈矩地写简历,只会吸引到传统的,无聊的公司。我遇过不少简介写热爱自由,热爱生活,我想大多数人都喜欢自由,单纯写热爱自由并不能展现出真正的热爱,在计算机领域最好证明的方法就是使用自由软件与贡献开源项目。恭喜你,第一步的简介完成了。你抓住了 HR 的眼球,接下来的话就是要展现自己的能力。

happy

技能列表

像我在常见错误所指出,HR会直接在简历中搜索关键字,如果没有的话就会直接筛掉。所以技能列表可以按照类型把自己最擅长的工具列上去,熟悉度因为见仁见智,所以不用写,或者用进度条表示就好:

后端框架:Django, Flask, Scrapy

前端框架:Vue, React, jQuery

数据库:Redis, MySQL

工具:Docker, Jenkins, Git

其他:TCP/IP, HTTP, Websocket

外语:大学英语六级,能流畅阅读英文文档

工作经历

如果这份简历就是用来找实习的话,这个模块可以跳过。一个要注意的点是工作经历的完整性,我有一次去一家大厂面试的时候(我常常去面试,参考如何准备技术面试),他们问我为什么没有把完整的工作经历写上去,因为他们要求从毕业到现在的时间不能出现空白期。我回答说一方面是保持简历的简短,另外一方面是最近的工作经历与这个岗位比较有关。不过这也是我仅有的一次被要求填写完整的工作经历,所以我的建议是简历上最好写上最近 2-3 间公司的工作经历,而且面试问到之前的工作的话要能正确地回答,并且连接所有时间点,不要让面试官觉得你在隐瞒什么。工作经历应按照最近的工作倒序列出,可以分为四点:

公司名称

写上公司全称即可,如果产品比较出名的话,可以把产品名写上:

独角科技有限公司(旗下产品 EngineGo, Thankyou-opensource)

岗位/在职时间

岗位 title 要注意,如果投的岗位是数据分析工程师,那么爬虫工程师与数据挖掘工程师对 HR 来说就不一样了,高级工程师的话也要加上去。在职时间要根据社保缴纳的时间写,有些厂会做背景调查的。

独角科技有限公司(旗下产品 EngineGo, Thankyou-opensource)

2014年6月-2016年6月 | 高级 Python 开发工程师

主要职责

主要职责突显的是在职的职责以及给公司带来什么效益,与接下来的项目经验不同,不需要详细写技术栈和项目细节,只需要大致阐述即可,这里举一个我们例句中的一个例子:

  1. 作为组长负责设计和开发分布式网络爬虫系统,优化爬虫策略和防屏蔽规则,提升网页抓取的效率和质量。
  2. 根据行业需求分析设计方案可行性,对项目代码进行测试优化,协助持续集成与自动化部署,提高系统可用性。
  3. 负责公司技术文档的编写以及维护,定期 review 团队的代码,与团队共同学习以及成长。

项目经验

项目经验可以放在对应的工作经历里,每间公司选 1-2个 项目重点介绍即可。需要详细描述主要开发或者维护的模块,使用了什么工具,以及达成的效果如何,这里以 EngineGo 爬虫系统为例,注意简洁和突出数据,不要进行无意义描述,同时关键字应该加粗。

  1. 与产品经理保持沟通,使用 Scrapy 框架对爬虫模块进行重构,提高 200% 爬虫速度并减少服务器 20% CPU负载。改进爬虫策略,降低 40% 被屏蔽的请求数。
  2. 作为主要工程师设计以及开发物业模块,活动模块,实现报名,即时通知等 10个 功能。
  3. 使用Redis数据库实现分布式爬虫与数据缓存,减少 50% 数据查询时间。
  4. 与其他工程师合作,使用 Docker 对项目进行拆分重新架构, 减少业务模块之间的资源耦合, 实现持续集成与自动化部署。

大部分情况下,不建议简历中出现项目的图片,更好的做法是附上项目链接。

教育情况

学校大家都会写,要注意的有几点,如果就读 211 / 985 等学校可以把学校放在前面,简介之后。另外,我碰到不少转专业的求职者直接不写原本的专业了,我觉得这毫无必要。HR 也不是傻的,看没写专业就知道是非科班的,还不如老老实实写下来。我认识大厂的朋友本科读的还是心理学。高绩点 / 专业课分数高 / 奖学金 / 比赛获奖可以选重要的加上:

XXX大学 | 计算机科学

2013年- 2017年

计算机系统(85分/专业排名18/100),数据结构(90分/专业排名10/100)

绩点:3.7 | 获得一次国家励志奖学金

2015-2016学年获得美国大学生数学建模竞赛一等奖

2013-2014学年获得广东省“砺剑杯”科技创新大赛二等奖

好吧,如果我的学校非常一般,专业也不对口怎么办。我们参考这篇文章的统计,HR看重求职者简历的哪些部分,来自好学校,好公司这不用说,完成 Udacity / Coursera 等课程也有加分。求职者可以像这样展示自己的教育情况。

XXX大学 | 土木工程

2013年- 2017年

Udacity | 机器学习工程师 / Coursera | 计算机导论/操作系统

2016年- 2017年

我不敢说在国内的环境,这一定能加很多分,毕竟大多数公司看重的还是大学的学历。不过,一些比较开放的公司还是喜欢这样不断学习的员工。加上去,起码不会扣分。

其他(可选)

可选项,也有可能成为加分项,国内比较少看重这点,不过我个人还是比较注重的:

志愿者工作

协助组织翻译 Flask,Requests 第一版本文档,翻译十多篇技术文章(侧面突出了外语能力比较好)。

教导初中生从零开始学习 Python,并设计并编写自己的游戏。

Github 上的开源项目 Cherry 获得 200个Star。

兴趣爱好

计算机相关或突显动手能力的兴趣可以列上去,如果是唱歌,旅游这些的话就不用放上去了。

综合起来

综合上面的几点,一份好的简历看起来应该是这样的,模版来自这里

third

总结

只要认真去修改简历,HR 是能感受到的,也能从众多求职者中脱颖而出,得到更多机会。有时候机会往往就在于用不用心争取上面。我希望各位看了这篇文章后能写出更好的简历,获取更多的机会。(这篇文章讲述的简历技巧面向的是国内的公司,如果投向外企的话,不是直接翻译那么简单,有兴趣了解的读者可以参考 Programmer Resume,里面提供了不少有用的资讯。)