1. 程式人生 > >程式設計師簡歷優化之道

程式設計師簡歷優化之道

作者:安曉輝
宣告:原創文章,禁止各種形式的轉載。

為什麼你投十份簡歷,只有一兩家公司約你?又或者為什麼你每投一份簡歷都能獲得面試機會?

最根本的原因,就是一方在汲汲渴求,而恰恰另一方呈現出的關鍵點讓其怦然心動。求者心中有所想,而應者恰恰展現了求者所想的那一面。這就是個中奧妙。

程式設計師在找工作時,在一開始有三件事情會對能否獲得面試機會至關重要:

  1. 知識、技能、經歷梳理
  2. 確立求職目標
  3. 簡歷優化

知識、技能、經歷梳理

知識、技能、經歷,這都是一個人能體現出來的商業價值。一家企業招募某個人,一定是因為這個人可以幫助企業在某方面實現價值。而且,正常情況下,個人的貢獻一定要大於企業為這個人負擔的各種成本(薪水、社保、公積金、個稅等)。

所以,作為程式設計師,我們一定要清楚自己的價值在哪裡。個人的商業價值,可以通過下面五大要素分析出來:

  • 知識
  • 技能
  • 經歷
  • 天賦
  • 人脈

我們在招聘網站上填寫簡歷時,內容最多的就是前三個要素,都是差不多的模板,填下來千人一面。

在最開始的時候,不建議直接到招聘網站上填寫簡歷。強烈建議先用word或MarkdownPad來整理記錄你認為你具備的所有有價值的知識、技能、經歷,不論大小,統統記錄下來。這是我們後續優化簡歷的基礎,也是確立求職目標的基礎。

知識與技能

有必要說一下知識和技能的區別,這是很多人常常混淆的。

知識可以通過語言文字、語音、視訊等進行傳授,比如像C++、Java、數學、物理、Qt、Android、設計模式、網路協議等都是知識。

技能是指按照某種規則應用知識和經驗完成某種任務的能力。比如使用Qt開發桌面客戶端軟體就是一種技能,使用Java和Android介面類庫開發App也是一種技能。

我的知識大概有這些:

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。

我們需要把自己最熟悉的三種知識標註出來,後面會派上用場。

技能就是對知識的運用,所以一般來講你有什麼知識,就能找到一組技能。比如我可能有下列技能:

  • 使用Qt開發客戶端軟體
  • 使用Qt開發伺服器軟體
  • 使用Java開發Android App
  • 管理專案,制定專案計劃,跟蹤計劃,控制專案進度
  • 團隊管理與激勵
  • 部落格、微信訂閱號等自媒體運營
  • ……

好啦,現在我們應該可以進行知識和技能的梳理工作了。

需要特別注意的是,每個人都有很多知識和技能,一定要找出你擅長的2~3種知識,2~3種技能,這將是你求職時的重要參考。人只有使用最擅長的技能去做事情,才能達到最好的效果。

經歷

知識和技能可以幫助我們創造商業價值,而知識和技能的積累過程本身也是有價值的。積累知識和技能的過程,就是經歷。

程式設計師的(學習、工作、專案)經歷具有非常獨特的價值,在求職過程中往往會發揮非常重要的作用。比如你做過視訊專案,那再找類似做視訊的公司就很容易脫穎而出;比如你做過影象處理相關的專案,進入美圖秀秀之類的公司就相對容易……

在回顧專案經歷時,關於你自己的那部分,一定要想明白並記錄下來,從下面三點來挖掘你的亮點:

  • 你負責的工作內容
  • 用到的知識、技能
  • 你對整個專案的貢獻(最好可以量化)

我的一個專案經歷:

【網際網路視訊卡頓優化】
專案描述:
  智慧機頂盒上的視訊聚合客戶端,在播放視訊時,高峰時段或熱點視訊,經常卡頓。針對此問題,進行優化,以使能夠對使用者提供流暢的觀看體驗
業績:
  播放效果大幅度提升,卡頓投訴下降80%。
