顛覆平庸:在技術(shù)上持續(xù)精進(jìn)

80-20

本文很長(zhǎng),約 9200 字,需要認(rèn)真閱讀 30 分鐘,趕時(shí)間的朋友,看看下面的導(dǎo)圖也會(huì)有一些幫助。

轉(zhuǎn)載請(qǐng)簡(jiǎn)信聯(lián)系我獲得授權(quán)。

你肯定想要顛覆平庸,保持技術(shù)精進(jìn),但這是一件極其困難的事。正因其困難,本文才有存在的意義——因?yàn)樗枋鲆话阈苑椒ê驮恚憧梢詮闹姓页鲞m合自己的地方,付諸實(shí)踐,獲得你個(gè)人化的精進(jìn)策略。

本文的結(jié)構(gòu)導(dǎo)圖,方便后面的閱讀:

文章結(jié)構(gòu)導(dǎo)圖

作為開發(fā)者,工作了 2~3 年后,往往會(huì)感到迷茫:能夠使用一種或者幾種技術(shù)解決一些問(wèn)題了,卻覺(jué)得自己停滯了,不知道接下來(lái)怎么辦。于是我們有時(shí)羨慕做管理的,覺(jué)得他們輕松、地位高、賺錢多,有時(shí)又羨慕技術(shù)大咖,覺(jué)得他們能搞定別人搞不定的問(wèn)題,像神一樣會(huì)發(fā)光,可是回看我們自己,到底是接著做技術(shù)呢,還是轉(zhuǎn)管理呢?如果做技術(shù),接下來(lái)該怎么精進(jìn),如果不做,又該怎么轉(zhuǎn)型?這都是問(wèn)題……每日煎熬著我們。

我有十幾年的開發(fā)和管理經(jīng)驗(yàn),對(duì)于開發(fā)者的各種迷茫,深有體會(huì)。一般來(lái)看,開發(fā)者的迷茫分兩個(gè)層面:

  1. 方向上的迷茫,即我到底適不適合做開發(fā)、要不要繼續(xù)在開發(fā)的路上走下去
  2. 執(zhí)行層的迷惑,即我繼續(xù)做開發(fā),該怎么找目標(biāo)、學(xué)點(diǎn)什么、學(xué)到什么程度、如何能一直精進(jìn)。

我們的 Chat 就從這兩方面來(lái)展開,先講如何確認(rèn)自己是否要繼續(xù)做開發(fā),這部分會(huì)提供一些方法(比如工作的三種分類、時(shí)間感覺(jué)、成就感來(lái)源、工作感受等),讓大家能夠自我覺(jué)知和判斷;然后我們會(huì)沿著開發(fā)這條線繼續(xù)前進(jìn),看看如何在技術(shù)上持續(xù)精進(jìn),這部分最重要的是對(duì)標(biāo)管理法及其四種典型標(biāo)桿;再接下來(lái),我們會(huì)講怎樣設(shè)定有效目標(biāo),找到下一步行動(dòng),把精進(jìn)落地;最后,我們會(huì)介紹四個(gè)習(xí)慣,讓精進(jìn)成為你自身的一部分。

我要繼續(xù)做開發(fā)嗎

有幾種方法,可以幫助你判斷要不要繼續(xù)做開發(fā):

  1. 工作的三種維度
  2. 成就感來(lái)源
  3. 對(duì)時(shí)間的感受
  4. 對(duì)開發(fā)工作的感受

工作的三種維度

根據(jù)交互對(duì)象不同,工作可分為三類:

  • 數(shù)據(jù)和信息處理
  • 人際互動(dòng)
  • 事務(wù)型操作

開發(fā)者偏重與數(shù)據(jù)和信息打交道,以信息和數(shù)據(jù)為輸入,也以信息和數(shù)據(jù)為輸出。

假如你發(fā)現(xiàn)自己更愿意圍繞著人際交互來(lái)做事情,希望自己的工作中大部分時(shí)間都在和人打交道,那可能你更適合做銷售、市場(chǎng)、客服、咨詢師等方面的工作。

假如你發(fā)現(xiàn)自己更愿意做操作性的工作,比如修理電腦、組裝電腦、搭建局域網(wǎng)、修理汽車等,那可能軟件開發(fā)工作可能不太適合你。

假如你覺(jué)得信息很迷人,很享受與信息和數(shù)據(jù)之間這種確定性、一致性、可預(yù)期性較高的互動(dòng)方式,也很享受通過(guò)組織、修改、整合、創(chuàng)造信息來(lái)解決問(wèn)題這種工作方式,那你有比較大的概率是適合做開發(fā)的。我們可以繼續(xù)往下看,用其它方法來(lái)繼續(xù)分析自己。

成就感來(lái)源

2015 年底創(chuàng)業(yè)失敗,我決定找一家單位上班。此時(shí)我 35 歲,在很多人眼里這個(gè)年齡的程序員已經(jīng)要被淘汰了。我面臨的選擇是:做開發(fā)開始做管理。

從 2009 年開始我就在做技術(shù)管理工作,這時(shí)比較傳統(tǒng)的做法是,找一個(gè)研發(fā)經(jīng)理的職位來(lái)做(當(dāng)時(shí)有幾個(gè)不錯(cuò)的機(jī)會(huì)),一來(lái)職業(yè)生涯有延續(xù)性,而來(lái)薪水也高。可是我后來(lái)選擇了到全時(shí)云商務(wù)做開發(fā)工作,讓很多朋友大跌眼鏡。

