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

如何尋找目标?這是非常關鍵的一點。
感覺文章越寫越正式,這偏離了我的初衷,有點惴惴不安,也有點不适應呢。
我把程式員的目标分為三類:公司目标、職業目标、生活目标。
公司目标
程式員是公司的一份子,參與到實作公司目标的過程中。這個沒什麼好說的,食君之祿忠君之事,拿了人家的錢,就是要給人家幹活兒的。
美國管理學家彼得·德魯克在其1954 年出版的《管理的實踐》一書中,首先提出了“目标管理”的概念,然後目标管理(Management by Objectives,MBO)大行其道,到現在依然被廣泛使用,有非常多的公司在使用 MBO 。我之前所在的西安信利軟體科技有限公司,也曾經推行過目标管理。當時還學習了另外一本書,(日)串田武則的《目标管理實務手冊》,感覺大有收獲。
目标管理有五個要素:
- 什麼目标
- 達到何種程度
- 如何實作
- 何時完成
- 完成得怎麼樣
通常公司在實施 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核心程式設計》。說實話我很享受那個學習、寫書的過程。天天晚上熬夜寫,天天早上早起寫,周末窩在家裡調試代碼,樂而不覺其苦。很多事情都是這樣子的,你喜歡幹就不覺得苦。當我寫完書時,反倒覺得空蕩蕩的。
其實我們在開發過程中,會用到各種各樣的技術,多數時候為了趕項目,都是以實作功能為第一個要務,隻見樹木不見森林,用過了就扔一邊了。新項目來了,急吼吼地又忙活去了。但你要想提高,就得回顧、總結、拓展,把用過的那些技術一一列出來,在閑暇的時候,以你用過的那個技術點為中心來畫同心圓,一層層向外擴充,豐富你的積累。這是不辜負大好時光的好辦法。
也有程式員的中期職業目标是做技術管理,那如果你有空閑的時候(沒空閑也要擠時間),那就可以看看項目管理方面的書籍,比如《項目管理知識體系指南(PMBOK指南)》、《項目管理:計劃、進度和控制的系統方法》、《人月神話》、《帶人的技術:不懂帶人你就自己做到死》、《軟體工程(實踐者的研究方法)》、《項目管理修煉之道》……等等,讓自己對項目管理和團隊管理有個理論上的認識。相關書籍很多,簡直可以用汗牛充棟來形容,我列出的那些不過九牛一毛,更多的書籍你可以利用亞馬遜之類的網站的相關推薦來了解。
新目标的誕生
生活就像翻山越嶺,一山過去還有一山,我們就這麼一直不斷地攀登。在攀登的過程中,有時你會發現新的山峰,新目标就誕生了。
在我寫作《Qt on Android核心程式設計》的過程中,我發現 Qt Quick 這個架構簡潔、優雅、強大,而我沒有照顧到它,心裡總不是那麼安甯,覺得這麼好的東西應該給它一點關注。于是我就定了目标:研究 Qt Quick ,寫一本專講 Qt Quick 的書。
有了目标,我很快從寫完《Qt on Android核心程式設計》的空虛中走出來,把自己的閑暇時間都投入到研究 Qt Quick 中了。
標明要講的内容,列出大綱,制定計劃,評估每個主題預期花多長時間,寫成文章又花多長時間,最終制定了一個粗略的計劃,準備在三到四個月内完成整個工作。
有了計劃後,我就梳理安排自己的時間,把晚上、清晨、周末都用上,一個主題一個主題的去研究,學習時記錄自己的心得保留示例程式……
3 個月過去後,我積攢了大量的原始資料,《Qt Quick核心程式設計》也基本完稿了。
沒人要求我寫書,這都是因為我本身喜歡寫作又喜歡技術,是一種自發的行為。研究學習技術的過程讓我感到舒服,寫作讓我覺得自己有價值,是以我願意做這樣的事情,哪怕金錢上的回報寥寥也不以為意。
行動起來
最後的最後,我們必須強調的是:一切目标、計劃,必須落實到行動上來,否則都是空談!個體之間為什麼有那麼大差異?除卻拼爹的因素,最重要的一點就是:有的人坐而論道,有的人用行動證明自己。
-----------回顧分割線-------------------
- 漫談程式員系列:讓程式員蛋疼的那些事兒
- 漫談程式員系列:傷心小箭,你中了幾枝
- 漫談程式員系列:你的幸運女神呢
- 漫談程式員系列:咦,你也在混日子啊
- 漫談程式員系列:請差別對待女程式員
- 漫談程式員系列:任性,春節前辭職
- 漫談程式員系列:薪資,你是我不能言說的傷
- 漫談程式員系列:程式員該不該考慮初創公司
- 漫談程式員系列:千奇百怪的程式員
- 漫談程式員系列:那些害死程式員的細節
- 漫談程式員系列:一個老程式員的2014年終總結
- 漫談程式員系列:怎樣成為技術達人
- 漫談程式員系列:誰是為加班而生的
- 漫談程式員系列:找工作的辟邪劍譜
- 漫談程式員系列:一張圖道盡程式員的出路
- 漫談程式員系列:軟體開發的十八般樂趣
- 漫談程式員系列:程式員到底是什麼角色
- 漫談程式員系列:别說“我已經很努力了”
- 漫談程式員系列:無BUG不生活
- 漫談程式員系列:程式員的生活就這樣嗎
- 漫談程式員系列:看看你離優秀有多遠
- 漫談程式員系列:程式員零門檻?
- 漫談程式員系列:3D列印能列印出程式猿嗎
- 漫談程式員系列:群星閃耀的黃金時代
- 漫談程式員系列:受刺激啦,開篇啦