? 我在“[漫談程序員系列:咦,你也在混日子啊](http://blog.csdn.net/foruok/article/details/42293119)”一文中描述了一種混日子的現狀,有朋友說該文只提到了設置目標告別混日子而沒有展開論述“如何設立目標”、“怎樣為目標而努力”這兩個關鍵問題,也就是說,我提出了問題但答案沒有落到實處。這次呢,我決定認真地來談一談如何建立目標,如何為目標而努力。一切從個人經驗出發,僅供參考。
## 目標是什么
? ? “目標是個人、部門或整個組織所期望實現的成果。 ”
? ? 這個定義看起來冷冰冰的,那還有另外兩個更感性的詞語:夢想、理想。但這兩個詞語似乎又過于虛無縹緲,談起來感覺就像遙遙無期永遠無法實現的東西。
? ??**有理想才有目標**。
? ? 理想和目標是密不可分的,結合在一起討論會更有意義。
? ??**有理想才有目標,有目標才有行動,有行動才有結果**。
? ? 這句簡單的話,我以后還會提到,它闡述了理想、目標、行動、結果這四者之間的關系。
## 如何尋找目標

? ? 如何尋找目標?這是非常關鍵的一點。
? ? 感覺文章越寫越正式,這偏離了我的初衷,有點惴惴不安,也有點不適應呢。
? ? 我把程序員的目標分為三類:公司目標、職業目標、生活目標。
### 公司目標
? ? 程序員是公司的一份子,參與到實現公司目標的過程中。這個沒什么好說的,食君之祿忠君之事,拿了人家的錢,就是要給人家干活兒的。
? ? 美國管理學家彼得·德魯克在其1954 年出版的《管理的實踐》一書中,首先提出了“目標管理”的概念,然后目標管理(Management by Objectives,MBO)大行其道,到現在依然被廣泛使用,有非常多的公司在使用 MBO 。我之前所在的西安信利軟件科技有限公司,也曾經推行過目標管理。當時還學習了另外一本書,(日)串田武則的《目標管理實務手冊》,感覺大有收獲。
? ? 目標管理有五個要素:
1. 什么目標
2. 達到何種程度
3. 如何實現
4. 何時完成
5. 完成得怎么樣
? ? 通常公司在實施 MBO 時,還會和績效掛鉤,目標完成得好呢,績效結果就好,獎金就多,升職加薪就快。
? ? 公司目標,一部分來源于遠景規劃、環境變化,這是縱向的;還有一部分則是橫向的,來源于部門之間,不同部門有交叉協作, A 部門的目標要達成可能需要 B 部門協助,或者多個部門在一條產品線上,它們的目標有依賴關系。不管是縱向的還是橫向的,都需要自頂向下分解,大目標分成小目標,最后落實到具體的員工來執行,程序員就是負責執行的員工。
? ? 公司目標最終分解到個人,產生了個人的工作目標。
? ? 這里是一張示意圖:

? ? 如何尋找公司目標、如何分解、如何制定措施、如何執行,我是半吊子,具體就請參考《目標管理實務手冊》吧。這里要提的是:
? ? 程序員作為公司的一員,必然要參與到公司目標的實現中來,公司成功,個人才可能成功,所以一定要搞明白自己對公司目標能有什么貢獻,積極地去實現由公司目標而來的個人目標。
? ? 假如你在一個公司,都不知道要干什么,那要么是公司管理出了問題,要么是你的領導不合格,這兩種可能性會比較大。如果是這種情況,那你多半可以考慮離職了——在一個不知道要干什么的公司,很難干出成績來。
### 職業目標
? ? 職業目標是指人在選定的職業領域內所要達到的具體目標。
? ? 這是每個人都要想的問題。
? ? 我在面試時經常會問應聘者未來三到五年的規劃,這個問題實際上針對求職者職業目標中的中期目標。有的程序員會告訴我說,三年后他希望成為項目經理;另外一些程序員說他希望五年后成為視頻解碼方面的技術專家;還有一些程序員會不好意思地笑笑,說還沒想過這個問題。你是哪種呢?
? ? 職業目標分為短期、中期、長期。
? ? 短期目標一般是2~3年以內的目標,比如你剛進入移動開發領域,那你可能希望花2~3年的時間熟練掌握 Java 語言、Android 應用框架的各個方面以及系統框架的某些部分、能夠獨立完成較為復雜的 App 開發。
? ? 中期目標一般是 3~5 年內的目標。
? ? 長期目標,5~10 年的規劃,一般設定較為長遠的目標,比如你希望 30 歲時可以成為 IBM 西安分公司的一線經理,或者希望成為某個小型公司的技術副總。
? ? 還有更為長遠的規劃,那就是:人生規劃。
? ? 說來說去,忽然發現我自己就是一個職業目標不明確的人啊,冷汗一身。
? ? 其實呢,好吧,我開始為自己辯解了,希望你不要這樣。其實呢,我們真能看那么遠嗎?
? ? 現在有一種職業,叫作“職業生涯規劃師”。哈哈,我覺得挺好玩兒的啊,這個還可以考?GCDF?證書,誰有興趣可以考一個。
? ? 我要說的是:看不到 10 年后的目標很正常;3年左右的規劃也沒有,就有點兒說不過去了;假如連一年內的目標都沒有……嗚呼哀哉,我該說什么好呢,去找“職業生涯規劃師”聊聊吧,他們真的可能會幫到你。
? ? 假如你有自己的職業目標,那當遇見在一個公司沒事兒可干的情況時,你就能非常清楚地意識到自己應該離開,果斷的離開。如果碰到間歇性空閑,那職業目標也會幫助你在空檔期建立一些有助于實現職業目標的短期計劃,讓你不至于拔劍四顧心茫然渾身沒個著力處。
### 生活目標
? ? 這個是最難扯明白的……你看那么多小說、散文、身心靈書籍,心理學書籍,勵志書籍,都企圖說明白這個問題,可是,從你的角度看,誰說明白了?所以呢,我一扯淡的主兒,也不大可能把這個東西說明白,我只有一句話,還是舶來的:
? ??我們在生活中所做的各種努力,多數是為了讓自己有歸屬感和價值感。
? ? 我其實是一個懵懂的人,當我決定做一個程序員時,像“我就適合干這個”、“我就喜歡干這個”、“我能干這個”之類的感覺和判斷都沒有,我的出發點相當樸實:在上一份工作中我感覺不到自己的價值,干得沒勁。
? ? 所以,從個人經驗出發,就工作而言,我覺得有時不是你覺得新的工作特別適合你、能讓你一展所長,而是你對上一份工作的現狀感到強烈的失望導致你愿意花一些機會成本來嘗試一下。如果你新公司所做之事與你個人的職業目標方向一致契合度高,那就更好了,簡直是中大獎了。
? ? 工作即生活,工作和生活不是割裂的,應當是和諧統一的。
? ? 工作是生活的一個重要組成部分,占據了我們年富力強的那段歲月的大部分時間。當我們考慮生活目標的時候,很可能就包括了工作目標。比如你想成為一個唱作俱佳的歌手,那唱歌和創作就會成為你的工作也會成為你的生活。比如你想成為一個偉大的程序員,寫出一個新的移動操作系統,把 Android 和 iOS 拍死在沙灘上,那估計你的生活也會因此發生翻天覆地的變化。
? ? 我們來說普通人吧,像我們這種屌絲程序員,大部分都是一般人兒,生活平淡、平凡、平常、平實,那么,我們的生活目標是什么呢?
? ? 哦,“年輕時拼了命賺錢,年老時拼了錢保命”,這當然不是我們推崇的生活。
? ? 那,“起得比雞早,睡得比狗晚,干得比驢多,吃得比豬差”,自然也不是我們想要的。
? ? “買房,買車,買女(男)朋友,養小寶寶……”,是這個嗎?
? ? ……
? ? 在我看來,這都是說不清道不明的東西,你喜歡干這件事兒,他愿意干那件事兒,你鐘意一擲千金花天酒地的生活方式,他甘于一簞食一瓢飲的日子,都挺好的。如果你能做到“采菊東籬下,悠然見南山”,我會非常羨慕,甚至還會有嫉妒恨。
? ? 我就恨自己這種沒有立場的態度!來罵我吧,求虐。
? ? 時間永是流逝,而未來不會自動到來。未來需要我們自己去創造。簡單點說,我們就是通過實現一個目標又一個目標來抵達并創造未來的。沒有目標、規劃,就沒有你想要的未來。
? ? 有時我們看不了太遠,那就從近期的目標著手,看看自己今年、明年的想做的事情都有什么,在一張紙上列一列,分析一下。哪些事兒不做就會讓自己后悔,那這些事兒就具有重要的意義,要制定計劃去完成它們。哪些事情做了會讓我們更有成就感,那也可以排在前面去實現。哪些事情具有遞進特性,可以延伸出新的目標……分析之后,你就可以確定那么幾件必須完成的,這就是你的目標了。
? ??**生活目標其實就是一件如果你愿意投入精力去做,就可能達到的事**。
? ? 比如你今年想考個駕照,明年買輛車,也算一個非常具體的目標。
? ? 再比如你今年要找到一個妹子告別單身,明年讓你老媽報上孫子,也是一個很切實際并令人振奮的目標。
? ? 今年再寫一本技術周邊的書,這是我的一個目標。
? ? 比如你希望用三年時間完成一次職位晉升,從程序員變成軟件項目經理……
? ? 只要你愿意正視自己并花時間去分析,一定會找出一些你想做的事情。而這些事情,能讓你有歸屬感和價值感的,就可以成為一個好目標。
? ? 最后,我想說的是,不論你追求什么樣的生活方式,你的生活目標是什么,最終落腳點,其實是“心”,當你或舒緩或緊張地隨著時間的河流拋灑自己的生命時,只要你感到心安,感到喜悅,感到平和,這就夠了,別的說多了都是扯淡,因此就生活目標這個話題,我打算就這么著了。
## 為目標而努力
? ? 目標就是計劃。
? ? 有目標無計劃,一定白瞎。
? ? 要實現目標,得堅持、努力執行你的計劃。
### 工作目標
? ? 前面我們談公司目標時提到公司目標會分解到個人,還提到 MBO 。那 MBO 里其實不但有目標,還有實現目標的措施,以及對這些措施的管理。如果你是個普通的程序員,公司或者你的上級應該輔助你制定這些東西,如果你們公司不用目標管理法,那我建議你自己搞明白目標管理法是怎么回事兒,因為它不僅適用于工作,也適用于生活。
? ? 我們以開發一個推送服務為例來說明如何建立目標和計劃。
? ? 目標是:開發一個推送服務。這個有點籠統,還需要把服務指標細化一下:
* 支持 Android 、 iOS 兩個平臺
* 支持億級用戶
* 消息可以在 2 秒內抵達手機
* 消息抵達率為 99%?
* 服務要 7x24 小時運行,故障恢復時間小于 1 分鐘
? ? 現在服務指標有了,假如你是項目經理,你的 MBO 卡中“開發推送服務”這條內容基本就 OK 了,再填入實現措施、預期時間什么的,就完整了。
? ? 而要弄明白實現措施和時間,我們就還需要進一步來考慮實現措施。
? ? 在制定實現措施前,這些需求還要進一步細化。我們以第一條,支持 Android 、 iOS 兩個平臺為例來說明。
? ? 推送服務應該分為服務端和客戶端。
? ? 服務端是不需要跨平臺的,你可以使用 Windows 、 Ubuntu Server 、 Cent OS 之類的,隨便選一個好啦。服務端還需要管理界面,能讓運營人員從管理界面上編輯并提交推送消息。估計還得要 API 接口,可能有些程序會自動產生要推送的消息。
? ? 服務端和客戶端需要通信,你要定義通信協議。
? ? Android 需要實現接入模塊,必須是 Service ,還得應對待機問題、第三方安全軟件查殺問題。 iOS 必須考慮到蘋果的限制,可能要與 iOS 內置的 push 機制結合。
? ? 這里面事兒挺多的啊。再挑一個來細化,拿通信協議說吧。
? ? 通信協議有開源的啊,比如 XMPP ,MQTT ,當然也可以自己定義。那選擇哪個呢?你要開放給第三方使用嗎?
? ? ……
? ? 你看,有這么多事兒等著我們做呢,興奮吧。不管你順著哪個需求點梳理下去,都會分解出很多功模塊,每個功能模塊又可以再拆分……本文不可能來干這么專業的事兒,留給項目經理吧,他們干這個靠譜。我在這里只是想說明,在工作上,你要想實現一個目標,必然是得經歷目標分解的過程,把大目標分解到一個又一個小的、可以在三兩天就能實現的任務,這樣才具有可執行性。然后把這些任務排排座,每個任務都給個時間盒,計劃就出來了。最后就可以按計劃來執行你的項目完成你的目標了。
### 如何有效利用空檔期
? ? 本文起源于“如何告別混日子”這個問題,那么,問題來了:
? ? 在工作中,沒事兒干的時候該做什么?
? ? 前面談職業目標時提到,清晰的職業目標會幫助你渡過工作期間的閑暇時間(如果有的話)。
? ? 舉個我個人的例子吧。
? ? 2014 年年中,我負責的產品終止開發(只剩維護),有幾個月的時間沒什么具體的事情可做。晃蕩一天可以,晃蕩時間長了這心里發慌啊。幸好我對技術情有獨鐘,也比較愛鉆研(臉有點兒紅,其實我是個淺嘗輒止的家伙),于是,我就想看看之前用過的框架—— Qt ——怎么樣了,于是就去研究,哇,居然支持 Android 了,也支持 iOS 了!興奮呢,立馬下載最新版本,搭建環境,開始寫代碼做實驗,完了總結一下,分享到博客上。
? ? 就這么著,繼續學習技術,幫助我度過了原本可能無所事事的幾個月,慶幸時光沒有白費。那段時間的研究,還機緣巧合出了本書:《[Qt on Android核心編程](http://item.jd.com/11571639.html)》。說實話我很享受那個學習、寫書的過程。天天晚上熬夜寫,天天早上早起寫,周末窩在家里調試代碼,樂而不覺其苦。很多事情都是這樣子的,你喜歡干就不覺得苦。當我寫完書時,反倒覺得空蕩蕩的。
? ? 其實我們在開發過程中,會用到各種各樣的技術,多數時候為了趕項目,都是以實現功能為第一個要務,只見樹木不見森林,用過了就扔一邊了。新項目來了,急吼吼地又忙活去了。但你要想提高,就得回顧、總結、拓展,把用過的那些技術一一列出來,在閑暇的時候,以你用過的那個技術點為中心來畫同心圓,一層層向外擴展,豐富你的積累。這是不辜負大好時光的好辦法。
? ? 也有程序員的中期職業目標是做技術管理,那如果你有空閑的時候(沒空閑也要擠時間),那就可以看看項目管理方面的書籍,比如《項目管理知識體系指南(PMBOK指南)》、《項目管理:計劃、進度和控制的系統方法》、《人月神話》、《帶人的技術:不懂帶人你就自己做到死》、《軟件工程(實踐者的研究方法)》、《項目管理修煉之道》……等等,讓自己對項目管理和團隊管理有個理論上的認識。相關書籍很多,簡直可以用汗牛充棟來形容,我列出的那些不過九牛一毛,更多的書籍你可以利用亞馬遜之類的網站的相關推薦來了解。
### 新目標的誕生
? ? 生活就像翻山越嶺,一山過去還有一山,我們就這么一直不斷地攀登。在攀登的過程中,有時你會發現新的山峰,新目標就誕生了。
? ? 在我寫作《[Qt on Android核心編程](http://item.jd.com/11571639.html)》的過程中,我發現 Qt Quick 這個框架簡潔、優雅、強大,而我沒有照顧到它,心里總不是那么安寧,覺得這么好的東西應該給它一點關注。于是我就定了目標:研究 Qt Quick ,寫一本專講 Qt Quick 的書。
? ? 有了目標,我很快從寫完《[Qt on Android核心編程](http://item.jd.com/11571639.html)》的空虛中走出來,把自己的閑暇時間都投入到研究 Qt Quick 中了。
? ? 選定要講的內容,列出大綱,制定計劃,評估每個主題預期花多長時間,寫成文章又花多長時間,最終制定了一個粗略的計劃,準備在三到四個月內完成整個工作。
? ? 有了計劃后,我就梳理安排自己的時間,把晚上、清晨、周末都用上,一個主題一個主題的去研究,學習時記錄自己的心得保留示例程序……?
? ? 3 個月過去后,我積攢了大量的原始資料,《[Qt Quick核心編程](http://item.jd.com/11587406.html)》也基本完稿了。
? ? 沒人要求我寫書,這都是因為我本身喜歡寫作又喜歡技術,是一種自發的行為。研究學習技術的過程讓我感到舒服,寫作讓我覺得自己有價值,所以我愿意做這樣的事情,哪怕金錢上的回報寥寥也不以為意。
## 行動起來
? ? 最后的最后,我們必須強調的是:一切目標、計劃,必須落實到行動上來,否則都是空談!個體之間為什么有那么大差異?除卻拼爹的因素,最重要的一點就是:有的人坐而論道,有的人用行動證明自己。
- 前言
- 受刺激啦,開篇啦
- 群星閃耀的黃金時代
- 3D打印能打印出程序猿嗎
- 程序員零門檻?
- 看看你離優秀有多遠
- 程序員的生活就這樣嗎
- 別說“我已經很努力了”
- 無BUG不生活
- 一張圖道盡程序員的出路
- 薪資,你是我不能言說的傷
- 找工作的辟邪劍譜
- 誰是為加班而生的
- 程序員到底是什么角色
- 讓程序員蛋疼的那些事兒
- 噢,我不想成為問題!
- 軟件開發的十八般樂趣
- 你的幸運女神呢
- 怎樣成為技術達人
- 程序員該不該考慮初創公司
- 那些害死程序員的細節
- 一個老程序員的2014年終總結
- 千奇百怪的程序員
- 咦,你也在混日子啊
- 任性,春節前辭職
- 請區別對待女程序員
- 傷心小箭,你中了幾枝
- 怎么告別“混日子”
- 神奇的四步編程法
- 快來約這些女生,保你脫單
- 程序員跳槽神級攻略
- 程序員的神秘等式,你造幾個?
- 這10個問題去哪兒啦
- 程序員保值的4個秘密
- 她發現了一個Bug……
- 別被技術綁架
- 程序員如何變身IT講師
- 程序員的能力拓展模型
- 軟件項目9步神曲
- 史上最全的程序員求職渠道總結
- 樂觀的程序員
- 三個因素決定你的薪水高低
- 給新程序員的10條建議
- 項目進度估算難題
- 程序員被人喜歡的13點原因
- 怎樣新學一門技術
- 月薪3萬的程序員都避開了哪些坑
- 如何快速定位自己熱愛的工作
- 這8種武器點亮程序員的個人品牌
- 程序員,這12個問題讓經理比你痛苦多了
- 親愛的程序猿們怎么找工作
- 漫談選人與培訓
- 自我發現,找到適合自己的職位
- SMART原則助你設定有效目標
- 培訓機構畢業的程序員被歧視的背后邏輯