我為什么這么選擇?其中的關(guān)鍵點(diǎn)是:我覺(jué)得親力親為解決問(wèn)題更有成就感

回顧我多年的開發(fā)和管理經(jīng)歷,我發(fā)現(xiàn)在我寫作《Qt Quick核心編程》時(shí),在我一周 7 天不休息加班加點(diǎn)重構(gòu)智能機(jī)頂盒播放器時(shí),感覺(jué)最為充實(shí),最有意義感。而在我做管理工作時(shí),即便帶領(lǐng)團(tuán)隊(duì)完成了某項(xiàng)任務(wù),我也沒(méi)什么特別的感覺(jué),即便有一些興奮感和成就感,也很快會(huì)被委派任務(wù)、一對(duì)一談話等事情淹沒(méi)。

所以我思來(lái)想去,決定做回開發(fā),這樣我更能感受到意義和價(jià)值,更有成就感。

每個(gè)人的成就感來(lái)源都不一樣,假如你像我一樣,High 點(diǎn)在于自己動(dòng)手解決具體的技術(shù)問(wèn)題,那開發(fā)工作就更適合你;假如領(lǐng)導(dǎo)和管理別人完成目標(biāo)讓你更有快感,那管理工作適合你。

實(shí)際上這一點(diǎn)和前面介紹的“工作的三種分類”是類似的。你越傾向于做人際互動(dòng)類的事情,就越適合做管理工作,你越傾向于和數(shù)據(jù)、信息交互,就越適合做開發(fā)工作。

尋找成就感來(lái)源可以遵循下面的步驟:

  1. 回顧你做過(guò)的事情,找出那些讓你情感反應(yīng)強(qiáng)烈的,記錄下來(lái)。
  2. 分析你的情緒底色,是快樂(lè)、高興、振奮、愉悅、充實(shí)等積極情緒,還是沮喪、灰心、挫敗、失落、空虛、失望等消極情緒。
  3. 挑選出帶給你強(qiáng)烈積極感受的事件,它們就是你的成就感事件
  4. 分析成就感事件,看看它們用到了什么知識(shí)、技能、軟能力,看看在這些事件中,你印象深刻的交互對(duì)象是什么(數(shù)據(jù)、人、事務(wù))

可能有的朋友會(huì)說(shuō),即便有這 4 個(gè)步驟,也判斷不出來(lái)自己的成就感來(lái)自哪里,不怕,下面這個(gè)簡(jiǎn)潔的方法可以幫到你。

對(duì)時(shí)間的感受

做個(gè)小測(cè)試,用是和否來(lái)回答下面 3 個(gè)問(wèn)題:

  1. 寫代碼讓你覺(jué)得時(shí)間很難熬,一秒猶如一萬(wàn)年。
  2. 當(dāng)你回顧一天、一周、一月的工作,經(jīng)常后悔自己在開發(fā)上投入了太多的時(shí)間。
  3. 你覺(jué)得花費(fèi)在軟件開發(fā)上的時(shí)間沒(méi)有什么意義。

如果你的答案是三個(gè)“是”,那么,你可能不該再做開發(fā)了。如果是三個(gè)“否”,那么,再回答下面 3 個(gè)問(wèn)題:

  1. 寫代碼時(shí)有沉浸感,感覺(jué)不到時(shí)間流逝,被中斷時(shí)經(jīng)常有意猶未盡的感覺(jué)。
  2. 當(dāng)你回顧一天、一周、一月的工作,經(jīng)常覺(jué)得自己應(yīng)該在開發(fā)上投入了更多的時(shí)間。
  3. 你覺(jué)得花費(fèi)在軟件開發(fā)上的時(shí)間非常值得。

如果你的答案是三個(gè)“是”,那么恭喜你,開發(fā)工作是你的最愛(ài),繼續(xù)做下去吧,跟隨自己的感覺(jué)。你可以跳到“在技術(shù)上持續(xù)精進(jìn)”那部分,接著閱讀。

如果你的答案有“是”有“否”或者不太確定,再往下看。

對(duì)開發(fā)工作的感受

你可以用下面這些問(wèn)題來(lái)探索自己對(duì)開發(fā)工作的感受:

  1. 看到代碼是否有“似曾相識(shí)燕歸來(lái)”的溫暖?
  2. 隔一段時(shí)間不寫代碼,是否會(huì)充滿懷念,有想打開 IDE 寫點(diǎn)什么的沖動(dòng)?
  3. 是否經(jīng)常有這樣的時(shí)刻:看著自己的代碼,有種“相看兩不厭,唯有敬亭山”的喜悅?
  4. 有沒(méi)有那么一些時(shí)候,你看著自己的代碼,會(huì)不自覺(jué)地想:這里或那里改改是不是更好一些?
  5. 當(dāng)你看到令人眼前一亮的 App 或網(wǎng)站或其它軟件,會(huì)不會(huì)發(fā)出“要是我來(lái)做該怎么做”之類的問(wèn)題?
  6. 你有沒(méi)有想讓別人閱讀你代碼的沖動(dòng)?
  7. 你有沒(méi)有讀別人代碼的沖動(dòng)(想看到更好的代碼)?
  8. 別人指出 Bug、錯(cuò)誤或設(shè)計(jì)瑕疵,你會(huì)生氣、拒絕還是接納感激?
  9. 修復(fù)一個(gè) Bug,你是為這個(gè) Bug 被解決掉高興多一些還是為你的代碼(軟件)更完美而高興多一些?
  10. 聽到新語(yǔ)言、新框架、新系統(tǒng)、開發(fā)者大會(huì)等相關(guān)的消息,你是很想了解還是懶得搭理?
  11. 有技術(shù)大咖在你身邊出現(xiàn)時(shí),想去結(jié)交還是懶得理他?
  12. 看見別人的爛代碼,你是吐糟真 TM 爛然后繞過(guò)還是想擼起袖子把它改好?
  13. 看見別人的優(yōu)秀代碼,會(huì)不會(huì)羨慕,會(huì)不會(huì)想“要是我也能寫出這么漂亮的代碼就好了”?
  14. 當(dāng)你完成一個(gè)模塊、功能、系統(tǒng),解決一個(gè)問(wèn)題時(shí),是有“快感”、“成就感”還是有“終于交差了”的感覺(jué)?
  15. 想到你開發(fā)的軟件可以幫助別人解決問(wèn)題帶來(lái)好處你是否感到期待、興奮?
  16. 你是否想建立屬于自己的軟件資源(比如工具、類庫(kù))?
  17. 你是不是像蜜蜂一樣總是把看到的與軟件相關(guān)的好東西收藏起來(lái)?
  18. 為了可以繼續(xù)做開發(fā),你是否愿意忍受一些不愉快的事情,比如領(lǐng)導(dǎo)的批評(píng)、客戶的抱怨、需求的變更?