職責:
  作為專案經理,負責專案範圍界定、進度跟蹤與控制
  作為系統設計,選擇技術方案,設計加速與優化演算法,設計系統結構。
  作為核心開發人員,負責客戶端 http 基礎類庫的開發和服務端 http server(基於Qt) 的開發。

我沒有列出前面所說三點對應的所有內容,個人亮點也沒完全寫出來,但你的心裡一定要清楚,你發揮了什麼關鍵作用,如果有攻克技術難點的經歷和明顯可以量化的業績,一定要總結出來,面試時經常會被問到哦。

天賦和人脈其實也是個人非常重要的商業價值。但在程式設計師的簡歷中較難體現出來,在面談中倒是有較多機會展現。

確立求職目標

不管是從大學走向社會的初次求職,還是在職場摸爬滾打了N年的老鳥,找工作時都要忌諱一點:茫無目的,漫天撒網。

求職時,明確目標行業、企業、職位,有針對性的做準備,事半功倍。

職業延續性

跳一次槽換一個行業,跳一次槽換一條技術棧,這樣極其不利於程式設計師的商業價值積累(知識、技能、業務等)。假如你不是第一次求職,就有必要考慮職業延續性。

假如你現在在金融行業,那換工作時,最好還在裡面。這樣你的行業相關的經驗就可以積累下來,慢慢形成優勢。假如你現在做iOS開發,最好換工作時還找iOS相關的,這樣你的Objective-C啊,Swift啊、Cocoa啊才能持續精進……

有一種情況另當別論:你發現你不喜歡現在的行業和所用的技術。此時跳槽,就要找到新的方向(後面方法可以幫到你)。一旦你找到新的方向,轉換過去之後,同樣要考慮以後的延續性。每次都說自己不喜歡現在的,更喜歡另一個,這樣搗騰幾年之後,你很可能會發現,那些悶生不響持續深耕的小夥伴們居然一夜之間都牛逼閃閃起來了……

成就事件挖掘職業興趣

在我們總結整理自己的工作、專案經歷時,要特別留意那些讓你特別有成就感的事件,它裡面隱藏你的職業興趣,可以挖掘出你今後樂意從事的職業方向。

我們可以遵循STAR原則來回顧成就事件:

  • S(Situation),背景情況,包括面臨的障礙、限制或困難
  • T(Task),任務,目標,想完成的事情
  • A(Action),行動計劃與步驟,如何克服障礙、達成目標
  • R(Result),對結果的描述,重點關注你取得了什麼成就

成就事件列出來後,可以按照下面兩點來深入挖掘:

  • 哪一個具體的點讓你特別有成就感,比如“達成結果受到領導表彰”、“獨立克服某個技術難題”、“用自己的XXX幫到了某某某”、“成功組織大家齊心協力達到目標”……
  • 用到了什麼知識、技能

通過這樣的分析,你就可能找到自己的最佳技能和工作中最在意的點在哪裡,就可以根據他們來確立新的職業目標。

聚焦行業、企業、職業

聚焦的目的是縮小目標範圍,節省時間和精力,深入研究分析,有針對性的對自己的商業價值進行優化組合,提高簡歷的吸引力,最後提升獲取面試機會的概率。

程式設計師運用程式語言、技術框架、設計模式、演算法等開發針對某個領域問題的軟體,軟體必然和目標需求和業務密不可分,所以,程式設計師左手技術,右手業務,假如你對業務內容完全不感興趣,很難想象你可以把軟體做好。因此,當你有了目標產業,目標公司,還要去了解這家公司做什麼產品,是產品導向的公司,還是專案導向,還是外包為主,選擇那家你對它的業務範圍感興趣的公司,不感興趣的就果斷篩掉。

基於延續性的考量,以往工作過的行業領域都需要認真對待,但不一定非要繼續在之前的方向上做,換一換也可以。但有一個基本的原則,離夕陽產業和走下坡路的企業遠點兒。

以我為例來分析一下。

