1. 程式人生 > >2019年程序員最值得學習的思維利器——任務分解

2019年程序員最值得學習的思維利器——任務分解

改善 響應 需要 普通人 身體 lis ron 等等 產品經理

只用系統1不行,還要用系統2

作為程序員,我們常常會遇到以下這些典型問題:工時常常估不準,估少了加班加點都做不完,估多了項目經理會有意見;遇到不熟悉的任務容易恐慌,怕自己完不成;開發進行到一半才發現某個地方設計有缺陷,要返工,費時費力。

做一個普通人,我們還要面對更多的難題:到年底了,是不是應該考慮跳槽,該跳去哪裏;該不該買房子,是將其視為一種投資手段,還是應該認為房子就是必需品;要找什麽樣的人處對象,什麽時候應該結婚。

有些人不覺得這些是問題,因為他們從來不把它們當回事。工作隨便應付了事,這裏幹不下去就去別的地方幹。單身的生活早已習慣,自由自在挺好的,就算一輩子不結婚也不是什麽大事。

然而更多的人,還是會被這幾個問題所困擾,每一次想起來都非常頭疼,不知道如何是好。久而久之,這些問題甚至有可能變成一塊心病,產生著持續的負面影響,非常不利於日常的工作和生活。

《思考,快與慢》的作者提出了“系統1”和“系統2”的概念,系統1能很快地給出答案,系統2則需要通過分析和計算才能回答問題。我們在思考前面所提到的典型難題時,使用的通常是系統1,但給出的答案往往不是最優的。系統2,是時候派上用場了。更具體地來說,我們要采用的思維工具是,任務分解。

什麽是任務分解

任務分解,又或者叫目標分解,就是把一個任務、目標分拆解開成一個個更加具體、清晰的子任務、子目標,通過這些子任務、子目標最終完成任務和達成目標。

我們可以先來看看現實版“鋼鐵俠”埃隆·馬斯克是怎麽做目標分解的。

馬斯克是特斯拉和SpaceX的CEO,他曾經公開宣布自己要送100萬人殖民火星。那麽從地球送一個大活人到火星上去要多少錢呢?美國太空總署NASA還真就算過一筆賬,答案是100億美元。

如果要自費的話,恐怕只有少數十幾個頂級富豪才能在傾家蕩產之後移民火星,而且他們還很大可能不願意去。如果是國家政府負擔這100萬人的費用,即便是富如美國都要花費幾百年的GDP。由此看來,百萬地球人殖民火星這個想法根本不可能實現。

但是,馬斯克並沒有死心,他認為只要把成本降下來就可以。那麽要降到多少呢?50萬美元。這個錢並不多,在北上廣深甚至連一套比較好的房子都買不下來。從NASA的100億美元到50萬美元,足足差了兩萬倍之多,仍然讓人覺得不可思議。

馬斯克接下來就是把兩萬分解成20x10x100,並且將這個公式作為自己公司的三個主要努力方向。

“20”:現在的宇宙飛船一般最多只能承載5個人,馬斯克認為這太浪費了,我們可以完全可以把火箭造寬敞一些,一次載個100個人。從5到100,平均到每個人身上的成本就降了20倍。如果你平時有一直在關註SpaceX的新聞,就會發現他們正在做這方面的工作。

“10”:政府機關或國營企業效率低,馬斯克認為自己掌控的企業完全可以通過提升效率再把成本降低10倍。他並沒有說大話,成本已經降到同行的五分之一了。

“100”:如果我們每天開車上班,一輛車只能開單程,開到目的地就報廢,估計沒多少人能開得起車。馬斯克認為如果可以使火箭可回收重復使用,讓發射火箭像開車一樣只耗燃料錢,那麽成本將會極大地降低,100倍不是夢。在經歷過多次失敗之後,SpaceX現在已經實現了可回收火箭這一目標,並且在這個方向繼續前進。

這些算下來,你是不是不再覺得馬斯克是在癡人說夢話了呢?雖然還是很困難,但是我們卻能看到他實現終極目標的希望。相比之下,我們的工作和生活難題遠遠比不上殖民火星復雜度那麽高,完全可以參考任務分解的思路去解決。

任務分解有什麽用

1.把大任務分解成小任務,工時估計會更加準確

完成一個完整的登錄功能需要多長時間,我們很難估計,可能只要三個工作日,也可能要三個禮拜。如果我們把這個估計提交給項目經理或產品經理,他們很可能會發瘋。