思考這些問(wèn)題,體會(huì)自己的感受。

完成這個(gè)練習(xí),根據(jù)自己的感受,你就可以判斷出來(lái)要不要繼續(xù)做開發(fā)。

如果通過(guò)上面這些方法,綜合分析之后,你發(fā)現(xiàn)自己更愿意在開發(fā)之路上前進(jìn),那 Ok ,咱們接著往下走,看看執(zhí)行層面上我們?cè)撛趺醋霾拍鼙3志M(jìn)。

在技術(shù)上持續(xù)精進(jìn)

在專業(yè)領(lǐng)域成長(zhǎng)的一般模型如下圖所示:

精進(jìn)模型

模型中有三個(gè)要素:

  • 現(xiàn)狀
  • 目標(biāo)
  • 執(zhí)行計(jì)劃

每個(gè)人都可以評(píng)估自己的現(xiàn)狀,我在做什么、用什么技術(shù)、技術(shù)達(dá)到了什么程度、拿多少薪水、什么職級(jí)、是否被領(lǐng)導(dǎo)認(rèn)可、與人協(xié)作是否順暢……有很多維度,靜下心來(lái)思考一下,在紙上列一列,就能自己得出當(dāng)下的狀態(tài)。

而目標(biāo)則很可能隨著舊目標(biāo)的達(dá)成而消失,或者隨著日復(fù)一日的編碼、Debug、交付而褪色,或者隨著每個(gè)月的薪水蒸發(fā)掉。一旦我們失去了目標(biāo),就會(huì)陷入迷茫,被動(dòng)工作,進(jìn)而,慢慢失去競(jìng)爭(zhēng)力。

所以,要想日有寸進(jìn),必須要在日常的開發(fā)工作中找到努力的目標(biāo)。這非常關(guān)鍵——很多人就是因?yàn)闆](méi)有目標(biāo)而放任自己隨波逐流被動(dòng)工作最終變得庸常而被他人淹沒(méi)或者被組織淘汰。

因此我們引入原本用于企業(yè)的對(duì)標(biāo)管理法,幫助自己在日常工作中找到貼合自己的目標(biāo)。一旦我們找到目標(biāo),對(duì)比現(xiàn)狀,就可以找到差距和前進(jìn)方向,有了方向,就可以制定計(jì)劃,穩(wěn)步前進(jìn),獲得提升。

下圖是實(shí)踐對(duì)標(biāo)管理法指導(dǎo)個(gè)人成長(zhǎng)的基本過(guò)程:

個(gè)人對(duì)標(biāo)管理法

以下解釋來(lái)自百度百科:

????對(duì)標(biāo)管理,由美國(guó)施樂(lè)公司于 1979 年首創(chuàng),均將其視為現(xiàn)代西方發(fā)達(dá)國(guó)家企業(yè)管理活動(dòng)中支持企業(yè)不斷改進(jìn)和獲得競(jìng)爭(zhēng)優(yōu)勢(shì)的最重要的管理方式之一,西方管理學(xué)界將對(duì)標(biāo)管理與企業(yè)再造、戰(zhàn)略聯(lián)盟一起并稱為20世紀(jì)90年代三大管理方法。

????對(duì)標(biāo)管理是指企業(yè)以行業(yè)內(nèi)或行業(yè)外的一流企業(yè)作為標(biāo)桿,從各個(gè)方面與標(biāo)桿企業(yè)進(jìn)行比較、分析、判斷,通過(guò)學(xué)習(xí)他人的先進(jìn)經(jīng)驗(yàn)來(lái)改善自身的不足,從而趕超標(biāo)桿企業(yè),不斷追求優(yōu)秀業(yè)績(jī)的良性循環(huán)過(guò)程。

????所謂“對(duì)標(biāo)”就是對(duì)比標(biāo)桿找差距。推行對(duì)標(biāo)管理,就是要把企業(yè)的目光緊緊盯住業(yè)界最好水平,明確自身與業(yè)界最佳的差距,從而指明了工作的總體方向。

在針對(duì)個(gè)人運(yùn)用對(duì)標(biāo)管理法時(shí),可以從四個(gè)方面來(lái)尋找標(biāo)桿:

  • 優(yōu)秀的人
  • 一般性規(guī)律
  • 技術(shù)本身的知識(shí)層次
  • 項(xiàng)目指標(biāo)