技術方面最擅長的語言是C++,最擅長的框架是Qt(出過《Qt on Android核心程式設計》和《Qt Quick核心程式設計》兩本書),最擅長的是客戶端軟體開發。然後對Android開發有了解也有興趣。新的職位最好和這兩方面相關。

我鎖定的第一個目標是高階軟體開發工程師,語言是C++。行業領域的話,網際網路、智慧城市、企業服務等都可以。

還有,我之前都在小公司摸爬滾打,現在希望到比較大一點的公司裡體驗一下不同的工作氛圍。

在鎖定職位的過程中,還要考慮自己當前的劣勢,以便在簡歷和麵試過程中妥善應對。以我為例,如果找軟體開發工作,就有兩個不好的點:

  • 最近一年沒做什麼開發工作,會被人質疑廉頗老矣尚能飯否
  • 最近幾年都在做技術管理工作,別人可能會奇怪你為什麼倒回去做開發

這兩點也會影響到目標職位的選擇和匹配度,比如有的高階開發工程師職位要求有一定團隊管理經驗,那和我的匹配度就高一些。

好啦,我的聚焦過程已經完成了,接下來咱們進入簡歷優化的實操過程。

簡歷優化實操

知道了自己有什麼商業價值、弄清了想到什麼樣的行業什麼樣的企業裡什麼樣的崗位上工作,接下來就該優化簡歷了。

簡歷優化有這麼幾個要點:

  • 分析招聘資訊,提取知識、技能、職責當中的關鍵詞
  • 根據招聘資訊裡的關鍵詞,篩選個人知識、技能、經歷
  • 將匹配到的知識、技能、經歷重新組織、呈現

程式設計師的簡歷,一般包含下列內容:

  • 基本資料(姓名、性別、年齡、婚否、電話、當前在職狀態)
  • 求職意向(職位、工作地點)
  • 知識、技能
  • 自我評價
  • 教育經歷
  • 工作經歷
  • 專案經驗
  • 附加資訊(比如興趣愛好、榮譽、部落格、開源專案等)

根據實際情況,有的簡歷可能沒有自我評價、附加資訊,有的可能沒有可寫的教育經歷(比如高中生),有的可能沒有工作經歷和專案經驗(如大學生等初次求職者)。

特別提一下程式設計師的一些個人品牌相關的附加資訊(具體參看我的微信訂閱號“程式視界”裡編號10080的文章:這8種武器點亮程式設計師的個人品牌),比如技術部落格、github主頁、參與的開源專案、自己做的App等,都是能非常好展現程式設計師知識、技能的東西,能為你的簡歷加分,也能彌補面試時間簡訊息交流補充分的問題。要知道,決定你能否通過簡歷關的,通常是另外一個程式設計師,而對聰慧內斂的程式設計師致敬的最好方式,就是“Show me the code”。

簡歷模板

很多程式設計師都使用招聘網站提供的簡歷模板,要在不同招聘網站上釋出簡歷的話,可能要重複填寫5、6次簡歷,非常耗時。我一般會有一份基礎的word格式的簡歷,根據它在不同的招聘網站建立不同的簡歷。

接下來介紹我的簡歷,非常簡單,順次包括下列五部分內容:

  1. 個人資訊
  2. 求職意向
  3. 技能與評價
  4. 工作經歷
  5. 專案經驗

我簡歷的前三部分簡單如下:

個人資訊

  • 男,xxxx年xx月xx日生於xxx地方
  • 2002年畢業於西安交通大學,電子資訊工程專業,學士學位
  • 153xxxxxxxx, [email protected]
  • 已婚

求職意向

  • 高階軟體開發工程師,西安