其實我們完全可能通過任務分解,將這麽一個大功能分解成一個個小功能,例如申請、找回密碼、登錄、註銷等等,然後再逐一向下分解。

判斷一個類大概要實現哪些邏輯,要如何實現,需要多長時間,這就是我們所擅長的了。

2.面對以前沒做過的需求,通過任務分解遍歷一次,熟悉度提升之後就不會恐慌

我們在接到一個陌生的活兒之後,難免會心裏忐忑不安,生怕自己完不成或者是最終做完了但是花費太多的時間。

首先,一個再怎麽新的任務都不可能是完全陌生的,我們可以先將其分解成自己熟悉的部分和陌生的部分。然後,我們再對陌生的那一部分做調研或者請教同事。最後,通過一小段時間的認知獲取,我們就會對這個看似陌生的任務越來越熟悉,從而做到心裏有底。

3.反復推演,全盤考慮, 會讓我們少做很多的返工工作

如果要做任務分解,就必然要從全局的角度出發,通盤考慮每一個子任務之間的關系。我們如果要選擇某個關鍵字段的類型和長度,就要考慮到哪些模塊要存,哪些模塊要改,哪些模塊要取,這樣就不容易出現前後不一致要推倒重來的情況。

如果沒有全局的視角,只是走一步看一步,遇到一個選擇就做一次決定,這就叫窄框架。相反的叫寬框架,這正是我們在做任務分解的同時需要掌握的一種思維工具。

4.反思任務或目標本身,再決定要不要去做

在對“買房子”這一目標做分解的時候,我們很容易想到一個問題,就是為什麽要買房子。別人都在購房或者打算購房,這不應該成為我們做出決定的依據,至少不能成為主要依據。

房子主要有兩種價值,一種是居住價值,另一種是投資價值。如果我們更看重居住價值,就要找環境更好、周圍教育資源更豐富的住宅。如果我們更看重投資價值,就要找發展速度更快的地段和升值空間更大的樓盤。

一個打算兩三年跳槽一次的單身漢,居住價值很可能不是他所看重的,他可能認為租房更符合他的需求。對於一個職業生涯剛起步、家裏又不能提供支持的年輕人來說,投資房地產就不是一個好的選擇,遠不如專註地投資自身來的要好。

5.任務分解,就是一個學習和進步的過程

查理·芒格說,“要想找到一個好的妻子,先要做的就是讓你配得上她”。

如果希望找到一個知書達理的對象,你自己就不能總是控制不住自己的情緒,老是把錯誤歸咎到別人的身上。如果希望你的另一半有一定的經濟能力,你自己就要學會掌握一技之長,有自己的立身之本。如果希望那個跟自己組建家庭、生兒育女的人能心甘情願奉獻,你自己就要開始學會為別人考慮,在必要的時候犧牲一定程度的自由和其他寶貴的東西。

6.目標分解,能讓我們更關註當下,做更多更有實際意義的事情

在互聯網行業裏做技術工作,兩三年甚至一兩年跳槽一次是很平常的事。我們不能為了跳槽而跳槽,拋開薪酬問題暫且不談,跳槽到底是為了什麽呢?

跳槽可能是為了更快地成長,到一個更有挑戰性的崗位上,做更有意思的工作。跳槽可能是為了有一個新的工作環境,建立更好的同事關系。跳槽可能是為了找回生活的那一部分,有更多的業余時間。

找到原因之後,我們可以看看是否有改變當下情況的可能。我們是不是可以找老大談談,為自己爭取更多有難度的、把自己從舒適區推向學習區的任務?我們是不是可以學習一些人際交往的技巧,改善現在讓自己並不滿意的同事關系?我們是不是可以找出自己為什麽那麽忙碌的原因,嘗試改變現狀?

如何練習任務分解

任務和目標其實沒有特別明顯的區分,為了更好地敘述,接下來我們就以“小任務”和“大目標”的說法繼續討論。

知道了任務分解的諸多好處,那麽我們要如何通過練習掌握這個解決復雜問題、實現宏大目標的思維利器呢?小任務采用列表法,大目標借鑒金字塔原理。

相對於大目標來說,小任務規模比較小,分層的必要性不大,所以我們可以使用列表的形式把一個任務分解成若幹個具體的步驟,然後逐一完成。

