# 項目經(jīng)歷
項目經(jīng)歷是簡歷閱讀者進(jìn)一步了解求職者技術(shù)能力的重要依據(jù),良好的項目經(jīng)歷應(yīng)當(dāng)清晰,簡潔,既印證前面提到的技術(shù)能力,也反映出求職者應(yīng)對復(fù)雜度(Handle complexity)的能力。
[TOC=2,2]
## 22\. 按照時間對項目經(jīng)歷排序
一般來說,項目經(jīng)歷應(yīng)該按照時間倒序排序——最新的項目經(jīng)歷放在最前。此外,考慮去掉過于久遠(yuǎn)(比如說,七八年前)的項目經(jīng)歷,因為你很有可能已經(jīng)忘了七八年前做過的東西了。
另外一種排序方式是按照項目的重要程度排序——最重要的項目放在最前,但我個人不推薦這種方式,因為往往最重要的項目都在最近,如果你最重要的項目在很多年,那么很有可能你這些年毫無長進(jìn)。
## 23\. 不要列出過多的項目
我經(jīng)??吹椒浅iL的簡歷:三四頁紙,兩三千字,十余個項目,恨不得把他/她做過的東西全都鋪上去。而事實(shí)證明寫出這樣簡歷的人水平都不怎么樣——至少就我的個人經(jīng)驗而言。
項目經(jīng)歷不是自傳,不用把你全部的經(jīng)歷鋪上去,也不要寫過多的項目經(jīng)歷——三個項目是一個不錯的選擇,五個就有點(diǎn)多,十個就會沒人看。要知道三個優(yōu)秀的項目遠(yuǎn)勝十個一般的項目。
所以問題來了,什么是優(yōu)秀的項目呢?就技術(shù)項目而言,我的評估標(biāo)準(zhǔn)是復(fù)雜度(Complexity)和影響力(Impact):一個項目,如果復(fù)雜度和影響力都有那是最好,如果只有一個也不錯,如果都沒有那就呵呵。我會在[原則25 強(qiáng)調(diào)影響力和復(fù)雜度](http://zh.lucida.me/blog/lean-technical-resume/?utm_campaign=CodeBaku&utm_medium=web&utm_source=CodeBaku_6#rule25)中進(jìn)一步說明。
## 24\. 強(qiáng)調(diào)成果而非過程
我在我之前的[關(guān)于錘子手機(jī)和錘子手機(jī)發(fā)布會](http://zh.lucida.me/blog/on-the-keynote-of-t-one/)提到過:
> 總之,在錘子手機(jī)發(fā)布會上,我看到的是一個人在不斷的強(qiáng)調(diào)自己有多努力多認(rèn)真,但我也知道當(dāng)某人不斷的給你強(qiáng)調(diào)他有多努力(effort)時,事實(shí)往往是他還沒有獲得任何實(shí)質(zhì)性成果(progress),簡而言之,effort不等于progress。
技術(shù)簡歷也是如此,不要在項目經(jīng)歷中過度強(qiáng)調(diào)你有多努力?!斑B續(xù)高強(qiáng)度工作三個月”和“在深夜重構(gòu)了XX項目中的代碼”并不是一個好的項目描述:如果你“連續(xù)高強(qiáng)度工作三個月”卻無法說明你的工作成果,“在深夜重構(gòu)了XX項目中的代碼”卻無法說明重構(gòu)后代碼改進(jìn)了多少,那我認(rèn)為你的“努力”毫無意義。
強(qiáng)調(diào)你的項目成果(Achievements)而非過程,“將網(wǎng)站訪問量提升300%”、“將響應(yīng)時間從1.5s減少到0.1s以內(nèi)”都是不錯的成果。
## 25\. 使用量化結(jié)果而非抽象描述
我經(jīng)常在簡歷上看到“改善了代碼的質(zhì)量”、“提升了啟動速度”和“大大增加了網(wǎng)站訪問量”之類的描述,我的第一反應(yīng)就是:

**用個數(shù)字你會死啊?。?!看新聞聯(lián)播看多了吧親!?。?!**
接下來的反應(yīng)是:
* “改善了代碼的質(zhì)量”——改善了多少?你是如何評估的?圈復(fù)雜度?測試覆蓋度?Bug的數(shù)量? ???
* “提升了啟動速度”——提升了多少?用戶的反饋如何?是否在可接受的范圍內(nèi)? ???
* “大大增加了網(wǎng)站訪問量”——“大大”是什么?訪問量增加了多少?訪問量原來是多少? ???
如果我找不到上面問題的答案,我會直接無視這些抽象描述——還是那句話,我為什么要相信你的一面之詞?而且你連話都說不清。
## 26\. 強(qiáng)調(diào)影響力和復(fù)雜度
> “Controlling complexity is the essence of computer programming.”
>
> Brian Kernighan
控制復(fù)雜度使程序設(shè)計的根本(essense),所以絕大多數(shù)IT公司在招聘時都會把應(yīng)對復(fù)雜度(Handle complexity)放在職位描述里面——你如果能把難題搞定,那么簡單題也不在話下。如果你做過的項目足夠復(fù)雜,那么就證明你能扛得住復(fù)雜度,是個好~~備胎~~備選(Candidate)。
那么什么樣的項目經(jīng)歷稱得上復(fù)雜呢?我在這里給出一個不嚴(yán)謹(jǐn)?shù)姆诸?,僅供參考:
* 編程復(fù)雜度:操作系統(tǒng),編譯器/解釋器,圖形學(xué)編程,網(wǎng)絡(luò)協(xié)議設(shè)計與實(shí)現(xiàn)等
* 算法復(fù)雜度:算法競賽獎項等(不好意思我不熟悉算法所以給不出啥例子 –_-)
* 設(shè)計復(fù)雜度:大型網(wǎng)站,企業(yè)級應(yīng)用,分布式應(yīng)用等
衡量項目的另一個重要依據(jù)是影響力(Impact),有的軟件項目可能不那么復(fù)雜,但是它具有相當(dāng)大的影響力,例如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
如果你的項目并不復(fù)雜,那么請強(qiáng)調(diào)它的影響力,用戶量超過十萬的手機(jī)應(yīng)用和被廣泛應(yīng)用的類庫都是很好的項目,盡管它們可能并不復(fù)雜。
如果一個項目既沒有復(fù)雜度,也沒有影響力,那么直接刪掉它——不要猶豫,它不會為你的簡歷提供任何價值。