接下來(lái)我們就從這四個(gè)方面展開,看看怎么尋找我們的目標(biāo)。

從優(yōu)秀者身上找目標(biāo)

我們身邊一定有人在某方面做得比自己好,比如:

  • 張三設(shè)計(jì)文檔寫得結(jié)構(gòu)合理、條理清晰
  • 李四 UML 圖表畫得準(zhǔn)確
  • 王五對(duì) ES6 標(biāo)準(zhǔn)掌握得好
  • 趙六對(duì)代碼管理門清
  • 錢七架構(gòu)設(shè)計(jì)能力超群對(duì)產(chǎn)品的架構(gòu)如數(shù)家珍
  • 毛八每天上班前都會(huì)列出要完成的三件事下班時(shí)都會(huì)總結(jié)
  • 胡九學(xué)習(xí)新技術(shù)特別快總是在項(xiàng)目組中擔(dān)任技術(shù)預(yù)研角色
  • ……

別人做得好的方面,都可能是我們努力的方向。我們要用善于發(fā)現(xiàn)的眼睛,找到身邊人的突出之處。

在向優(yōu)秀者對(duì)標(biāo)時(shí),下面的問(wèn)題清單可以幫助我們有序地、系統(tǒng)的分析標(biāo)桿:

  • 他在什么事情上做得突出?是怎么做到的?
  • 他有哪些知識(shí)、技能是我不具備的?
  • 他有哪些提升效率的工具?
  • 他有哪些好的工作習(xí)慣?

舉個(gè)例子。

袁大每天都能準(zhǔn)時(shí)下班,工作還完成的蠻好。你對(duì)這點(diǎn)很感興趣,就觀察他做事,發(fā)現(xiàn)他過(guò)一段時(shí)間就會(huì)翻看一下紙質(zhì)筆記本,或者用筆在本子上記錄點(diǎn)什么,還有,每天下班的時(shí)候,他都會(huì)在本子上寫點(diǎn)東西。

于是你就跟他聊天,發(fā)現(xiàn)他每天下班都會(huì)在筆記本上記錄今天完成了什么、遇到了什么問(wèn)題、明天做什么。還了解到他每天都會(huì)早到半個(gè)小時(shí)左右,利用這半個(gè)小時(shí)規(guī)劃一天的工作。

后來(lái)你明白了,袁大培養(yǎng)了一個(gè)“早規(guī)劃晚回顧”的工作習(xí)慣,通過(guò)這個(gè)習(xí)慣,保證每天都有幾件重要的事可做,每天都有目標(biāo),有節(jié)奏,這樣就可以不慌不忙的工作。

于是你就會(huì)思考:袁大的習(xí)慣可以不可成為我的習(xí)慣?

這個(gè)時(shí)候,你就找到了一個(gè)提升的方向:培養(yǎng)每日完成三件事的習(xí)慣。一旦你養(yǎng)成這個(gè)習(xí)慣,習(xí)慣的力量就會(huì)幫助你集腋成裘,完成從量變到質(zhì)變的過(guò)程。

再舉個(gè)例子。

你發(fā)現(xiàn)組里的袁二,排查 Bug 特別厲害,像一休哥一樣,點(diǎn)點(diǎn)頭沉思一下,就可以說(shuō)出問(wèn)題所在的地方。即便是別人代碼引入的 Bug ,他也可以很快找到原因——只需要翻翻代碼,和這個(gè)人聊幾句。

為什么袁二這么牛逼?

你向他請(qǐng)教,發(fā)現(xiàn)他做到了以下幾點(diǎn):

  1. 對(duì)業(yè)務(wù)特別熟悉,非常清楚某個(gè)業(yè)務(wù)到底是什么,用戶在軟件上怎么使用這個(gè)業(yè)務(wù)
  2. 對(duì)業(yè)務(wù)邏輯和代碼的映射關(guān)系特別熟
  3. 愛(ài)看代碼,所有人的代碼都看

好啦,正好你總是被 Bug 困擾,往往一個(gè) Bug 能讓你愁煩一個(gè)星期,是不是有努力方向啦?

一般性規(guī)律

所謂一般性規(guī)律,指的是那些通用的,可以指導(dǎo)我們什么時(shí)候做什么事情的規(guī)律。

舉個(gè)例子,舒伯的生涯發(fā)展階段理論就是一般性規(guī)律,男大當(dāng)婚女大當(dāng)嫁也是一般性規(guī)律。

對(duì)于開發(fā)者來(lái)講,要關(guān)注專業(yè)能力成長(zhǎng)的一般性規(guī)律,即:技術(shù)成長(zhǎng)三階段。如下圖所示:

成長(zhǎng)階段

在技術(shù)領(lǐng)域內(nèi)的成長(zhǎng),基本上都會(huì)經(jīng)歷三個(gè)階段:

  1. 專項(xiàng)能力的提升,這是初級(jí)階段,你為了做事情,必須先具備某些基礎(chǔ)能力,比如你要學(xué)會(huì) Python、Visual Studio、Vue、TensorFlow 、Mybatis 等。
  2. 技能體系的構(gòu)建,這是中級(jí)階段,你擁有了一組技能,圍繞某個(gè)方向構(gòu)建了自己的知識(shí)圖譜,能夠用自己的方式來(lái)解決問(wèn)題。比如在C++這個(gè)方向上,你用 C++、Qt、OpenGL、libevent、ffmpeg、WebRTC 等組成了自己的知識(shí)圖譜,可以勝任流媒體方面的產(chǎn)品開發(fā)。
  3. 融合創(chuàng)新,這是高手階段,你具有了豐富的實(shí)踐經(jīng)驗(yàn),具備了 T 型知識(shí)結(jié)構(gòu),形成了自己的思維框架和解決問(wèn)題的框架,能夠融合不同領(lǐng)域的知識(shí),組合各種資源,創(chuàng)造性的解決各種問(wèn)題。此時(shí)你跳出了具體的技術(shù)束縛,站在了更高的層面,用底層認(rèn)知和思維來(lái)指導(dǎo)你的工作。

