看到Lucida的用心总结的作品,帮他推广了。
参考文章:https://www.cnblogs.com/figure9/p/lean-technical-resume.html
这篇文章围绕着技术简历这个话题,从版式、个人信息、技术能力、项目经历和教育背景等方面出发,给出了编写高质量技术简历所应遵循的47条原则。它们既有益于求职者编写高质量的简历,也有助于招聘者筛选合格的求职者。
技术简历既是技术人员求职必不可少的一环,也是找工作的第一步,其重要性不言而喻。然而关于如何编写技术简历的靠谱教程却少之又少,以至于求职者无法编写出合格的简历,而招聘者无法从简历中看出求职者的真实水平。
一些人可能会反对:如何编写技术简历还不简单,网上到处都是嘛!找一个教程,套一个模板,简历不就出来了嘛!
上面的教程和模板是我在谷歌和百度搜索“如何编写技术简历”和“技术简历模板”得到的结果,它们的共性是完全不适用于技术领域:这些教程和模板会指导你写出一篇屁话连连空话连篇看似出彩但毫无实质内容的嘴遁简历,是的,它们可能适用于一些国有企业,但对于追求实际的外企和民企完全不适用。
技术领域追求简练、客观、实际和成就,而不是冗余、主观、抽象和过程。如果求职者使用上面的教程或模板编写技术简历,那么结果注定会非常糟糕;如果招聘者使用上面的教程来甄别求职者,那么注定会招进一群光说不做的饭桶。我不是在开玩笑——尽管算上实习我只工作了三年,但我已经见证过很多优秀的童鞋因为简历被公司拒之门外,也见证过招聘者/HR因为不懂甄别简历,搞进来一群莫名其妙的家伙来面试,既浪费时间,又浪费资源。
所以我决定写一篇如何编写技术简历的文章,也就是精益技术简历之道:
结合国外书籍/文章和我自己的经验,我总结出47项编写高质量技术简历的原则,这些原则既可以作为求职者编写技术简历的准则,也可以作为招聘人员筛选技术简历的标准。
此外,随着越来越多的人开始海外求职,我特别针对英文简历编写了9项原则,以帮助国人编写合格的英文技术简历。
注:本文标题中的的“精益”(Lean)源于精益创业(the Lean Startup)。
为了完成这篇文章,我从我的微博关注者中征集了一系列简历(感谢你们的信任!)。下文有可能会出现你们简历中的部分内容(当然我会进行改动以便保护你们的隐私),如果觉得不妥,请与我联系,我会将其删除。
下面进入正文。
为了使本文更加严谨有序,我在组织简历原则时参考了编程书籍中著名的Effective系列(例如Effective C++和[Effective Java](http://www.amazon.cn/gp/product/B001PTGR52/ref=as_li_ss_tl?ie=UTF8&camp=536&creative=3132&creativeASIN=B001PTGR52&linkCode=as2&tag=lucida-23)以及Framework Design Guidelines的行文风格:
为了便于阅读和理解,我将这些原则按照进行了分类:
下面是精益技术简历的47条原则:
版式
个人信息
技术能力
项目经历
教育背景
个人爱好
英文简历
其它
版式(排版和样式)并不是简历内容的一部分,但却会对简历给人的第一印象造成很大影响——“字如其人”,简历版式可以反映其作者是否严谨是否认真。如果版式过于糟糕,那么简历很可能会被直接筛掉。
1. 使用对齐
对齐(Alignment)是良好排版的第一要素——对齐不仅使简历层次分明,也会给人有力的感觉,例如:
就不如
2. 不必使用居中
居中会破坏对齐,减弱整体的层次感,所以我不建议在简历中使用居中。例如:
就不如
是的,这条原则里使用的图片来自原则 1. 使用对齐,请牢记:左/右对齐优于居中对齐。
3. 谨慎使用粗体
粗体是一个很强大的工具,它可以有效的去引导简历阅读者的视线,并突出重要的内容。但我在阅读简历的时候发现不少人对粗体使用不当——滥用,用错,甚至是全文使用粗体,这使得简历完全无法被正常阅读。
粗体适用于去突出成就(Achievements),例如:
在其它场景下,我不推荐使用粗体,此外注意不要过多使用粗体——粗体是为了突出成就,不是为了突出技术关键字,太多的粗体会导致什么也突出不出来。
4. 避免不必要的折行
折行(Wrap)指当一行内容过长时会自动进入下一行。我不是说不可以折行(那就成了古龙小说了 :-/),而是说不要使用不必要的折行,比如说:
就不如
不必要的折行会降低简历的密度,破坏简历的层次感,而且会给人没话说有意占行数的感觉。请务必避免这样的折行。
5. 使用制表符辅助对齐
为了进行对齐,我们往往需要添加一些空白符。在这里请使用制表符(tab)而非空格(space),因为:
个人信息部分决定了简历阅读者对简历的第一印象,请务必在这部分内容多下功夫。
6. 不要使用不必要的条目名称
条目名称(Column name)这个词很拗口,我举一个例子:“姓名:张大锤”和“电话:135-9112-7890”里的“姓名”和“电话”就是条目名称。
绝大多数的条目名称都是不必要的——“张大锤”一看就是一个名字,“135-9112-7890”一看就是一个手机号码。这种条目信息会让简历变得拖沓啰嗦,请务必删除它们。
此外,请牢记“个人简历”是简历上最大的废话——这当然是一封简历,不用你提醒。可笑的是很多所谓的“500强简历模板”还把“个人简历”作为简历抬头(Header)。
7. 使用分隔符增强电话号码的可读性
请使用“-”和“()”格式化你的电话号码,例如:把8618601007070 改为 (+86) 186-0100-7070,以便简历阅读者能够正确便捷的拨打你的号码,此外这样的号码也显得更加专业。
8. 使用可以点击的链接
这样简历阅读者就可以直接点击,而不是费力的把链接复制粘贴到某个输入栏中。
9. 不要使用照片
照片不会对你的简历产生任何正面价值,而且它会破坏简历的结构,请不要在简历中使用照片。
10. 不要写无关个人信息
是的,你是在写技术简历,而不是在写入党申请或征婚启事之类的东西,所以请不要在简历中出现下面这些信息:
理想的个人信息应该包括姓名、联系方式(电邮地址和手机号码),如果你有不错的技术博客也可以把它放在上面。
11. 使用客观事实而非主观描述
我经常在简历里面看到诸如“我是一个热爱编程的开发者”或是“我精力充沛,热爱学习,能够长时间从事编程工作”之类的个人评价,总之就是把雇主希望看到的性格特点堆在一起,有时感动的我都想哭。
但感动归感动,这些感人肺腑的个人评价我向来直接无视——我为什么要相信你呢?引用Linus的话,Talk is cheap, show me the code。如果要说明你是一个热爱编程的开发者,那么请出你的Github页面或优秀的个人作品;如果要说明你热爱学习,请给出你读过的书或写过的书评。总之,使用客观事实,而非主观描述。
12. 考虑提供他人的评价
这条原则是上一条原则的扩充——找你的导师、老板或者同事为你写一个评语,相对于主观描述,他人的评价往往更加可信。如果你的评价者是业内权威,那么效果就会更好。
13. 不必写求职目标
我读过的很多简历都有“Objective”(求职目标)这一栏,一般求职者会在这里写他所期待的职位。我个人非常不喜欢求职目标这一栏,因为求职目标给我一种海投简历的感觉。如果走的是内部推荐,或者使用目标公司的求职页面,请去掉求职目标,你应该已经了解投递职位,不需要在简历里面重复。
技术能力是技术简历里面重要的一环,一般来说简历阅读者会通过这部分内容了解你的技能集(Skill set),从而构成对你的第一技术印象。
14. 不要堆砌技术名词
技术简历中一个常见误区是堆砌技术名词,一些求职者认为在简历上写的技术越多越好,于是把自己会的、用过的、见过的甚至没见过的技术都堆在一起,比如:
Technical Skills
是的,一个人可以同时掌握甚至精通多种编程语言,但一般来说这种可能性很小。当我看到这样的技术描述,我会迅速的跳转到简历的项目经验环节,如果我无法在项目经验里找到对应的技术,我会直接把这个简历筛掉。(我把它叫做“未声明引用”(Undeclared reference):你说你精通C++,但你却没有C++的项目经验,你确定不是在逗我?)
所以,不要堆砌技术名词,技术简历并非多多益善,熟悉什么技术就写什么技术,然后在项目经验里面给出你熟悉该技术的证据(evidence),这样会使你的简历更有说服力。
15. 对技术进行分类
技术能力部分的另一个常见问题是缺乏分类或者分类错误,比如:
编程语言:C++, C#, Visual Studio, Shell, Python, Eclipse, Java
这样的简历也会被直接扔进废纸篓——连编程语言和编程环境都分不清,招你作甚。
正确分类后就清楚了很多:
编程语言:C++, C#, Java, Python, Shell
开发环境:Visual Studio, Eclipse
16. 使用正确的技术名称
这个原则非常简单(甚至有点弱智)——正确拼写技术名称,并使用正确的大小写。我在这里摘取了一些我见过的技术名词错误:
请严格检查此类错误——这类错误会大大降低你的简历的专业性,并给人非常不好的印象
17. 不要写电脑能力
技术简历需要展现你的技术能力(Technical Skills),而不是电脑能力(Computer Skills),这两个概念比较拗口,所以我在这里举几个例子:
电脑能力不但会稀释你的简历含金量,还会给人极不专业的感觉。不要在技术简历里面出现任何电脑能力——据说某公司甚至定了一个规矩,只要在技术简历里面看到Office字样就直接滤掉(靠谱!)。
18. 按照熟悉程度对技术能力进行排序
这个原则十分简单——使用合适的词汇描述你的技术能力,并按照熟悉程度排序,例如:
编程语言:C++, C#, Java, Python, JavaScript
就不如
编程语言:熟悉C++、C#和Java,了解Python和JavaScript
另一种方式是使用比较符:
编程语言:C++ = C# > Java > Python = JavaScript
注意:没有必要在技术能力后面加上使用时间,比如:
技术名称 熟练程度 使用时间
C++ 精通 8年
Java 熟悉 5年
时间没有意义——搞技术的都明白技术的使用时间和技术的熟练程度没有任何关系(谁知道这货是不是用了1个月C++然后在后面的95个月不断重复第一个月的东西?),只可惜有些HR永远都不懂这个道理,也不肯懂。
19. 不要写过于特定的技术
什么叫做过于特定(Specific)的技术呢?举个例子:
熟悉单例(Singleton)模式
且不说单例是不是一个好模式,单例模式有什么好熟悉的?这种东西也配写到简历上吗?至少在我看来,“熟悉单例模式”就跟“熟悉for循环”、“精通if语句”一般可笑。
20. 谨慎使用精通
精通和Proficient是非常Strong的词汇,在简历上写精通类词汇也许会帮你得到面试机会,但你要面对难度更高的面试——招聘者会通过更高难度的问题来确认你真的是精通,而不是在嘴遁。
但如果你真的精通某项技术,那就自信的写上精通,然后用项目经历和面试中的表现说服招聘者,这样往往有助于你拿到Strong Offer。
21. 使用项目经验印证技术能力
这条原则在原则13 不要堆砌技术名词也有提到——你的技术能力应该在你的项目经历中得到全部体现,技术能力展现你的技能集(Skills Set),而项目经验为其提供证据(Evidence)。打个比方,如果你提到你熟悉C++,那么你就需要在项目经验中提到C++,否则我认为你在说谎或者忘记把C++的项目经验写在简历上,说谎和健忘,两者都不是好事。
项目经历是简历阅读者进一步了解求职者技术能力的重要依据,良好的项目经历应当清晰,简洁,既印证前面提到的技术能力,也反映出求职者应对复杂度(Handle complexity)的能力。
22. 按照时间对项目经历排序
一般来说,项目经历应该按照时间倒序排序——最新的项目经历放在最前。此外,考虑去掉过于久远(比如说,七八年前)的项目经历,因为你很有可能已经忘了七八年前做过的东西了。
另外一种排序方式是按照项目的重要程度排序——最重要的项目放在最前,但我个人不推荐这种方式,因为往往最重要的项目都在最近,如果你最重要的项目在很多年,那么很有可能你这些年毫无长进。
23. 不要列出过多的项目
我经常看到非常长的简历:三四页纸,两三千字,十余个项目,恨不得把他/她做过的东西全都铺上去。而事实证明写出这样简历的人水平都不怎么样——至少就我的个人经验而言。
项目经历不是自传,不用把你全部的经历铺上去,也不要写过多的项目经历——三个项目是一个不错的选择,五个就有点多,十个就会没人看。要知道三个优秀的项目远胜十个一般的项目。
所以问题来了,什么是优秀的项目呢?就技术项目而言,我的评估标准是复杂度(Complexity)和影响力(Impact):一个项目,如果复杂度和影响力都有那是最好,如果只有一个也不错,如果都没有那就呵呵。我会在原则25 强调影响力和复杂度中进一步说明。
24. 强调成果而非过程
我在我之前的关于锤子手机和锤子手机发布会提到过:
总之,在锤子手机发布会上,我看到的是一个人在不断的强调自己有多努力多认真,但我也知道当某人不断的给你强调他有多努力(effort)时,事实往往是他还没有获得任何实质性成果(progress),简而言之,effort不等于progress。
技术简历也是如此,不要在项目经历中过度强调你有多努力。“连续高强度工作三个月”和“在深夜重构了XX项目中的代码”并不是一个好的项目描述:如果你“连续高强度工作三个月”却无法说明你的工作成果,“在深夜重构了XX项目中的代码”却无法说明重构后代码改进了多少,那我认为你的“努力”毫无意义。
强调你的项目成果(Achievements)而非过程,“将网站访问量提升300%”、“将响应时间从1.5s减少到0.1s以内”都是不错的成果。
25. 使用量化结果而非抽象描述
我经常在简历上看到“改善了代码的质量”、“提升了启动速度”和“大大增加了网站访问量”之类的描述,我的第一反应就是:
用个数字你会死啊!!!看新闻联播看多了吧亲!!!!
接下来的反应是:
如果我找不到上面问题的答案,我会直接无视这些抽象描述——还是那句话,我为什么要相信你的一面之词?而且你连话都说不清。
26. 强调影响力和复杂度
"Controlling complexity is the essence of computer programming."
Brian Kernighan
控制复杂度使程序设计的根本(essense),所以绝大多数IT公司在招聘时都会把应对复杂度(Handle complexity)放在职位描述里面——你如果能把难题搞定,那么简单题也不在话下。如果你做过的项目足够复杂,那么就证明你能扛得住复杂度,是个好备胎备选(Candidate)。
那么什么样的项目经历称得上复杂呢?我在这里给出一个不严谨的分类,仅供参考:
衡量项目的另一个重要依据是影响力(Impact),有的软件项目可能不那么复杂,但是它具有相当大的影响力,例如jQuery、RoR和JUnit:
"Never in the field of software development have so many owed so much to so few lines of code (JUnit)."
Martin Fowler
如果你的项目并不复杂,那么请强调它的影响力,用户量超过十万的手机应用和被广泛应用的类库都是很好的项目,尽管它们可能并不复杂。
如果一个项目既没有复杂度,也没有影响力,那么直接删掉它——不要犹豫,它不会为你的简历提供任何价值。
教育背景是简历的另一项重要内容,它对于应届生尤其重要——因为应届生往往没有太多的工作经历。
27. 不要写大学之前的教育经历
我不明白为什么很多人把高中甚至初中都写在简历里——也许你的高中/初中很出色,不过那么多年前的事情就不用再提了吧 -_-||
28. 不要写课程列表
我在简历的教育背景部分发现的另一个奇怪的现象是课程列表(Courseworks):求职者把大学专业课程一水排开,放在简历里面,颇是壮观:
专业课程:
更加令人啼笑皆非的是把所有的大学课程放在一起:
大学课程:
每当看到这样的简历我都在想我是该筛掉你呢还是筛掉你呢还是筛掉你呢?
不要写课程列表,除非你有想特别强调的特殊专业课,而且你在该课上有突出表现(比如“编译原理(实现了带下标检查的扩展C编译器)”就不错)。
29. 考虑使用成绩或排名
如果你的大学成绩或排名还不错,那么请把它放在教育背景中,例如:
2009 ~ 2013 学士 大连理工大学 软件工程 GPA: 3.8/4.0,排名:3/153
就不错。
但如果你的成绩一般(80%一下)或排名一般(前20%开外),那么就不要提它们(我就是这么做的,-_-#)
30. 考虑使用导师(老师)的评语
这条原则和原则12. 考虑提供他人的评价相类似,与其说你在学校多么努力,不如让你的专业课老师(导师)给你一个评价。
注意:不要使用辅导员的评价,是的,辅导员在大学很重要,但辅导员对学生的评价往往没有专业参考价值。
31. 考虑使用学业相关的奖项
请把在校期间的重要奖项放在教育背景中,比如“一等奖学金”,“数学建模大赛一等奖”就不错。
我在阅读简历时见到过很多学霸——学校里面获得的奖项接近一页纸之多。这是个好事,不过放太多奖无益于突出重点,所以请参考原则 23. 不要列出过多的项目:精选3到5个最有说服力的奖项,然后把它们放在教育背景中。
个人爱好对技术简历往往毫无价值,所以这里的原则只有一条——
32. 避免写个人爱好
除非你在个人爱好上取得了相当的成就,否则不要写个人爱好。每个人都喜欢音乐,都喜欢看书,也都喜欢技术,这种屁话套话还是留到入职邮件再说也不迟。
海外求职需要英文简历,而英文简历需要专业的英语——阅读你简历的人很有可能只懂英文,如果你的英文太糟糕那么他/她很可能会无视你的技术而直接把你筛掉。
33. 不要出现拼写错误
请打开拼写检查——要知道简历里面的拼写错误是致命的。我在这里给出一些常见的拼写错误:
更多的拼写错误请参考这里。
34. 不要使用全角字符
务必不要在英文简历中使用全角字符:
我个人推荐在英文简历中只使用ASCII字符集里的字符。
35. 使用正确的词汇
国人英文简历的一大通病是用词不当,下面是我阅读英文技术简历时所发现的最常见的三个错误:
用词不当会影响简历阅读者的理解,为其带来相当负面的印象。为了减少这类错误,你应该去阅读更多的专业英文著作,或者找一个靠谱的人审阅你的简历(比如@peng_gong)。
36. 使用简洁的句子
受中式思维的影响,我们的英文往往很冗余(Verbose),我举两个简单的例子
这里水一句:一般来说中国人对这种英语完全不敏感,反而很亲切(因为更接近中式思维),那为什么我对这种英语特别在意呢?因为我有几个伦敦同事特别在意英语的纯正性,初到伦敦时,无论是吃饭、聊天还是提交代码,他们都会无时无刻的纠正我的语法错误和发音错误(我想我已经被他们纠正几千多次了-_-#),所以我现在对此类中式英语异常敏感。
此外在简历里面我们有时可以忽略主语(Subject),例如:
Project A:
I implemented the communication module.
I wrote tests for the communication module.
I deployed the module into our system.
可以这么写
Project A:
Implemented the communication module.
Wrote tests for the communication module.
Deployed the module into our system.
这样不但更加简洁,而且用动词开头会让句子显得更加有力,给人以自信的感觉。
为了使简历中的英文句子更加简洁,你应该去阅读更多的英文写作书籍(例如Elements of Style和On writing well),或者找一个靠谱的人审阅你的简历(比如@peng_gong)。
37. 避免中式英语
这个原则实际上是原则35. 使用正确的词汇和原则36. 使用简洁的句子的扩展,因为这两个原则都属于中式英语的范畴。
中式英语的源头在于用中式思维将中文逐字转化成英语,尽管我们不会搞出这样的错误:
但是小错是难免的,我已经不止三次的听到有人使用"red color"这个神奇的短语了。(red本身就是颜色,所以完全不需要后面的color)如果你打算根除中式英语,你有两种途径:
这是我读过最好的(貌似也是唯一的)讲中式英语的书籍。
当然,如果你只是把简历改的不那么中式,你完全可以找一个靠谱的人审阅你的简历(比如@peng_gong)。
38. 使用一致的时态
这个原则很简单——使用一致的时态:
之所以把这么简单的原则提出来,是因为我都过的英文简历几乎都违反了这个原则——它们或者在个人评价里“I was a passionate programmer”(嗯,你过去很激情那么现在呢?),或者在项目经历里“Implement xxx”(一直实现到现在不容易啊童鞋!)。
39. 考虑提供缩写词的解释
不是所有人都了解你的工作或研究,所以对于不常用和有歧义的首字母缩写词(Acronym),请提供全称。
注意我说的是不常用和有歧义的缩写词,你无需告诉简历阅读者HTML的全称是HyperText Markup Language,也无需说明MVC是Model View Controller,但你可能需要说明AST是Abstract Syntax Tree,DSL是Domain Specific Language(而不是Digital Subscriber Line)。
40. 使用Bullets组织长段
如果一段项目过长,请使用Bullets而不是“Firstly..., secondly..., finally...”,例如:
Firstly, I collected, managed and analysed data from the health and the legal sector with Data Mining and Natural Language Processing using Python, Perl, and Java. Secondly, I developed web applications to showcase the findings with Jsp, JavaScript. HTML, CSS, J2EE, Tomcat and MySql that led to successful research demos. Finally, I improved the performance of an Java online education forum analysis tool by redesigning the GUI and utilizing multi-threading.
即便是一个English native speaker,看到这样的大长段也会发怵,这里可以利用Bullets改善可读性:
41. 打下良好的英文基础
归根到底,写好英文简历需要良好的英文基础,所以我在这里推荐几本不错的英语基础书籍:
Practical English Usage:简洁,精炼,学习英文语法和口语的必备书籍。
Collins Pocket English Thesaurus:个人无责任推荐——每天看一点,这本书不会提升你的词汇量(Total Vocabulary),但会提升你的有效词汇量(Effective Vocabulary)。
Elements of Style:英语写作第一书。无论是写作,还是编程,都能从本书受益良多。
中式英语之鉴:可能是目前唯一一本讲述中式英语的书籍,尽管书中的例子有点政治化,但不妨碍本书是一本好书。
这篇文章的主题并非英语学习,如果你对英语学习有兴趣可以去Google和逼乎知乎搜索更相关的答案。
当然,如果你只是想得到一个不错的英文简历,你完全可以找一个靠谱的人审阅你的简历(比如@peng_gong)。
剩下的是一些通用原则。
42. 考虑使用超链接
这项原则是原则8. 使用可以点击的链接的扩充——超链接适用于简历全文,而不只适用于个人信息里的个人主页和邮箱地址:
使用超链接时要注意一点:使用隐式超链接而非显式超链接,例如使用Google而非http://www.google.com。因为显式超链接往往很长而且不可读,还会破坏打印版简历的效果。
43. 考虑提供一个“加强版”简历
这项原则是原则42. 考虑使用超链接的补充,简历受限于篇幅(一般是一页)和格式(一般是PDF),无法提供更多丰富多彩的内容。但你可以用超链接关联一个外部“加强版”简历。
一个典型例子是JJ Ying的在线“简历”(使用Parallax效果),这种“加强版”简历往往会使简历阅读者眼前一亮,从而大大增加你的简历通过率。
44. 考虑提供开发社区账号
如果你有非常活跃的开发社区(例如Stack Overflow,GitHub和Reddit Programming等开发社区)账号,那么请在简历中提供它们。
注意我说的开发社区账号,而不是社交网络账号:提供人人、微博或Facebook账号不会对简历有任何帮助。
45. 持续更新简历
优秀的简历应该是与时俱进持续更新的。从现在开始,定一个周期(一个月或三个月),然后以这个周期持续更新简历,这样你可以:
以我自己为例,我维护着一个Markdown简历,每两个月一更新,通过更新记录/当前简历/下一步计划,我可以更有效的指导我的学习和工作。
46. 不断提升个人能力
“没有声音,再好的戏也出不来”
某广告语
简历原则有助于展示(Demostrate)实力,而不是放大(Amplify)实力——打个比方,你的实力有100分,低劣的简历会让你看起来只有50分,而良好的简历则会展现出你100分,但不要指望简历会把你变成200分——我承认有些人可以通过说谎/造假/吹牛达到这个效果,但我不推荐这种透支信用的做法。
所以,优秀简历的根本是强大的实力,多学习,多做有影响力/复杂度(参考原则26. 强调影响力和复杂度)的项目,而不是在马上找工作的时候挖空心思编项目堆技能。没有声音,再好的戏也出不来。
47. 考虑征求他人意见
“当局者迷,旁观者清”
在投递简历前,最好去征求他人意见——外人往往可以看出你简历的不足,指出低级错误,给出不错的建议。
当然你也可以找一个靠谱的人审阅你的简历(比如@peng_gong)。
在这里我把精益技术简历的47条原则整理在一起,以便阅读整理:
书籍:
链接: