【特别说明】
《花千骨》这部剧中,白子画为何收花千骨为徒?
《琅琊榜》中梅长苏为何选择靖王而不是太子和豫亲王?
《泰坦尼克号》中杰克和罗丝为何一见钟情?
基特王子为何选择灰姑娘?
乍一看,这些问题似乎与程序员找工作无关。事实上,它们背后的原理都是一样的。想一想,为什么你投了十份简历,却只有一两家公司约你呢?或者为什么每次投简历都会得到面试?
最根本的原因是一方求贤若渴,而恰恰是对方提出的要点让前者兴奋不已。寻求者心里有想法,而回应者则准确地表达了寻求者的想法。这就是秘密。
当程序员找工作时,一开始就获得面试机会的三件事至关重要:
1. 梳理知识、技能和经验
2. 确立求职目标
3、简历优化
友情提醒:如果你不想看一万字的文章,你可以:跳到第三部分看实用的简历优化;跳至第 4 部分,了解如何提高简历投递的成功率。
【01】知识、技能、经验梳理
知识、技能、经验都是一个人所能体现的商业价值。当一个公司招聘一个人的时候,一定是因为这个人能够在某个方面帮助公司实现价值。而且,一般情况下,个人的缴费必须大于公司为这个人承担的各种费用(工资、社保、公积金、个人税等),否则就要扣费。
所以,作为程序员,我们必须知道自己的价值在哪里。个人商业价值可以通过以下五个要素进行分析:
当我们在招聘网站上填写简历时,前三个要素包含的内容最多。
招聘网站上的简历模板大多是根据知识、技能、教育经历、工作经历、项目经历来设计的。只要填写一下就可以了。那么大家的简历就会显得更加千篇一律,然后大家都一样,然后……
让我们回到知识、技能和经验。
一开始不建议直接去招聘网站填写简历。强烈建议首先使用word或者MarkdownPad来整理和记录你认为自己拥有的所有有价值的知识、技能和经验,无论大小,都记录下来。这是我们后续简历优化的基础,也是确立求职目标的基础。
1.1 知识与技能
有必要讲一下知识和技能的区别,这常常被很多人混淆。
知识可以通过语言、语音、视频等方式进行传授,比如C++、Java、数学、物理、Qt、Android、设计模式、网络协议等都是知识。
技能是应用知识和经验的能力。比如使用Qt开发桌面客户端软件是一门技能,使用Java、Android界面类库开发App也是一门技能。
技能的定义有很多种,我们来看看其中的几个。
1、《心理学词典》将技能定义为:“个体利用现有知识和经验通过实践形成的智力活动和身体动作的复杂系统”。
2、百度百科的解释是:掌握和运用专门技术的能力。
3、皮连胜的定义:技能是指在实践的基础上,按照一定的规则或操作程序,成功地完成一定的智力任务或身体协调任务的能力。
有了以上知识和技能的概念,就更容易理解知识和技能之间的区别和联系了。我的认识大致如下:
C、C++、Java、Scala、Python、Qt、MFC、WTL、QML、Qt Quick、JavaScript、HTML、CSS、Lua、MySQL、MongoDB、XML、Json、Win32 SDK、Node.js、AngularJS、ffmpeg、VLC、 DirectShow、Android、Objective-C、HTTP、P2P、RTMP、RTSP、HLS、P2P、socket、UML、软件开发模型(瀑布、迭代、Scrum、等)、项目管理知识、团队管理知识、自媒体运营(我运营订阅号“程序视野”)。
知识在一段时间后就会被遗忘、丢弃。所以,在你的知识图中,一定有一些你经常使用的、现在最熟悉的。比如我最熟悉的就是C、C++和Qt。
我们需要把自己最熟悉的三类知识划出来,以后会派上用场。
技能是知识的应用,所以一般来说,你可以根据你所拥有的知识找到一套技能。例如,我可能具有以下技能:
现在我们对知识和技能应该有了更清晰的认识,我们可以梳理一下自己掌握了哪些知识和技能。值得一提的是,在描述技能时,我们常常会列出知识。
值得注意的是,每个人都拥有大量的知识和技能。一定要找到自己擅长的2到3种知识和2到3种技能。这将是您求职时的重要参考。人只有运用自己最擅长的技能去做事,才能取得最好的结果。
1.2 经验
知识和技能可以帮助我们创造商业价值,而积累知识和技能的过程本身就是有价值的。积累知识和技能的过程就是经验。
著名电影《贫民窟的百万富翁》讲述了在孟买贫民窟长大的年轻人贾马尔参加一档名为《谁想成为百万富翁》的节目,通过五关,击败六关,最终获得冠军的故事。 2000年 10,000卢布的大奖和他心爱的女孩。
这个故事的神奇之处在于贾马尔正确回答了诸如“《darshan do ghanshyam》的作词者”、“1973年动作电影《俘虏》的主演是谁”、“哪位板球运动员是本世纪最好的球员?”等问题。诸如“历史上得分最多的人”、“左轮手枪是谁发明的”、“百元大钞上是哪位美国总统的肖像”等等问题,这些问题连博士专家都搞不清楚!这与他的身份完全不符,引起了节目主持人的怀疑,断定他作弊了。趁着节目暂停录制的机会,他通知警方以诈骗罪逮捕了贫子男孩。
贾马尔为什么能做到?随着问答节目的进行,我们发现贾马尔根本没有学过这些问题相关的知识,而只是在他独特的贫民窟生活中遇到了这些问题。这就是经验的价值。
一个程序员的(学习、工作、项目)经历也具有非常独特的价值,往往在求职过程中发挥着非常重要的作用。比如,如果你做过视频项目,找到一家做类似视频的公司,就很容易脱颖而出;比如,如果你做过图像处理相关的项目,那么进入美图秀秀这样的公司会相对容易一些……
在回顾自己的项目经历时,一定要理解并记录自己的部分,从以下三点挖掘自己的亮点:
我的两个项目经历如下:
[1.网络视频卡顿优化】
项目描述:
智能机顶盒上的视频聚合客户端在播放高峰视频或热门视频时经常卡顿。为了解决这个问题,我们需要进行优化,为用户提供流畅的观看体验。
成就:
播放效果大幅提升,卡顿投诉下降80%。
职责:
作为项目经理,负责项目范围定义、进度跟踪和控制
作为系统设计,选择技术方案,设计加速和优化算法,设计系统结构。
作为核心开发人员,负责客户端http基础类库和服务端http服务器(基于Qt)的开发。
[2.智能电视机顶盒的研发]
项目描述:
适用于电信运营商和零售市场的互联网电视机顶盒。具有视频导航、搜索、点播、直播、语音搜索、游戏、卡拉OK、资讯、教育等丰富功能。
环境:
Android 4.0.3系统,全志A10S芯片方案,Java/C/C++
成就:
成立智能终端团队,2年开发出6盒两代智能机顶盒产品,产品成功转型。
职责:
开发团队组建与管理
硬件平台选择
软件系统结构设计
项目管理
我没有把上面三点对应的内容全部列出来,也没有把我个人的亮点全部写出来,但是你心里一定知道自己起到了什么样的关键作用。如果你有克服技术困难的经验和清晰可量化的表现,一定要总结一下,因为面试时经常会被问到。
才华和人脉对于个人来说其实是非常重要的商业价值。就才华而言,普通程序员的简历中很难体现出来。如果你说你像姚明一样高,你说你像白子华一样帅,你说你比李易峰帅,你想去的公司可能是不可能的。如果太有价值的话,不妨想办法证明自己有很强的学习和研究能力,超越一般人。
很难说是否有联系。如果你使用ThinkPhp,认识它的创建者刘晨,并且目标公司也使用PHP,它可能会有用。如果你是从事iOS开发的,说你和唐乔是哥们也许也会有用。
我认为这些东西在程序员的面试中比在简历中更有可能被提及。
【02】确立求职目标
如果前戏太长,有些朋友可能会失去耐心。别着急,高潮即将来临……
无论是大学第一次找工作的你,还是已经职场N年的老手,找工作都有一个禁忌:漫无目的地撒网。
求职时明确自己的目标行业、公司、职位,有针对性地做好准备,才能事半功倍。
2.1 职业连续性
换工作一次就换行业,换工作一次就换开发语言,对于程序员商业价值(知识、技能、业务等)的积累极其不利。如果这不是您第一次找工作,您需要考虑职业连续性。
如果你目前从事金融行业,那么跳槽时最好还是留在其中。这样,你的行业相关经验就可以积累起来,逐渐形成优势。如果你目前从事iOS开发,那么在跳槽的时候最好寻找一些与iOS相关的东西,这样可以不断提高你的Objective-C、Swift、Cocoa。 ……
当然,如果你发现自己不喜欢现在的行业或者现在使用的技术,那也没关系。以下方法可以帮助您找到新的兴趣点。一旦找到新的方向并进行转换,也要考虑未来的延续性。每当你说不喜欢现在的,更喜欢另一个的时候,这样做几年后,你大概会发现,那些一直闷闷不乐、继续努力的朋友,竟然一夜之间变得牛逼……
2.2 成就事件挖掘职业兴趣
当我们总结整理自己的工作和项目经历时,要特别关注那些让你有特别成就感的事件。你的职业兴趣就隐藏在其中,你可以发现自己未来愿意追求的职业方向。
我们可以按照STAR原则来审核成就事件:
一旦有成就事件,就可以继续挖掘。你知道什么是高,但你仍然知道为什么它高,以及用什么东西使它如此高。可以根据以下两点来分析:
通过这种分析,你也许能够找到你最擅长的技能以及你在工作中最关心的是什么,并以此为基础建立新的职业目标。
【03】简历优化
如果你不知道自己有什么商业价值,不知道软件开发工程师是否适合你,也不知道该从事什么样的行业、什么样的公司、什么样的职位,那么前戏我们埋伏了这么久,终究是白费了。很难...
我相信,如果你继续读下去,你心里一定有一些东西,并且想要真正享受其中的乐趣。好啦,废话不多说,我们进入正题吧。
简历优化有几个关键点:
1、聚焦行业、企业、专业
2. 分析招聘信息,提取知识、技能、职责等关键词
3、根据招聘信息中的关键词筛选个人知识、技能、经验
4. 重新整理并呈现相匹配的知识、技能和经验
3.1 聚焦行业、企业、职业
聚焦的目的是为了缩小目标范围,节省时间和精力,进行深入的研究和分析,有针对性地优化和结合你的商业价值,增加简历的吸引力,最终增加获得机会的概率。面试机会。
程序员利用编程语言、技术框架、设计模式、算法等来开发针对某一领域问题的软件。软件必须与目标需求和业务密不可分。所以,程序员的左边是技术,右边是业务。如果你对业务内容完全不了解、不感兴趣,很难想象你能做出好的软件。因此,当你有一个目标行业或公司时,你还需要了解这个公司生产什么产品,是产品型公司,项目型公司,还是外包型公司,并选择业务的公司企业如果不感兴趣,就会被果断筛选掉。
有些人比较随意,不太看重积累。比如,如果他们看到这家公司的HR比较漂亮,他们可能会一时兴起忽略掉,毫不犹豫地换行业或者技术。我也比较随意,但这并不是因为HR或者接待员漂亮,而是因为我生来就是这样,而且是我后天刻意培养的。结果,我现在有点无忧无虑,没什么追求了。所以,对于这个行业,我其实没有想太多……但是有一个基本的原则。我不想进入夕阳行业,也不想进入没落的公司。
技术方面,我最好的语言是C++,我最好的框架是Qt(我出了两本书,《Qt on Android核心编程》和《Qt快速核心编程》),我最擅长的是客户端软件开发。 。新职位最能发挥我的知识和技能。
然而,并不是每个人都想继续沿用相同的技术堆栈。我认识一个朋友,他已经使用 C# 10 年了。他实在是厌倦了,又无法在原来的公司转行到其他方向,所以他跳了出来,想要改变。当他去C++相关技术栈的时候,总有公司希望他担任一个可以使用C#的职位。他们不断给他打电话,但他每次都拒绝。
这里就说这么多了,我目前的目标是一名高级软件开发工程师,语言是C++。就行业领域而言,互联网、智慧城市、云服务等都可以。还有,之前在小公司奋斗过,现在希望在大公司体验一下不一样的工作氛围。嗯,这是基本要求。
如果我正在寻找软件开发工作,我现在有两个缺点:
不过,如果换个角度想一想,其实也没什么关系。我干过管理、干过创业,回来做开发不是更稳定吗?
好了,我的聚焦流程已经完成,现在让我们进入简历优化的实际流程。
3.2 简历优化实战操作
程序员的简历一般包含以下内容:
根据实际情况,有的简历可能没有自我评价或附加信息,有的可能没有教育经历可写(比如高中生),有的可能没有工作经验和项目经验(比如初中生)。时间求职者)。
特别值得一提的是一些与程序员个人品牌相关的附加信息,比如技术博客、github主页、参与的开源项目、自己制作的app等,这些都是能够很好地展示程序员知识和技能的东西,并且可能对您有用。简历加分也可以弥补面试时间短,信息交流补充分的问题。要知道,通常是另一个程序员决定了你能否通过简历测试,而向聪明而内向的程序员致敬的最好方式就是“Show me the code”。
[简历模板]
许多程序员使用招聘网站提供的简历模板。如果他们想在不同的招聘网站上发布简历,可能需要填写5、6次简历,这是非常耗时的。然而,我们对此无能为力。各个平台没有统一的数据交换格式,求职者只能自找麻烦。我通常有一份word格式的基本简历,并根据它在不同的招聘网站上创建不同的简历。
接下来介绍一下我的简历,简历很简单,包括以下五个部分:
1. 个人信息
2. 求职意向
3. 技能与评价
4、工作经验
5、项目经验
我简历的前三部分很简单:
【个人信息】
【求职意向】
【技能与评价】
我工作时间较长,有很多工作经验和项目经验。一一列举似乎太多了。之前我已经列出了两个项目经验,这里不再重复。以下是近期的一些工作经历:
【工作经历】
2014.12~2015.12,陕西XX网络科技有限公司
2014.11~2014.12,北京XX商务通讯服务有限公司(西安)
2008.01~2014.09,西安某某软件技术有限公司
1)部门员工的组织、领导、管理、激励和绩效评价
2) 项目策划、实施、跟踪和管理
3)技术路线评估与选择
4)系统分析与设计
5)关键模块代码实现
1)2009年至2010年负责组建机顶盒开发团队和互联网视频搜索开发团队,并带领团队完成技术积累和产品探索,让公司成功进入新的行业领域并完成公司业务转型
2)2012年至2013年负责组建智能机顶盒团队,完成机顶盒产品的智能化转型。
3)2012.07至今,负责智能机顶盒产品的研发
4)2011.10-2012.06,主持第二代高清互联网机顶盒产品研发
5)2009.05-2012.01,负责第一代高清互联网机顶盒产品的研发和改进
好的,这是我简历的主要框架。接下来,我将根据我的目标职位(高级软件开发工程师)寻找几个职位空缺,并分析职位空缺,以优化我简历中的技能、评估和项目经验部分。这两部分也是我们优化简历时关注的重点。
【简历优化】
我曾多次起草过软件开发工程师的招聘要求,技术方面有C++、Java、Android、Web前端等,每次都会想到一些关键词,这些关键词都会纳入到招聘中信息。
反之,当我求职时,我总是希望从招聘信息中推断出制定招聘要求的软件工程师或项目经理或部门经理心目中的关键词。大多数时候,这是可能的。当你找到这些关键词时,你的简历就完成了一半。
接下来我们就来看看一些招聘要求。
第一个招聘要求如下图所示:

红线标记了一些关键的基本要求,例如 C++、Qt 和 Windows 桌面客户端。这些是申请该职位必须满足的强制性要求。
标注的绿线是软性需求,不容易直接量化和衡量,但面试官可以在面试时通过谈话来考察。例如,软件设计能力、技术沟通能力、沟通能力、沟通和团队合作等通常会在面试中体现,而编码能力则可能通过笔试或面试时不断询问技术细节来测试。
蓝线标记了首选条件。如果有多个候选人,如果你具备这些要素,你将得到有限的考虑。
公司在处理软件开发工程师简历时,一般都是HR先筛选,然后技术人员(程序员或者经理)再筛选。通过技术人员筛选后,将通知笔试或面试。
HR一般不太懂技术方面的东西。当他们收到招聘需求时,会与技术人员沟通需要注意的要点,然后根据这些要点选择合适的简历。通常在HR眼中,关键点就是关键词。因此,我们在修改简历时,尽量使用招聘信息中出现的词语,以方便HR识别。 HR看简历的时间长则一分钟,少则20、30秒。
技术人员通常比HR更详细地筛选简历。大致分为两步。首先,他们筛选关键词,然后检查他们的项目经验是否反映了他们所宣传的职位所需的技能和软技能。如果无法匹配关键字,则PASS,耗时不到30秒;如果能匹配的话继续看项目经验,整个过程可能会持续几分钟。
在看项目经验时,一方面看申请者是否在项目中运用了未来需要的相关技能。另一方面,看具体的项目内容,比较行业、产品、业务的相关性。如果应聘者做的产品与招聘相关,想做的事情高度相关,会优先考虑。
通过了解简历筛选流程,就可以知道关键词的重要性。然后我们会根据从招聘信息中提取的要点来修改简历。
在修改简历时,我的做法是在简历中尽可能多地体现公司要求的技能和软技能。一般可以在以下两个地方反复思考:
1. 技能与评价
2、项目经验
结合我的简历,我们先看看如何修改技能和评价部分。
由于目标职位是高级软件开发工程师,而招聘信息没有具体体现对管理能力和经验的要求,所以我的管理经验可以淡化或删除。然后重点介绍C++、Qt、软件设计、技术交流等内容。新版本如下:
技能与评估
好吧,我们来和之前的版本对比一下。现在的内容有很大不同吗?调整后,硬性要求、软性要求、优选条件均已考虑在内。
接下来,我们需要对项目经历进行重新梳理和呈现,使其能够更好地体现企业HR和面试官关注的重点。以下是我的一个具体项目经历:
2009.05—2011.09,跨平台视频点播系统
项目描述:面向电信运营商和零售市场的综合视频服务产品,具有视频导航、搜索、点播、直播、天气、资讯、股票、教育等功能。产品形态包括机顶盒、Windows客户端、Linux客户端等。
软件环境:嵌入式Linux、Qt Embedded 4.5.1、Qt 4.5.1、C/C++
硬件环境:全志F20芯片方案、PC
角色:项目经理、核心程序员
职责及工作内容:
1)软件系统结构设计
2)基于Qt GraphicsView框架的交叉菜单及影视信息墙设计与实现
3)基于Qt的客户端业务流程代码实现
4)基于Qt实现认证模块
5)团队组建和项目管理
成就:
1)开发稳定、高性价比的互联网机顶盒产品,开拓电信市场,销量超过30万台。
2)在团队中推广Qt,形成技术积累
3)提供Windows和Linux客户端,为客服、运维、售后提供有力支持
本次招聘要求主要匹配我的技能(C++、Qt),下一项主要匹配我的业务(行业)经验。