對(duì)開發(fā)者來(lái)講,一年左右經(jīng)驗(yàn),多數(shù)人處在第一個(gè)階段——專項(xiàng)能力提升的階段,熟悉某種編程語(yǔ)言,可以完成別人安排的一個(gè)小模塊的開發(fā)。

三年及以上的經(jīng)驗(yàn),就應(yīng)該進(jìn)入到第二個(gè)階段了。當(dāng)你在某個(gè)技術(shù)方向上構(gòu)建了技能體系,就可以完成相對(duì)復(fù)雜的工作,可以獨(dú)立的做一些事情,甚至可以輔導(dǎo)初級(jí)開發(fā)者來(lái)完成工作。這個(gè)時(shí)候,你往往已經(jīng)是團(tuán)隊(duì)里富有生產(chǎn)力的成員了。

五年往上的開發(fā)經(jīng)驗(yàn),應(yīng)該進(jìn)入到融合創(chuàng)新階段,能夠獨(dú)當(dāng)一面,可以獨(dú)立的完成特定項(xiàng)目的評(píng)估、設(shè)計(jì)、技術(shù)方案選擇等事情。此時(shí)你往往是團(tuán)隊(duì)里的技術(shù)領(lǐng)袖或者技術(shù)管理者,具有比較大的影響力。

假如一個(gè)開發(fā)者干上八年十年,還到不了第 3 個(gè)階段,可能就需要考慮通過(guò)其他方式來(lái)提升自己的競(jìng)爭(zhēng)力,保住自己在團(tuán)隊(duì)中的位置。

這個(gè)模型更適合應(yīng)用開發(fā)人員,對(duì)于做基礎(chǔ)研究的開發(fā)者,比如音頻算法、圖像處理算法等,第三個(gè)階段,可能是在他所在的領(lǐng)域內(nèi)鉆得更深,成為專家。

我們了解了技術(shù)成長(zhǎng)的三個(gè)階段,就可以結(jié)合自己的工作情況,判斷自己當(dāng)下處于哪個(gè)階段,該做什么事情。

比如你做了 2 年 PHP 開發(fā),可能你處于從第 1 階段向第 2 階段轉(zhuǎn)型的過(guò)程中,此時(shí)提升的方向,就可以考慮和PHP相關(guān)的技術(shù)棧,比如了解 HTTP 服務(wù)器如何和PHP整合在一起,比如了解數(shù)據(jù)庫(kù),比如了解操作系統(tǒng),這樣你就可能會(huì)定下掌握 LAMP (Linux/Apache/MySQL/PHP)或者 LNMP(Linux/Nginx/MySQL/PHP) 技術(shù)棧的目標(biāo)。

技術(shù)本身的知識(shí)層次

一門編程語(yǔ)言、一個(gè)技術(shù)框架,其本身的知識(shí)層次,也會(huì)有深淺,在學(xué)習(xí)時(shí),也存在先后順序和一般性規(guī)律。從這個(gè)角度上講,技術(shù)本身的深淺層次,也可以用于個(gè)人對(duì)標(biāo)管理。

一般來(lái)講,學(xué)習(xí)一門技術(shù)時(shí),有三個(gè)階段:

  1. 基礎(chǔ)開發(fā),了解 API,基 于API 開發(fā)應(yīng)用
  2. 熟悉內(nèi)核及原理,主要是了解框架的設(shè)計(jì)原理,閱讀源碼,洞悉內(nèi)在機(jī)理
  3. 優(yōu)化框架,主要是針對(duì)框架的已有功能的不足進(jìn)行完善、優(yōu)化,或者使用框架提供的機(jī)制擴(kuò)展框架功能,或者對(duì)框架進(jìn)行定制,讓它適合特定情境

我比較熟悉 Qt ,Qt 這個(gè)應(yīng)用開發(fā)框架,三階段的劃分可能是這樣:

Qt學(xué)習(xí)三階段

多數(shù)技術(shù)框架,通過(guò)分析,都可以劃分出類似上面的知識(shí)層次和學(xué)習(xí)階段。

以這個(gè)作為對(duì)標(biāo)的標(biāo)桿,就可以弄明白每個(gè)階段應(yīng)該達(dá)到什么程度,還可以定位自己處在哪個(gè)階段,當(dāng)前階段的任務(wù)有沒(méi)有完成,接下來(lái)該該學(xué)什么。

項(xiàng)目指標(biāo)

開發(fā)者的工作往往是由一個(gè)又一個(gè)的項(xiàng)目串起來(lái)的,每個(gè)項(xiàng)目都會(huì)有預(yù)期結(jié)果,都會(huì)界定怎么樣才算是完成,然后會(huì)有一系列的指標(biāo)用于衡量項(xiàng)目做得怎么樣,比 如 Bug 率、延期時(shí)間、并發(fā)用戶數(shù)、持續(xù)運(yùn)行時(shí)間、單元測(cè)試覆蓋率、安全性等。