技能與評價

  • 7年部門管理經驗,豐富的專案、團隊管理經驗
  • 7年嵌入式開發經驗,在網際網路電視機頂盒、車載娛樂系統、手持娛樂裝置(MP3/MP4)等領域有成功經驗
  • 豐富的軟體系統架構設計經驗
  • 熟悉常見的設計模式,有豐富的面向物件設計經驗
  • 精通C/C++,熟悉Java,Shell,瞭解python,Lua,JavaScript等
  • 可熟練在Android、嵌入式Linux、Windows CE、Windows、Linux等平臺
    下進行開發
  • 熟悉Android/Qt(E)/MFC/WTL等GUI框架
  • 熟悉DirectShow/GStreamer/MPlayer/FFMPEG/VLC/Vitamio等多媒體框架
  • 熟悉網路程式設計,熟悉各種流媒體協議(http/HLS/rtmp/p2p/rtsp等)
  • 著有《Qt on Android核心程式設計》和《Qt Quick核心程式設計》

我工作年限長,挑最近的幾段看下:

工作經歷

2014.12~2015.12,陝西XX網路科技有限公司

  • 職位:技術總監
  • 職責:團隊組建、管理、技術方向把握、專案管理、產品管理
  • 業績:3個月組建10人團隊

2014.11~2014.12,北京XX有限公司(西安)

  • 職位:平臺組高階軟體開發工程師
  • 職責:跨平臺軟體開發
  • 業績:解決了Qt在Android和iOS兩個平臺與原生UI疊加的問題

2008.01~2014.09,西安XX軟體科技有限公司

  • 職位:CMC部門經理
  • 職責:
      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++、Qt、Windows桌面客戶端,這些是硬性要求,要應聘該崗位必須要滿足。

綠線標註出來的,是軟性要求,不太容易直接量化和衡量,但面試官可能會在面試中通過交談來考察。比如軟體設計能力、技術傳播能力、溝通能力、溝通與團隊協作等,通常都是在面試中體現,而編碼能力,則可能會通過筆試或者面試中不斷的詢問技術細節來檢驗。

藍線標註出來的,是優選條件,在有多個候選人的情形下,你具備了這些要素,就會被優先考慮。

一般的企業處理軟體開發工程師的簡歷,是HR先挑,然後是技術人員(程式設計師或經理)再次篩選,通過技術人員的篩選後,就會通知筆試或者面試。

HR拿到招聘需求,會和技術人員溝通要關注的關鍵點,然後根據這些關鍵點挑選合適的簡歷。通常在HR眼裡,關鍵點就是關鍵詞,所以,**我們修改簡歷時,儘可能使用招聘資訊裡出現的字眼,便於HR識別。**HR看一份簡歷,多則一分鐘,少則20、30秒。

技術人員篩選簡歷,通常比HR要細一些,大致分兩步,先篩關鍵詞,然後是看專案經驗裡是否體現出了他們釋出的崗位需要的技能和軟實力。關鍵詞匹配不上,PASS,30秒不到;能匹配上,繼續看專案經驗,整個過程可能會持續幾分鐘。

在看專案經驗時,一方面看應聘者在專案中是否用到了將來需要的相關技能,另一方面看具體專案內容,做行業、產品、業務相關性比對,如果應聘者做的產品與招聘方要做的相關性高,就會被優先考慮。

通過對簡歷篩選流程的瞭解,可以知道關鍵詞的重要性了。那接下來我們就要依據從招聘資訊中提取的關鍵點來修改簡歷了。

在修改簡歷時,我的做法是儘可能多的在簡歷中體現企業要求的技能及軟實力。一般可以在下面兩處反覆琢磨:

  1. 技能與評價
  2. 專案經歷

結合我的簡歷,先看技能與評價部分怎麼修改。

因為目標職位是高階軟體開發工程師,招聘資訊也沒有特別體現對管理能力和經驗的要求,所以我的管理經驗可以淡化或拿掉。然後是突出C++、Qt、軟體設計、技術傳播等內容。新的版本如下:

技能與評價

  • 9年C++開發經驗,精通C++,熟悉STL
  • 5年Qt開發經驗,基於Qt開發過8個商業專案,程式碼超過30萬行
  • 著有《Qt on Android核心程式設計》和《Qt Quick核心程式設計》
  • 熟悉面向物件程式設計
  • 熟悉GoF設計模式
  • 豐富的軟體設計、軟體架構經驗
  • 熟悉MFC,熟悉網路程式設計,熟悉多媒體及各種流媒體協議
  • 熱衷技術傳播,推動了Qt在團隊和公司內的普及