红线标记了基本要求:C/C++、Linux。
绿线标注的软性需求有些是不容易量化的技能,比如熟练掌握多线程、独立设计经验等,也有一些是与产品业务相关的,比如音视频编解码、封装、流媒体、网络协议和视频服务。系统等
此职位发布中有两个首选条件,但都不符合我的知识或技能。
看一个程序员的知识、技能和经验就像看一座山。横向观察,侧面有脊有峰,高低、远近不同。想要提高与招聘信息的匹配度,就必须想办法从不同的角度去探索和呈现。如果这样看起来不合适,那么也许那样看起来正好。因此,如何选择角度就变得非常重要。
一个程序员的知识、技能、经验可以从一个侧面看到另一个,视角非常重要。
我们来看看新修改的技能和评价:
技能与评估
和之前的招聘信息内容大不相同不是吗?
这次改了两个项目的经验,都是之前改过的,方便比较差异。第一个:
2009.05~2011.09,跨平台视频点播系统
项目简介:(略)。
软件环境:嵌入式Linux、Qt Embedded 4.5.1、Qt 4.5.1、C/C++
硬件环境:全志F20芯片方案、PC
角色:项目经理、核心程序员
职责及工作内容:
1)软件系统结构设计;
2)独立设计基于Qt的EPG框架;
3)设计并实现音视频解码和解封装流程(参考ffmpeg);
4)设计并实现机顶盒软件的多线程模型;
5)团队组建和项目管理。
成就:
1)定制多媒体框架,保证互联网机顶盒产品的视频处理效果,开拓电信市场,销量突破30万台;
2)提供Linux和Windows版本客户端,为客服、运维、售后提供有力支持;
3)坚持多媒体关键模块自主实现,形成技术积累。
这次我专注于多媒体、设计等,与上一次有很大不同。
我们来看看文章开头提到的网络视频卡顿的项目经验。新版本如下:
2013.11~2014.06,网络视频延迟优化
项目描述:
智能机顶盒上的视频聚合客户端在播放高峰视频或热门视频时经常卡顿。为了解决这个问题,我们需要进行优化,为用户提供流畅的观看体验。
职责及工作内容:
1)作为系统设计,选择技术方案,设计加速和优化算法,设计系统结构;