我們?cè)谧鲰?xiàng)目時(shí),就可以用這些指標(biāo)來(lái)要求自己,這樣你每個(gè)項(xiàng)目都有目標(biāo),都可以制定一些策略,幫助自己來(lái)實(shí)現(xiàn)這些目標(biāo)。

很多開發(fā)者其實(shí)不大關(guān)心交付時(shí)間、Bug率、冒煙測(cè)試通過(guò)率、并發(fā)用戶支持、內(nèi)存占用、CPU占用、電池消耗等問(wèn)題,往往是做完了,能跑,就這樣吧。

以這樣的態(tài)度來(lái)應(yīng)付開發(fā)任務(wù),其實(shí)損失最大的是自己,因?yàn)槟惆装资チ隋憻捄吞嵘拇蠛脵C(jī)會(huì)。

如果我們以項(xiàng)目指標(biāo)來(lái)要求自己,把項(xiàng)目指標(biāo)分解到開發(fā)工作中,并且在開發(fā)過(guò)程中貫徹執(zhí)行,我們的收獲一定比被動(dòng)完成任務(wù)多得多。

舉個(gè)簡(jiǎn)單的例子,你用 Java 開發(fā)一個(gè)電商類的 Android App,內(nèi)存占用就應(yīng)當(dāng)是你關(guān)心的一個(gè)指標(biāo),否則你的應(yīng)用就會(huì)經(jīng)常出現(xiàn) OOM 錯(cuò)誤,嚴(yán)重?fù)p害用戶體驗(yàn),導(dǎo)致用戶大量卸載,最終影響產(chǎn)品的市場(chǎng)。

如果你把內(nèi)存占用作為重點(diǎn)考慮的指標(biāo),你一定會(huì)考慮如何使用圖片預(yù)縮放、重用、解碼格式、緩存等策略來(lái)優(yōu)化內(nèi)存占用,甚至你會(huì)自己設(shè)計(jì)一個(gè)圖片緩存池或者特殊的 ListView 來(lái)專門處理用戶快速瀏覽商品時(shí)巨大的內(nèi)存消耗。

你有了這樣的考慮,做出來(lái)的 App 肯定比你從未考慮過(guò)內(nèi)存占用問(wèn)題而穩(wěn)定得多。

目標(biāo)的設(shè)定與執(zhí)行

當(dāng)我們運(yùn)用個(gè)人對(duì)標(biāo)管理法從人、規(guī)律、技術(shù)、項(xiàng)目等四個(gè)方面找到目標(biāo)后,還要仔細(xì)地考慮兩個(gè)問(wèn)題:

  • 這個(gè)目標(biāo)適合我嗎
  • 如何完成這個(gè)目標(biāo)

適合性評(píng)估

先來(lái)看看如何判斷某個(gè)目標(biāo)是不是適合我。兩方面:

  1. 這個(gè)目標(biāo)和我的職業(yè)規(guī)劃是不是一致
  2. 這個(gè)目標(biāo)和我當(dāng)下的工作是不是可以關(guān)聯(lián)起來(lái)

你所在的團(tuán)隊(duì)里有位什么都可以搞定的全棧工程師,你非常羨慕這樣的人,用對(duì)標(biāo)管理法對(duì)他做了分析,發(fā)現(xiàn)他的知識(shí)圖譜包括HTML、JavaScript、CSS、AngularJS、Node.js、MySQL、Redis、C++等,那么,接下來(lái),你要把他的技能樹作為你的目標(biāo)嗎?

假如你也想成為一個(gè)全棧工程師,那 Ok ,你跟著他學(xué)習(xí) JavaScript 前后端開發(fā)沒(méi)有問(wèn)題;假如你的目標(biāo)是成為 WebRTC 領(lǐng)域的專家,那么,他的技術(shù)棧,對(duì)你幾乎沒(méi)什么幫助,參考意義不大。

我們?cè)谶\(yùn)用個(gè)人對(duì)標(biāo)管理法時(shí),一定要理性,結(jié)合自己的長(zhǎng)遠(yuǎn)目標(biāo),否則就會(huì)今天想學(xué)這個(gè)明天想學(xué)那個(gè),久而久之什么也沒(méi)學(xué)透。

如何完成目標(biāo)

當(dāng)你選定了與你相關(guān)的某個(gè)目標(biāo),如何完成??jī)蓚€(gè)關(guān)鍵點(diǎn):

  • 目標(biāo)必須是有效的
  • 找到下一步行動(dòng)

1) 有效目標(biāo)

首先你要確保你選擇的目標(biāo)是有效的,符合SMART原則:

  • S(Specific):目標(biāo)必須是具體的,要對(duì)標(biāo)特定的工作指標(biāo),不能籠統(tǒng)。比如我要學(xué)會(huì)前端開發(fā)就不具體,而“我要學(xué)會(huì) HTML5 、Angular 4、Bootstrap 3,用它們做Web管理界面”就相對(duì)具體。
  • M(Measurable):目標(biāo)必須是可衡量的,衡量的指標(biāo)是數(shù)量化或者行為化的,驗(yàn)證這些指標(biāo)的數(shù)據(jù)或者信息是可以獲取的;比如“ Bug 率控制在千分之三以內(nèi)”就是可衡量的,而軟件沒(méi)問(wèn)題就是非常模糊的說(shuō)法。
  • A(Attainable):目標(biāo)必須是可實(shí)現(xiàn)的,在付出努力的情況下可以實(shí)現(xiàn);比如“在兩周內(nèi)學(xué)會(huì) HTML5 、Angular 4、Bootstrap 3”就是不太現(xiàn)實(shí)的。
  • R(Relevant):與其他目標(biāo)有一定的相關(guān)性,比如你把代碼規(guī)范化作為你的提升目標(biāo),就和你日常的開發(fā)工作有很強(qiáng)的關(guān)聯(lián)性;
  • T(Time-bound):目標(biāo)必須有明確的截止期限。必須的!沒(méi)有期限,就沒(méi)有目標(biāo)!