新版本兼顧了硬性要求、軟性要求和優選條件,與初始版本有明顯不同。

接下來,我們就要重新組織、呈現專案經歷,讓它更多地體現企業HR、面試官所關注的關鍵點。下面是我的一個具體的專案經驗:

2009.05—2011.09,跨平臺視訊點播系統

專案描述:面向電信運營商和零售市場的綜合性視訊服務產品,具有視訊導航、搜尋、點播、直播、天氣、資訊、股票、教育等功能。產品形態有機頂盒、Windows客戶端、Linux客戶端等。

軟體環境: Embedded 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。

綠線標註的軟性要求,一部分是不太容易量化的技能,比如精通多執行緒、獨立設計經驗等,一部分是產品業務相關的,比如音視訊編解碼、封裝、流媒體、網路協議、視訊業務系統等。

這則招聘資訊中有兩個優選條件,不過和我的知識、技能都不匹配。

一個程式設計師的知識、技能、經歷,橫看成嶺側成峰,角度很重要。

來看看新修改的技能與評價:

技能與評價

  • 9年C++開發經驗,精通C++,熟悉STL
  • 可熟練在Linux、嵌入式Linux、Windows等平臺下進行開發
  • 熟悉常見的設計模式,有豐富的獨立設計經驗
  • 6年視訊業務開發經驗,設計、開發過點播、直播流媒體處理系統,熟悉FFMPEG、GStreamer等開源框架
  • 精通網路通訊,自己實現過標準協議http協議和私有p2p協議,熟悉http/HLS/rtmp/p2p/rtsp等各種流媒體協議
  • 熱愛技術,著有《Qt on Android核心程式設計》和《Qt Quick核心程式設計》

和麵向上一個招聘資訊的內容又有了較大差異,是不是?

這次我改兩個之前展示過的專案經歷,方便比較不同。第一個:

2009.05~2011.09,跨平臺視訊點播系統

專案描述:(略)

**軟體環境:**Embedded 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).作為系統設計,選擇技術方案,設計加速與優化演算法,設計系統結構。
  2).C++實現標準http協議(含客戶端和服務端)   

業績:

  播放效果大幅度提升,卡頓投訴下降80%。

和原來大不一樣了。

需要特別提醒的是,簡歷優化是針對程式設計師知識、技能、經歷進行的穿衣打扮,是從不同的視角呈現不同的側面,可以用心琢磨,但萬萬不可造假。

檢驗優化效果

提供一個檢驗你簡歷優化水平的方法:

  • 將你鐘意的企業和職位分為A、B、C三類,A是最符合你目標的,B與你最核心的訴求匹配,C類呢可能抵觸了你的某些核心價值觀。
  • 針對C類公司的職位,測試你的簡歷優化技能,找三五家來練手,投遞簡歷,簡歷過了就去面試,攢面試經驗。
  • C類之後進行B類,最後是A類。

這樣的過程,能保證你先練簡歷和麵試技術,然後以最好的狀態走向你最心儀的公司最鐘意的職位。

如何提高簡歷投遞成功率

根據前面的分析,要想提高簡歷投遞的成功概率,遵循下面的流程將非常有幫助:

  1. 梳理知識、技能、經歷並記錄在案,形成基礎簡歷
  2. 確立求職目標
  3. 篩選招聘資訊,選擇匹配自己目標的公司和職位
  4. 針對每個招聘資訊進行分析,提取關鍵詞
  5. 根據關鍵詞,結合基礎簡歷,優化技能描述和專案經驗,生成一份有針對性的簡歷

根據我自己的經驗,一天可能只能完成3份左右的簡歷投遞。因為,針對每一個職位生成一份有針對性的簡歷,可能會花費1到2個小時時間,有時甚至更長。不過,花再多的時間都是值得的,因為這種優化將大大提高你簡歷通過的概率。