我是如此思考的-長文
第一部分 思考概述
首先給思考一個定義,就是自我驅動的獨立意識下的思維,即是思考。
人和其它動物的一個重要區別就是有了意識行為,有意識是開始有思考行為的基礎,因此植物人由於沒有意識因此不再具備思考能力。但是有了意識還並不代表就一n定產生思考行為,有自我驅動的獨立意識才可能產生思考行為。簡單點講,師傅教會我如何砍柴,燒水,我下次就完全按著師傅教我的方式做。那麼在這種情況下沒有形成自我驅動的獨立意識,是沒有思考行為的,但是我在做這件事情中自發主動的去想了,即形成思考行為。
思考行為有積極思考也有消極思考,但是只要獨立意識驅動,都是思考行為。如上面砍柴做飯的例子,一種是我在想如何做的更快點,更好點,哪些步驟是多餘的,n哪些步驟可以改進;還有一種情況是我再想如何多偷一點懶,省點功夫和力氣;很顯然這兩種情況由於我都在主動想,產生了思考行為,一個是積極主動的思考,尋求持續改進;一個是以自我中心為主,惰性驅動的消極思考。(註:在這裡個人有一個很重要的觀點,就是即使消極思考,也不要不思考,因為消極思考代表我還是在思考,而且很可能由消極思考轉變為一種積極思考,比如我偷懶了,最後受到師傅懲罰,沒有達到質量要求,這個時候很可能轉化一種積極思考,即既能夠偷懶又要達到質量要求下如何提升效率。)
你接收到一個基本常識時候是否產生思考行為,關鍵是看獲取的過程。如果是你的老師將這些常識傳遞給你,那你是一種被動學習行為,而少有思考行為。但是如果你開始並不知道這個常識,你自己通過親身的實踐,不斷總結出一個結論的過程,其核心的就是思考行為,一種在實踐中主動學習的行為。
n自我驅動的獨立意識是思考行為之基礎,但是這個範圍仍然會很廣,到我明天出門究竟應該穿什麼衣服?今天中午該吃點什麼?這些都是思考行為,這些思考本來也可以按我們後面給出的一些思維方法和模式進行,但是確實沒有這個必要。因此我們討論之思考更多的是針對一個特定問題的思考,思考問題之本質是定義,分析和n解決問題。而解決問題之本質又在於讓現實結果和我們的期望一致,即達到我們的目標。
n通過上面的分析,後面將展開闡述的思考行為可以用下列方式來描述:思考是獨立意識的思維活動;思考是打破機械重複,尋求自我轉變的思維活動;思考能力是定義,分析和解決問題的能力。
思考之最基本的兩大思維活動即是分析和決策,其基礎是問題定義,其導向是目標約束。
由於前人已經有大量的常識和經驗的積累,導致我們有些思考活動會很簡單,也很容易。比如現在我想讓汽車開的快一點,我得換擋或多踩下油門;我生病了我得吃藥或休息;我口渴了需要喝水。當時現實世界中的思考活動和過程遠比這個複雜,這個地方的複雜性體現在重要的兩點:
1.決定一個思維的影響因素太多,即使是做一個簡單的做還是不做的二元思維決策。2.很多思維最終形成的判斷和決策不是簡單的是非判斷定性分析,而是涉及到定量分析,即往往在第一步決策的基礎上還需要進一步決策程度的問題。舉例來所,現在公司需要加大培訓投入成本,思維的重點是投入多少合適,而不是簡單思考究竟投不投入。n對於思考,我們首先要認識到思考本身往往就是解決問題,解決我們自身存在的問題或者環境和他人存在的問題。而問題是什麼?我們已經有過多次定義,問題是現實環境狀態和你期望的結果之間的差異,存在差異就存在問題,只是有些差異小我們沒有明確的將這些差異暴露為問題。思考的本質是解決問題,那我們將思考和解決問題聯繫起來,就形成思維這個詞。而維這個字正式結合兩者的核心,而維的本質又是結構化。
在《金字塔原理》這本書可以看到很多就是在講結構化思維的問題,包括自定向下,金字塔構造,n歸納和演繹,MECE等。如果我們對思維活動增加一些關鍵詞來說明,即我們常說的分類,分解,歸納(綜合,抽象,提煉,概括),演繹,類比,組合,排序,n關聯,依賴等。所有的思維活動都和這些關鍵詞有關。
n對於思維的方法論有很多,步驟太多或者太複雜,包括麥肯錫的解決問題七步法,結構化思維的方法和步驟等。所以有必要再對思維活動之核心步驟做一個提煉,思維方法和工具是術的層面,理解了思維活動核心模式則是思維之道。讓我們從一個小例子來分析如何找到思維之核心步驟和模式。
n例子:張三開了一家小餐館,最近原材料漲價成本壓力很大,準備對原材料進行漲價。關於是否漲價和漲價多少的問題等了很多員工的激烈討論和回復,具體如下。甲:不應該漲價吧,由於其它餐館漲價我們生意不原來好了很多,薄利多銷也是一樣的。
乙:我們餐館只有這麼大忙不過來,餐館規模又無法擴大,漲價不會影響到顧客數。丙:我這一帶人群生活指數都挺高的,漲一點價大家都能夠接受,最重要的還是服務和產品衛生質量有所提高。丁:漲多了顧客肯定會減少,漲少了我們的成本又增加,這個應該要平衡好。戊:漲價了顧客開始會減少,當大家認同了我們的產品和服務後,相信顧客量會提高。己:還是不漲價好,這次其它餐館漲價,如果我們不漲價更容易贏取顧客,為餐館後續擴張做準備。
庚:我們原材料採購價格上漲了20%,因此我們菜品應該也上漲20%。辛:漲價多少不應該按一個規則,我絕對應該根據菜品的歷史銷量和菜品價格來制定差異化漲價策略。原來50塊的菜漲價20%到60快顧客會感覺漲了很多,當時10塊的漲價到12塊顧客往往並沒有感覺。所以低價菜品漲價幅度應該高點。
n但是在現實生活中,我們的思維活動往往並不會如此複雜,我們是憑藉我們的經驗,通過思維活動快速簡單的制定了相關策略。頭腦風暴和發散思維都是好事情,但是卻容易讓我們抓不住核心邏輯,導致無法解決關鍵問題。
對於以上思考,我們可以看下通過系統思考方法中的因果循環圖描述如下:
結合上面的案例,我們來談思維最核心的三個關鍵步驟:1.確定目標n思維活動是為了解決問題,而問題是現實和期望之差距,期望即是我們的目標。確定目標包括了空間和時間兩個方面的目標,也可以講是從靜態和動態兩個方面的來看待目標。如上面的例子,我們空間目標是利潤最大化,當時僅僅提出利潤最大化這個目標是沒有意義的,而應該在這個目標上增加時間,即是當年利潤最大化,還是3年利潤最大化。空間+時間將直接影響到後續的決策要素的值。2.分解和關聯n在這裡我用分解這個詞,當我們遇到的是一個問題群的時候,我們還可能涉及到分類的概念,當時當是特定問題的時候更重要的是分解。而分解的重點則是考慮清楚要達成目標,究竟存在哪些因素。比如上面的例子,價格,顧客生活指數,競爭對手,原材料成本,銷售量等都是我們達成目標的影響因素。n分解的一個重要法則即《金字塔原理》裡面提及到的MECE原則,當時該原則最大的問題就是沒有談分解後的要素之間的關聯和依賴關係,即單獨提升一個影響要素的時候會對其它要素造成消極影響。比如提升價格會對銷售量帶來消極影響等等。因此分解後有個重要工作是在分解完成後要繼續分析要素之間的相互作用和影響,以去尋找一個達成目標的動態平衡點,即我們所說的系統思考之根本。
在分解過程中可以自頂向下,也可以通過頭腦風暴後在從下向上進行歸納和整合,這兩種方式都是可以的。而對於我們以前完全沒有接觸過的事物,我們更推薦採用流程分析方法,即我們說的思維中的動態要素,通過流程分析來找尋和全面識別影響要素,這是其目的,因此動態流程分析是為了靜態分解服務的。3.決策n決策分為了簡單的二元決策,也存在複雜的定量決策,當時決策應該逐步走向結構化決策。在後面文章將對結構化決策進行詳細的分析和討論。對於簡單二元決策,用常用的結構化決策方法,如層次分析法等即可以搞定;當時涉及到量的決策,如究竟應該漲價多少才合理,則涉及到我們定量分析的範疇,而定量分析和決策則涉及到計算機模擬和動力學模型輔助決策。n可以看到思維的核心步驟完全屬於分析和解決問題的步驟,再加上前面的問題定義以及加上後面的解決方案的跟蹤實施即是完整的分析和解決問題的方法。這也正是思維和問題之本質聯繫。第二部分 不破不立-談破題
在前面講了思考的三個核心要素和步驟是,確定目標,分解和關聯,決策。這是思維的核心邏輯,也是分析和解決問題的核心邏輯。我為何困惑?我的思考是為了解決什麼問題?是什麼因素在促使我不斷的思索?這些都和我們期望達到的一種目標相關,思考之第一步就是確定目標,而對於確定目標重點是破題,不破不立。
n對於破題的過程,又分了一些小步驟,具體描述如下:首先是要逐步形成轉化問題本身到目標的習慣,即從對問題表象的思考轉化到對目標本身的定義,只有牢牢的抓住了目標,思考的過程才不會跑題,才能夠圍繞目標這個主線展開,才真正體現思考的價值。我們舉一些例子來看思考破題的過程。n1.一家新公司開出了更優厚的待遇條件,我在思考是否離開老公司。破題:我希望在3年內(目標之時間性)我的年薪能夠增長一倍(目標之空間性)。
n2.我剛參加工作,不懂得的業務和知識技能太多,我在思考我應該如何學起。破題:我希望在3個月的時間完全勝任我現在崗位的工作職責和工作任務。n3.年底了,要開始寫年終總結報告,對應該如何寫沒有頭緒。破題:我寫報告的目的是展示我的工作並完全得到領導的認同->我報告的目標是我的工作內容完全符合和超過公司崗位職責和績效要求。n4.我在經營一家餐館,最近採購原材料都漲價了,我們的菜品應該漲價多少呢?破題:我期望我們的餐館在3年的時間內創造的利潤最大化。(目標之時間+空間)n在沒有明確目標前不適合進行太多的發散性思考,因為很多思考內容往往不能圍繞目標導致無用。後續很多的發散思考和分解的過程都應該圍繞目標展開,這樣才能夠體現目標驅動。其次,目標盡量符合SMART原則,在這裡我們對其簡化即需要體現目標的時間性和目標的空間性。n對於目標的時間性即SMART原則裡面的T,對於目標的空間性可以理解為S和M。我們如此強調目標的時間性的原因就是你思維是一種短期思維還是長遠思維要n直接影響到你最終的決策。我們隨著提醒自己目標的時間性要求就是體現了思維本身的戰略性和前瞻性。同時我們也看到時間性+空間性也是後續系統思維之基礎。最後,將你的多個子目標抽象或提升為一個終極目標。這句話的意思是思考之開始不要馬上進入到多個目標的平衡,即使是平衡也涉及到在終極目標的基礎上進行平衡和決策,一開始就進入到平衡導致思考的過程存在太多的跳躍性而陷入了思考的僵局。n拿上面的例子,我是否應該離職,我現在的工作環境很舒服,也有升遷的機會,團隊合作也很好,工作也不累,在我是否換工作的問題上我一下就過渡到了團隊,自我價值和利益,個人和家庭等多個因素的平衡上面,導致了我們思考上的僵局。
再拿項目管理來說,項目本身有多個目標,成本,質量和進度等都是項目的目標,我一n開始就在考慮這些子目標的平衡,而忽視了我們做項目的終極目標是在幾年內為公司和個人創造最大的利潤和價值,也可能導致我們失去了後續真正平衡的基礎假設,這些都是沒有由多個子目標抽象形成終極目標導致的。
綜合上面思考之首選是形成單一的符合空間+時間要求的終極目標,這是後續分解和關聯之基礎,也是後續系統思維和結構化決策之基礎。第三部分 找尋目標
思考之根本在於解決問題,解決問題之根本在作出決策,而作出決策之前提則是明確目標。所以思考應該是目標驅動的行為,只有目標驅動的思考是最有價值的思考,因為最終的思考真正可以指導我們的行動和實踐,最終達成我們期望的目標。
上篇我們談到了,對於目標首先要意識到目標的時間性和空間性,只有這樣才是一個完整的目標,是一個後續可以進行系統思考的目標,單純的追求時間或空間最終都無法達到我們的真正期望。找尋目標的方法主要就是將問題轉化為目標,將子目標轉化為終極目標。我期望做一次長途的旅行,因此我開始行動找尋具體的適合的旅行線路,在我們查詢的過程中我們不斷的進行著否定,比如某個線路費用太高,某個線路人太多,或者某個線路已經去過了等等。而真正的目標是什麼呢?這個時候我們真正的目標往往就是做一次身心的完全放鬆,在完整點我的目標是期望在最近兩個月內有一次身心的完全放鬆,這個是我們的終極目標。而旅途的花費,跟團還是獨行,旅遊熱點還是偏遠未開發地區,旅行時間長短的統統不是目標,這些是和目標相關的影響因素和約束因素。我必須要先明確目標,再來考慮這些影響因素,只有這樣我們的目標才能夠達成,同時你也會堅持目標而放寬約束因素。
很多時候我們有過類似的經歷,我們將影響和約束因素當做為目標,而最終的結果是錢花了我們的身心往往並沒有得到放鬆,即終極目標沒有實現。這是往往並不是我們期望的一種平衡結果。目標是基礎,不是用來平衡的,平衡的只有各個影響因素和制約因素。所以第一點結論就是,找到終極目標,不要把影響和制約因素當做了你的終極目標。思考之根本在於解決問題,因此找尋目標首先就是要明確問題,包括搞清楚問題的定義,而問題的定義本身就是我們的期望和現實之間的差距,而我們的期望通過一些量化思考後就逐步轉化為了我們的目標。這個也讓我們舉例來說明。
剛入職的新員工張三在思考如何安排自己在新工作崗位上的學習計劃?該思考對應的問題則可能是張三現在的技能和我們期望有差距?那現狀是當前的技能水平,而期望則是崗位職責要求的工作技能?將期望轉化為目標即是張三要達到崗位職責要求的工作技能?再根據空間性和時間性進行量化,即我們實際的目標是張三要在三個月的時間內容到達崗位職責要求的工作技能?那如何來定義是否達到,這涉及到後續目標的可度量性的話題。思考到這裡我們就發現時間有了約束即三個月,學習範圍縮小了即崗位說明書要求的技能,後續針對該目標制定的學習和工作計劃才會真正發揮最大的價值。這也正是我們說的目標驅動的思考,思考最終的目的還是通過將思考轉化為行動和實踐後達成我們的目標。
所以第二點結論是,先找到問題,通過問題找到期望,通過期望定義目標。找到目標往往比較容易,但是對目標進行空間性和時間性的量化卻很困難。比如前面的例子在三個月內達到能夠熟練勝任現有工作的水平,目標SMART原則裡面還有一個重要原則就是目標的可達成性,如果制定的目標不可行則再遠大的目標都是徒勞。而如何才能夠讓目標可行?這裡面涉及到一個重要內容就是清晰的認識自己和評估自己的能力和效率,這個就和我們平時的數據收集和分析習慣很有關係,當我們無法很好的評估自我能力的時候,又涉及到一個重要的方法,既進行更短周期的實踐和試驗,通過試驗來驗證目標的可行性。如果三個月要達到熟練勝任工作,那我可以先拿一個月來試驗,能否掌握工作所需要技能的一項,如果能夠按照進度完成,我們則可以初步估算我們的目標是可行的。
所以第三點結論是,在目標無法很好量化的時候,要做短周期的試驗來評估並最終確定目標。第四部分 目標分解
分解之根本在於保證後續的計劃,行動和呈現全部圍繞你期望達到的目標展開。
在思考的時候確立了目標後,後續的重點就是目標的分解,目標分解有兩個關鍵環節,一個是終極目標需要分解為多個子目標,一個是子目標需要去找尋關鍵影響因素。如果按照這個邏輯,CSF關鍵成功因素法就幫我們把這樣的思考過程結構化了,CSF關鍵成功因素法的圖如下:
該圖其實包括了三個重要的環境,分解為子目標,找尋子目標的關鍵要素,找尋關鍵控制變數。這正是我們談分解的時候的重要步驟。而分解是靜態分析的過程,需要結合動態流程分析,在圖裡面可以看到在找尋關鍵控制變數的過程則需要結合關鍵流程分析。分解的過程正是形成邏輯樹的過程,分解的過程需要盡量符合MECE法則,即完全窮盡,相互獨立。同時在分解為樹的過程中,樹上同層的內必須是相同層面和粒度,屬於相同類別下的分解。這往往是分解工作的真正難點。分解的結構化正是體現在層次性,粒度同一性,分類的同屬性方面。比如思維導圖我們大家都可以畫,但是是否畫的好重點這是MECE+分解的層次性方面。大目標分解為小目標,小目標再分解為影響因素。那麼小目標和影響因素之間究竟是什麼區別?那麼如何來判斷分解的內容究竟是小目標還是影響因素?這裡最簡單的方法則是通過SMART原則來進行判斷,如果分解的內容符合SMART原則,則就是小目標,不符合則是影響因素。對於項目管理中的項目,可以先分解為進度,成本,質量三要素。我們看到這三個要素都是明確的,可以度量的,而且有明細的時限性要求,因此它們是子目標。而我們在看開發人員技能水平,開發工具等這些分解要素,它們顯然不滿足目標的SMART原則,因此它們更多的是影響目標的關鍵成功要素CSF。終極目標是我們的期望,子目標也是我們的期望,有了子目標後就讓我們的目標實現過程也變成一個迭代的過程,即目標真正通過迭代落地的問題。即使終極目標沒有達到,但是我們並非是一無所獲,因為有一些小的目標我們還是達到的實現了,同時通過實踐為終極目標的達到奠定了基礎。接著舉例來說明目標的分解過程:對於項目管理而言,項目管理的終極目標往往是最終的客戶滿意,其分解的第一層子目標則是在項目範圍一定情況下的進度目標,質量目標和成本目標。對於企業的戰略驅動的績效評估體系而言,其最終的目標往往則是公司在幾年內合法利潤的最大化,其分解的目標按照BSC可以劃分到內部學習,外部客戶,財務,流程四個分解維度。對於流程方面可以按照價值鏈分析方法進行進一步的分解。如何最大化公司的業務價值和股東投資回報率?要回答和思考這個問題首先也是要分解,第一層分解即我們的回報主要來源於經營利潤和投資回報,而經營利潤又涉及到收入和成本兩個重要因素,如此層層分解形成完整的邏輯樹。
前面我們將過如何進行績效考核工作的彙報,這個的終極目標是領導對我工作的認可,而認可又基於我的工作勝任或超出了公司崗位績效KPI對我的要求。因此分解的重點在於對我所在崗位的績效KPI的分解,對於規範化的企業往往我們直接就可以找到相關的KPI分解。比如對於運維管理工作,分解如下:在這個圖我們看到一個重點就是分解的子目標前面增加了一個目標的分類,而平衡計分卡裡面的四個維度也是起子目標分類的重要。增加分類的目的是方便後續的維度分析和平衡,在後面再詳細描述。分解中用的模型都是樹模型,包括邏輯樹,問題樹,風險決策樹,思維導圖,魚骨圖等方法歸根到底都是樹模型的應用。樹模型更好的解釋了所有的分解都圍繞一個終極目標,而不是多個目標,多個目標往往僅僅是終極目標的子目標。對於魚骨圖也是分解,但是魚骨圖更多是用於問題的分解,體現因果關係,同時又給出根據一般的法則即從人,機,料,法,環五個方面進行分解。所以魚骨圖一般沒有包括對子目標的分解。對於決策樹也是分解,當時更多的是對不同決策的分解,而我們在思考中一般不適合過渡跳躍,直接由問題轉移到決策。因此分解沒有明顯限制的還是邏輯樹,在前面幾層可以是子目標的分解,在後面幾層可以是控制變數的分解。分解的過程中保護了分類,對於我們有經驗和前人體系積累的領域,則可以直接借鑒分類,在分類的基礎上進一步分解。也可以是先進行分解,再對分解內容找尋共有的維度屬性,抽象出標準的分類。分類和分解沒有必然的先後關係,重點是要保證粒度同一性,分類的同維度性。對於分解的思考,後續再寫如何保證粒度的同一性,分類的同一維度性問題。這個思考清楚的才能夠思考另外一個重要話題,即匹配。匹配是作出決策和行動之基礎,仍然把它劃分到分解的範疇。第五部分 目標分解的原則
對於目標的分解包括三個步驟,首先是目標分解為子目標,其次是子目標分解為關鍵影響要素,最後是通過流程分析分解為關鍵控制變數。對於分解的原則重點就是分解的同層次性和同粒度性,即對於分解完成的結果要保證邏輯樹上的同一層是在講同一粒度的事物。
靜態和動態
分解的過程應該是靜態和動態相互結合,但是又不能將靜態和動態混淆在同一層。可以先按靜態分解也可以先按動態分解。對於項目管理領域靜態分解即是9大知識體系,動態分解即是5大過程組,靜態+動態形成一個完整的矩陣表結構。對於非熟悉領域建議先進行動態分解,動態分解就是找尋事物的發展階段和發展流程,通過流程分析後再找尋其中的流程活動要素,活動要素識別後再來進行這些要素的分類即靜態分解。舉例來說,比如我們需要舉辦一次晚宴,首先可以將活動分為準備,晚宴前,晚宴中,晚宴後幾個階段,再來考慮各個階段都需要準備的物品。最後通過歸來識別物品屬於酒類,主食,正餐,水果,零食等幾個大類。抽象和具體分解的過程是嚴禁將抽象和具體分解到同一個層面。比如上面的例子將主食和長城干紅葡萄酒分解到一個層面就是不合適的,主食是一個抽象的名稱,即我們所的一個分類;而長城干紅葡萄酒已經到了一個具體的事物實體。因此對於具體實體首先應該抽象其分類,再逐步分解,即分解的過程不是完全自頂朝下,有些也需要從下整合到上層,整合後結果可能是主食類和酒類,它們就是屬於同一個層次的。
粒度和數目同一個層面分解的數目如果對於目標到子目標的分解,最好在3-5個比較合適。如果是子目標到要素的分解最好是5-7個比較合適。子目標分解的太多往往不容易聚焦即後面的整合分析,對於要素的分解可以細化點但是仍然不適合分解的太多。對於分解的粒度並不一定同層的粒度就要完全一樣,考慮分解的粒度的目的仍然是為我們後續的執行,管理和控制服務。對於項目管理我們知道,對於WBS分解的工作包粒度不能太大,任務不適合超過80小時。因為工作包是我們後續成本核算的一個基準單位,所以為了成本管理,還需要各個工作包的工作量盡量偏差不大,為了進度管理方便工作包橫跨的時間周期也需要盡量一致。對於個人規劃和目標,可以參考個人平衡計分卡進行分解,首先分解為對內(家庭),對外(工作),知識學習,財務四個方面進行分解。即我們說的子目標,然後可以對知識學習進一步分解,如在一年時間專業技能,通用技能,讀書學習各方面需要達到的目標,最後再分解到具體的執行事項。短期和長期長期目標必須要分解到具體的短期目標,比如我們可能制定一年的工作和學習目標,這個目標往往並不是太困難的,但是如果我們每個月都沒有進展那目標同樣很難達成。因此年度目標需要分解到季度目標,月度目標,這樣既有長遠規劃,又有短期規劃支持現在的實踐和行動。長期目標到短期目標的分解有很多方式,一個是數量上的方式,比如我規劃今年需要讀50本書,為了實現這個目標並留些餘量,則上半年需要讀30本書,上半年的每個月需要讀5本書。另外一個就是知識維度方式的分解,比如上半年需要對自己的溝通能力,寫作能力,市場營銷,項目管控,SOA知識幾方面的能力進行提高,則可以看到溝通能力往往是橫跨一年的,則可以計劃在1-3月重點提供SOA和市場營銷方面的知識,4-6月提升項目管理方面的知識。
第六部分 流程分析
分解的過程是自頂向下,分解的時候先要考慮目標分解到子目標,然後才是子目標分解到關鍵要素,關鍵要素分解到控制變數。這個過程和步驟很清楚,但是實際上如果沒有相關領域知識積累我們很難做到自頂向下,除非我們思考的問題域是我們原來已經接觸過的領域,已經有相關的經驗和知識的積累,或者有大量的業界標準可以參考,我們只是按照模板一步一步完成。
我們來考慮一個實際場景,當我們的軟體系統遇到了性能問題,有經驗的架構師可能直接會定位到資料庫的SQL語句或者是索引出了問題,而直接去優化相應的索引和SQL語句。這即是我們常說的非結構化解決問題的思路,即先通過自己的經驗提出最可能的假設,然後再進行實踐去驗證假設是否解決了問題,如果沒有解決再找尋第二可能的假設。當我們接觸全新的業務領域或者說經驗不足的時候,以上方法完全不適用,我們根本不知道無從下手。在這種情況下我們看到我們經常使用的方法是流程分析+頭腦風暴。兩者必須要進行結合以保證不出現重要的關鍵要素的遺漏,我們如果不注意使用流程分析而頭腦風暴的一群人又是思考模式趨於一致的人,那麼我們的思維仍然是片面的而出現遺漏,在這個地方也可以看到六頂思考帽強調的多種思考模式的初衷。而六頂思考帽更多的是從人的感性模式出發以做到各方面兼顧,流程分析更多是從事物發展理性分析進行兼顧。再回到性能問題,當我們去思考和改進軟體系統的性能問題的時候,首先我們思考的關鍵是要解決性能問題首先要明白性能問題是怎麼產生的?而要明白性能問題是怎麼產生的則需要去對完整的軟體開發生命周期流程進行分析。所以很自然的將思考的分析過程首先定位到流程分析,而流程分析的目的本身也就是找到子目標或關鍵影響因素。我們對軟體開發和部署流程進行初步分析,得到如下圖:
得到該圖後接下來對流程中的每一個活動進行分析,找尋關鍵影響因素。比如對於需求調研過程,我們應該分析到原來沒有非功能性需求的調研,沒有用戶業務量,業務數據,網路和帶寬環境的調研,而這些調研內容和性能相關。
在軟體需求中非功能性需求是關鍵,在架構中開發框架應該支持相應的性能要求,資料庫的範式設計有些為了性能考慮可能涉及到反範式,同時索引,存儲過程,SQL語句都會影響性能;在開發中的邏輯層涉及到演算法優化,事務,資源釋放等關鍵影響點。在測試中性能測試涉及到場景設計以及對非功能性需求的匹配;在系統部署中則涉及到操作系統,資料庫,中間件的安裝和參數設置和優化。
通過以上分析讓我們從全局對問題有了更好的了解,同時我們得到一個結論:把握關鍵點可以快速撲滅問題,但是分析全流程則可以從根本上持續改進問題,性能問題的產生是諸多環節不注意由小積累到一定量後的表現。
按對流程的全面覆蓋對活動內的要素進行頭腦風暴,經過頭腦風暴後可以得到如下的圖:
得到該圖後我們接下來開始考慮分組,而分組的意思就是頭腦風暴的內容可能是零散的,需要通過分組朝上面進行抽象,即通過分組由下向上形成問題分解樹。而如何分組又是一個問題,分組的可以是按照事物發展的階段進行分組,也可以是按照其它的事物共有屬性進行分組,比如上面的例子,我們看到性能的影響要素主要是圍繞軟體,硬體和運行環境三個方面的,所有的影響要素都可以歸屬到這三類裡面。而軟體裡面本身又分了多個方面的內容,重新進行歸納整理後形成完整的問題分解樹:
第七部分 排序
在前面一篇講了分解的一個重要方法就是結合流程分析,通過流程分析對事物發展的全過程有所了解,找到流程中的活動,頭腦風暴更關鍵要素,然後自底向下的進行歸納和總結,形成最終的問題分解樹。
對於思考的三要素再次說明,其一是確定目標,其二是分解和關聯,最後是做出決策。在問題分解樹形成後一個重要的思考內容就是各個關鍵要素如何排序,優先順序究竟應該是如何的?排序最簡單的就是單要素的排序,對於產品銷售可以按產品的銷售額排序,可以按利潤高低排序,可以按客戶多少排序等等。單要素排序基本不需要做太多的思考,完全以數字說話。但是很多時候我們排序會提一個詞叫優先順序排序,要明確的是優先順序是根據事物多個屬性要素進行綜合得出的一個級別。我們可能在思考,今天先完成事件A優先順序最高,其原因可能是基於事件A是其它事情的前置事件,事件A需要的工具今天已經具備,事件A的複雜度比較低,事件A對提高效率幫助最大等。所以我們綜合衡量了很多關於事件的綜合信息,最好憑藉我們的經驗認為事件A優先順序最高。很多時候經驗往往是正確的,當時並不一定是最科學的,而沒有科學的方法則很難分析和解決大型複雜事物。當我們在做購房決策的時候,我們可能先要決定關鍵影響因素,即思考中分解的過程。我們可能會分解出價格,周邊環境配套,學位,交通,未來發展等多個影響要素。而我們對待選的房產進行排序的時候,往往就需要綜合衡量這些影響要素,最終形成一個綜合得分,來確定優先順序。當我們思考需求優先順序和排序的時候,我們往往需要考慮需求的實現難易程度,緊急程度,重要性等各個方面的關鍵要素最終在進行綜合的排序。當我們思考前面分析的系統性能問題的時候,性能的發送可能涉及到資料庫,中間件,前台應用,硬體等各個方面。我們需要提升性能到一個合理的範圍,當時又需要花費最小的成本。所以需要對關鍵要素進行排序,而排序重點則是性能提升幅度,難度,成本消耗等。如果我們剛畢業在做擇業選擇的時候,我們也會對待選擇的企業進行排序,而這個排序可能就涉及到地域,個人發展,個人興趣,專業對口,經濟收入等多方面的考慮因素。要注意到排序很多時候都涉及到多個維度的影響,是一個綜合衡量,而不是單一要素確定的。這正是排序之複雜點,因此排序前應該是首先找到影響事物的關鍵要素,而找尋關鍵要素有可以遵循分解的方法進行。排序之目的最終就是形成優先順序列表,為決策服務。由分解後進行排序轉化出來的決策往往則是一種結構化的決策方法。雖然很多時候我們往往並不會按部就班的這樣一步步做,但是這確是一種科學決策和思考方法。第八部分 組合分析
對於問題的分析,原來我們比較常用的都是二元決策,即是和非。但是隨著問題本身的複雜化帶來我們在分類和決策上的複雜化。因為一個大問題其本身就是一個問題的集合或者叫問題群,對於一個單獨的事件我們可以用做還是不做來決策,但是對於問題群我們需要的是組合決策。而矩陣分析,我的理解正是一種最簡單的多維度分析和決策,打破我們原有的簡單的二元判斷邏輯。
在排序完成後已經完成了第一步的分析過程,但是分解要素或者說問題群的排序清單很多時候往往並不是直接選擇前面幾個要素執行就可以了。目標驅動的決策過程是我們關心的重點,拿企業的戰略決策來講,我們的戰略可能是穩定平穩低風險戰略,也可能是激進的高風險戰略;有可能是成本優先戰略,也可能是銷售額優先的規模化戰略,這些往往都將影響到最終的決策過程。
排序完成的列表缺點在於不能很好的根據不同的目標驅動來體現排序要素之間存在的分組特性,而組合分析其根本就是從目標分解的子目標的多個維度來分析排序結果之間存在的一種明顯的分組特性。很多時候我們要的不是排序最終的分值,而是排序清單的分組邊界。組合分析重點則是從目標分解的子目標的多個維度來分析關鍵要素所呈現的各種分組特性,通過目標驅動來綜合考慮最終決策需要改進的關鍵要素組合。在這裡一定要注意的就是我們最終得到的決策清單,是多個關鍵要素的組合,這個組合的特點往往並不是簡單來源於排序結果。常見的組合分析簡化方式即是矩陣分析,矩陣分析可以考慮2-3個決策目標和維度下關鍵要素的一個分群現象。在市場和戰略規劃中可以看到很多的矩陣分析例子,如安索夫矩陣,波士頓矩陣,GE矩陣等。如下:波士頓矩陣讓我們可以從市場增長率和市場佔有率兩個重要的維度來觀察和分析企業已經存在的產品。通過分析我們就知道了哪些是明顯產品需要加大投入和擴展,哪些是現金牛產品需要維持,哪些是問號產品需要改進,而哪些是瘦狗產品需要捨棄。對於投資組合是組合分析常用的另外一個例子,而基金本身就是一個投資組合,是在通過組合分析進行的一個優化選擇,以在能夠容忍的最大風險下獲取最大收益。對於投資矩陣分析可以用下圖描述:當我們完成這個矩陣分析後,根據我們期望的目標和風險容忍度,就可以得到一個初步的選擇範圍,這個範圍可以是一種定性的分析,也可以是一種通過計算機模擬得出的定量分析。矩陣的形成過程重點是找尋目標所分解的關鍵子目標,這些子目標都是我們所關心的矩陣維度。比如拿投資來講我們期望利潤最大化但是風險又要最小,顯然投資收益和風險則是矩陣分析的兩個重要維度。在系統性能優化和改進上我們期望性能提升最大,但是成本又需要再受控範圍,則性能提升幅度和成本就是兩個重要的分析維度。在產品研發上我們期望進入全新的市場,期望有最高的收益,但是人員投入又需要受控,則可以三個要素兩兩展開進行矩陣分析。通過矩陣分析讓我們從多個維度和視角來看待我們的關鍵要素集合,以認識到了要素本身對目標諸多維度的影響是平衡的,一方面好了另外一方面肯定會帶來負面的影響。而這是過渡到系統思維之基礎。第九部分 決策概述(未展開)
決策一詞的意思就是為了到達一定目標,採用一定的科學方法和手段,從兩個以上的方案中選擇一個滿意方案的分析判斷過程。管理就是決策,是指通過分析、比較,在若干種可供選擇的方案中選定最優方案的過程。從這個定義我們看到一個重點就是決策一定是涉及到多個方案的選擇,同時思考的目的是為了做出正確合理的決策,而決策的目的是行動和執行,執行的目的是解決問題。
在《卓有成效的管理者》裡面,德魯克給出了決策的五大要素,具體如下:從這些關鍵要素也可以看到,決策分為三個階段,首先是根據問題的定義和分析比較,給出若干個可行的方案;其次是再次明確目標後,根據目標來選擇最優方案;最後是執行和反饋形成閉環。用數據說話當然是我們所期望的最科學的決策方法,但是很多時候決策時包含了預測能力,決策有時候靠的是前瞻性的見解和假設,憑藉的是個人豐富的知識和經驗。決策本身的困難在於決策後的執行,執行後帶來的效果。一個好的決策往往可能受到諸多因素的影響並不一定帶來好的效果。或者說一個決策可能短期效果很好,但是長期可能產生更大的負面影響。因此決策的困難往往在於多目標而非單目標,決策很多時候不是單目標最優,而是多目標的平衡發展。對問題性質的了解(去追究問題的根源)
確定問題的邊界(簡單講就是決策不能破壞前提條件,要達到的最基本的目的) 先考慮最優方案,而不是一開始就考慮妥協 決策的方案必須要兼顧執行 決策執行過程中要重視反饋,不斷驗證決策正確性和有效性(形成閉環)
在《項目管理藝術》一書裡面,為了提升決策技能,需要我們對決策進行回顧,具體如下:
我們做的決定是否能夠解決最核心的問題?
在做決策過程中,是否有更好的邏輯或歷史數據能夠幫忙我們快速對可選方案進行篩選我們的目標和具體的需求在我們做決策過程中有多大幫助?決策對項目的進展是否有利?我們認為的關鍵人物或專家是否參與了整個決策過程?決策是否妨礙或影響了其它問題的解決?
從上面回顧可以看到,決策往往需要數據支持,決策的目標是為了行動並解決問題,決策的同時還需要考慮不能為了再解決當前問題的時候產生了其它更加嚴重的問題。一個好的決策必定是一個系統思考的過程。
對於決策分為結構化決策和非結構化決策,結構化決策是指對某一決策過程的環境及規則,能用確定的模型或語言描述,以適當的演算法產生決策方案,並能從多種方案中選擇最優解的決策;而非結構化決策,是指決策過程複雜,不可能用確定的模型和語言來描述其決策過程,更無所謂最優解的決策。對於結構化決策,在CMMI三級的DAR決策和解決方案裡面給出了一些較為明確的方法和步驟,如下:再次明確問題的目標根據目標來確定評估被選方案的準則
根據問題定義和分析過程給出可行的多個被選方案根據評估準則對備選方案進行多維度的評估根據評估準則從備選方案中選擇推薦方案執行決策結果並跟蹤效果
從這裡可以看到目標明確是決策之基礎,多個備選方案的準備是決策之準備,執行評估和選擇備選方案是決策的重要過程,執行和跟蹤時最終的決策落地。
推薦閱讀:
※如何克服「選擇恐懼症」?1個工具,4個步驟,讓你徹底擺脫糾結
※為什麼讀了很多書,我們卻依舊過不好這一生?
※試舉例來說明批判性思維?
※與PPT相比,你應該先培養結構思考力
※助產術-蘇格拉底的智慧