一個(gè)有效目標(biāo)示例:

在三個(gè)月內(nèi)學(xué)會(huì) HTML5 、Angular 4、Bootstrap 3,然后用一個(gè)月時(shí)間,采用 SPA(Single Page Application) 方式,開發(fā)清單 App 的 Web 版本,支持登陸登出、任務(wù)增刪改、分組增刪改功能,Bug 率控制在千分之三。

1) 下一步行動(dòng)

單單擁有有效目標(biāo),還不夠,我們還要找到可以立即開始的下一步行動(dòng)!

所謂“下一步行動(dòng)”,就是某一件事情的下一個(gè)可以直接去做的步驟

《小強(qiáng)升職記》中介紹了撰寫下一步行動(dòng)的四個(gè)秘訣:

  • 動(dòng)詞開頭。一個(gè)好的行動(dòng)應(yīng)該是以動(dòng)詞開頭的,比如“打電話給某某”、“準(zhǔn)備會(huì)議資料”、“回復(fù)E-mail”等,以動(dòng)詞開頭才能保證它具備可執(zhí)行性。
  • 內(nèi)容清晰。比如“準(zhǔn)備會(huì)議資料”,雖然是動(dòng)詞開頭,但是描述得不是很清晰,“需要準(zhǔn)備哪些資料”、“幾點(diǎn)開會(huì)”、“會(huì)議上要提出什么問(wèn)題”,這些都需要進(jìn)一步落實(shí)。所以說(shuō)這樣的下一步行動(dòng)是失敗的。
  • 描述結(jié)果。在任務(wù)開始之前對(duì)想要的結(jié)果進(jìn)行描述,描述得越清晰,產(chǎn)生的能量就越大。比如你這樣:“早晨9點(diǎn)帶著做好的計(jì)劃書在1號(hào)會(huì)議室討論營(yíng)銷計(jì)劃,說(shuō)服與會(huì)者認(rèn)同我的營(yíng)銷方案。”
  • 設(shè)定開始時(shí)間、周期、最后期限。在設(shè)定了這三個(gè)和時(shí)間有關(guān)的屬性之后,就可以更合理地安排自己的時(shí)間,把握行動(dòng)的進(jìn)度,照顧別人的時(shí)間。

如果你能夠按照上述四個(gè)秘訣來(lái)擬定“下一步行動(dòng)”,就有 90% 的可能找到“可執(zhí)行的下一步”。所謂“可執(zhí)行的下一步”,往往是簡(jiǎn)單到你只需要邁出右腳就行了。假如你還要考慮到底是邁右腳還是邁左腳,就說(shuō)明你的下一步存在未決因素,不能立刻開始。

下面是幾個(gè)下一步行動(dòng):

  1. 找到 AngularJS 的官網(wǎng)
  2. 買一本講 AngularJS 開發(fā)的書籍
  3. 買一本 JavaScript 的書
  4. 2 個(gè)小時(shí)完成 Node.js 下載與安裝

當(dāng)你能從目標(biāo)分解出能夠立刻開始的下一步行動(dòng)序列(最少3個(gè)),就可以做起來(lái)。做完一個(gè),分解一個(gè)新的下一步行動(dòng),加入到行動(dòng)序列中,然后開始新的下一步行動(dòng)。這樣跑起來(lái),你的目標(biāo)就會(huì)穩(wěn)步實(shí)現(xiàn)。

精進(jìn)的四個(gè)習(xí)慣

習(xí)慣是很強(qiáng)大的力量,要把精進(jìn)落實(shí)到日常習(xí)慣中。我個(gè)人有這四個(gè)習(xí)慣,供參考:

  • 對(duì)標(biāo)管理
  • 三個(gè)問(wèn)題
  • 刻意練習(xí)
  • 復(fù)盤

1) 對(duì)標(biāo)管理

前面我們仔細(xì)介紹了個(gè)人對(duì)標(biāo)管理法的運(yùn)用,它應(yīng)該成為我們的習(xí)慣,成為習(xí)慣后,我們就可以自發(fā)地運(yùn)用它,隨時(shí)找到前進(jìn)方向。

2)三個(gè)問(wèn)題

參考《Scrum實(shí)戰(zhàn)——敏捷軟件項(xiàng)目管理與開發(fā)》

在 SCRUM 開發(fā)模型中,有個(gè)每日站會(huì)。每日站會(huì)一般早上開,站著開(坐下來(lái)會(huì)讓會(huì)議變長(zhǎng)),10 到 15 分鐘。在每日站會(huì)上,每個(gè)人都要回答三個(gè)問(wèn)題:

  1. 我昨天完成了什么
  2. 我遇到了哪些問(wèn)題
  3. 我今天做什么

回答完這三個(gè)問(wèn)題,就可以更新看板上的任務(wù)狀態(tài),別人也都能了解到你的狀態(tài),如果有需要配合的,也都可以即時(shí)做出決定。

這三個(gè)問(wèn)題,不僅僅可用于開發(fā)過(guò)程,還可以演化成個(gè)人的工作習(xí)慣,指導(dǎo)我們每天的工作。