就拿去醫院看病為例,我們完全可以將其分解成以下幾個步驟:

  1. 使用醫院小程序的分診功能,根據自己的癥狀找到自己要掛號的門診科室。

  2. 了解是否可以網上掛號,如果是就在線完成,如果不行就查要去哪裏排隊。

  3. 掛號後,是否要等待比較長的時間,考慮是否攜帶充電寶

  4. 醫生看診時,如果要看腿,最好穿短褲;如果要看上身,最好穿寬松的短袖。

  5. 診斷完畢之後,如果要當場做手術(牙科),術後是否能自行回家。如果不能,則需要提前通知親友幫忙。

  6. 回到家之後能否照常進食,是否需要提前準備流食。

  7. 第二天能否照常上班,是否需要提前請假。

在工作當中,我常常會對任務做這樣的分解,分解完之後感覺特別有底氣,而且不怕被打斷。即便有人中途找我,我在響應完之後看一眼列表就知道已經做完了哪些工作,接下來還要做哪些。

在這裏給大家推薦一個小技巧,在心理學上叫做激勵。我們可以把分解完的步驟羅列在自己的筆記本上,然後每完成一個步驟就拿筆在後面打一個勾,這樣做能給自己帶來一定的成就感和滿足感。

相對於小任務來說,大目標規模比較大,非常有必要對其進行分層處理。

在商務寫作領域有一本書非常有名,叫《金字塔原理》。一篇商務文章,例如報告、總結等,都要有一個中心思想。這個中心思想下面,可能會有幾個主分論點,而每一個主分論點下面可能還會有幾個二級主分論點,一直細分到每一個子論點。

我們在分解大目標的時候,就可以借鑒上面這種分層思想去操作。以個人成長為例,我們的核心目標就是成為一個更好的自己。那麽這個核心目標就可以分解成思想(學識更淵博)、經濟(財務自由度更高)、健康(身體素質更好)、人際(跟身邊人相處得更好)四個主目標。就經濟主目標而言,我們又可以分解成開源(提升賺錢能力)和節流(提升理財能力)兩個次主目標。接下來還可以把節流目標再次分解,分解成理財(儲蓄和投資)和消費(理性消費)兩部分。就這樣,我們可以繼續細分下去,一直到了現實當中可操作的每一個動作。

任務分解是一種可以通過練習來掌握和運用的技能,並不是什麽了不起的天賦。只要在日常工作和生活當中有意識地練習和使用,我們每個人都能借助這個強有力的思維工具獲得一開始完全想象不到的好處。

敢於挑戰自我和超越自我的勇氣

通過任務分解,不僅可以為日常工作生活找到它們在人生大圖景中的位置,還給了我們挑戰復雜目標、超越自我的勇氣。

如果我們可以分解所追求的目標,分解成一個個可操作的單元步驟,那就永遠不會覺得無聊,永遠有事可做。我在年初給自己定下了11月份之前要完成1000個番茄時間(1個番茄時間32分鐘)的目標,所以我只要一有條件就會閱讀,例如長時間坐車或排隊的時候,我會聽“得到”或“極客時間”的課程。

我們知道每一個看似普通的小任務都是為了大目標的達成,所以不會覺得乏味或者毫無意義。以前的我們可能會討厭上班,但是如果定下了成長的目標,我們就會變得有動力和有自主能動性,積極地去找那些能讓自己學習進步的工作去做。以前的我們可能會覺得運動很累,但是如果定下了健康的目標,我們就會覺得走路不是浪費時間,跑步並沒有之前想象得那麽不可接受。

我們以前可能會有這樣的想法:工時估不準就估不準吧,我就盡量做,完不成我也沒辦法;遇到不熟悉的任務能躲就躲吧,躲不過去就硬著頭皮做;做到一半遇到前後不一致的問題就看能不能繞過去,繞不過去就推倒重來。

我們甚至還會有這樣的看法:房子這麽貴,買房子是不可能買房子的,近期不考慮了;結婚這麽麻煩,結婚是不可能結婚的,單身一輩子也不是壞事;跳槽到一家好公司那麽難,跳槽是不可能跳槽的,就這麽將就下去吧。

通過目標分解,我們會意識到這些事情雖然復雜,要做好的難度比較高,但是並非不可企及。先將大目標分解成小目標,然後再一步步通過實現小目標的方式,看到一條有希望實現大目標的道路。

如此這般,我們就能鼓起勇氣,開始挑戰自我,最終超越自我。

我有一個公眾號,經常會發一些看書思考過後寫的文章,還有作為一個程序員的工作經驗分享。

如果你喜歡我的文字,可以用微信搜索“李文業的思考筆記”或者掃描二維碼關註。

技術分享圖片

2019年程序員最值得學習的思維利器——任務分解