我是這么用的:

  1. 每天晚上下班時(shí)記錄完成了什么、遇到了什么問(wèn)題、明天準(zhǔn)備做什么。記錄在紙質(zhì)的筆記本上。
  2. 每天早上正式開始工作前,審視昨天記錄的內(nèi)容,決定今天要做哪幾件事(最好不要超過(guò)三件),今天就聚焦在這些事情上。

非常簡(jiǎn)單的,但是好用。堅(jiān)持這么做,你的工作就會(huì)越來(lái)越高效、輕松。最重要的是,你會(huì)知道你每天都有成就,不會(huì)焦慮和恐慌。

3) 刻意練習(xí)

參考《刻意練習(xí)》

我們可以把刻意練習(xí)簡(jiǎn)單地理解為四個(gè)要素:目標(biāo)、Focus、Feedback、Fix it。

  • 目標(biāo),每一次練習(xí),都要有明確的目標(biāo),而且這個(gè)目標(biāo)要高于你現(xiàn)在的能力,需要跳一跳才能夠得著。個(gè)人對(duì)標(biāo)管理法可以幫助你找到練習(xí)的目標(biāo)。
  • Focus,指專注地做事,所謂專注,就是方向明確,聚焦當(dāng)下,心無(wú)旁騖,積極努力。
  • Feedback,指反饋。我們?cè)诰毩?xí)時(shí),需要有高人陪伴,需要找到教練,能夠及時(shí)給予我們準(zhǔn)確的反饋,讓我們知道差距。
  • Fix it,指修正,改善。當(dāng)我們獲得了反饋后,要根據(jù)反饋來(lái)改善自己的做法,這樣才能進(jìn)步。

下面是我繪制的刻意練習(xí)循環(huán):

一旦我們養(yǎng)成了刻意練習(xí)的習(xí)慣,你就可能在很多領(lǐng)域內(nèi)成為高手。

4) 復(fù)盤

參考陳中所著的《復(fù)盤:對(duì)過(guò)去的事情做思維演練》和成甲的《好好學(xué)習(xí):個(gè)人知識(shí)管理精進(jìn)指南》

所謂復(fù)盤,就是在頭腦中對(duì)過(guò)去所做的事情重新“過(guò)”一遍。它通過(guò)對(duì)過(guò)去的思維和行為進(jìn)行回顧、反思和探究,實(shí)現(xiàn)能力的提升。

復(fù)盤分兩種:

  • 事件觸發(fā)型復(fù)盤,比如項(xiàng)目抵達(dá)里程碑節(jié)點(diǎn)(或重大狀態(tài)改變)
  • 周期性復(fù)盤,比如周、月度、年度、每五年

下面這個(gè)清單,可以作為我們復(fù)盤的框架:

  • 項(xiàng)目(事情)預(yù)期的目標(biāo)是什么
  • 現(xiàn)狀如何
  • 執(zhí)行過(guò)程分析
  • 決定是如何做出的,有沒(méi)有其他可能

通過(guò)復(fù)盤,我們可以知道,事情結(jié)果比預(yù)期好還是壞,在執(zhí)行過(guò)程中,有哪些環(huán)節(jié)做得好,哪些環(huán)節(jié)做得差,好的總結(jié)經(jīng)驗(yàn)指導(dǎo)下次行動(dòng),差的反思原因制定提升策略,這樣我們就可以獲得成長(zhǎng)。

很多開發(fā)者忙于做項(xiàng)目,往往是趕工、交付、開始新項(xiàng)目,很少去思考做過(guò)的項(xiàng)目做得怎么樣,什么好什么壞,原因在哪里,怎么改進(jìn)和提升,陷入馬不停蹄做項(xiàng)目一年經(jīng)驗(yàn)用十年的怪圈,多年之后才發(fā)現(xiàn)自己的經(jīng)驗(yàn)對(duì)不起工作的年限。

要告別這種狀況,做項(xiàng)目時(shí)可以這樣:

  • 使用對(duì)標(biāo)管理法為自己找到提升目標(biāo)
  • 通過(guò)刻意練習(xí)來(lái)提升
  • 三個(gè)問(wèn)題讓你每天有目標(biāo),實(shí)現(xiàn)日有寸進(jìn)
  • 運(yùn)用復(fù)盤來(lái)成長(zhǎng)

開始行動(dòng)!

我們?cè)谇懊嬗煤荛L(zhǎng)很長(zhǎng)的篇幅講了怎樣判斷要不要繼續(xù)做開發(fā),介紹了如何使用個(gè)人對(duì)標(biāo)管理法找到提升的方向,還剖析了如何設(shè)定有效目標(biāo),通過(guò)找到立刻可以執(zhí)行的下一步行動(dòng)來(lái)推動(dòng)精進(jìn)計(jì)劃落地,最后還提出了四個(gè)有利于我們長(zhǎng)期精進(jìn)的好習(xí)慣,可是,所有這些,沒(méi)有你的努力和行動(dòng),都沒(méi)卵用!

知道和做到之間,有一道鴻溝,你只有積極行動(dòng)跨越它,才可能收獲更好的職場(chǎng),成長(zhǎng)為你想要的樣子。

所以,開始吧!立刻!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,663評(píng)論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,125評(píng)論 3 414
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,506評(píng)論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,614評(píng)論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,402評(píng)論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 54,934評(píng)論 1 321
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,021評(píng)論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,168評(píng)論 0 287
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,690評(píng)論 1 333
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,596評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,784評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,288評(píng)論 5 357
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,027評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,404評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,662評(píng)論 1 280
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,398評(píng)論 3 390
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,743評(píng)論 2 370

推薦閱讀更多精彩內(nèi)容