從螞蟻的覓食過程看團隊研發(轉載)

我常常想,我們整天工作着,忙碌着,日復一日,年復一年,也看着別人和我們一樣在工作着,忙碌着,我們甚至沒時間停下來思考,你忙,我忙,他也忙,看起來,我們的團隊,我們的部門就像一羣忙忙碌碌的螞蟻。其實,我們和螞蟻的想象之處還不光在忙碌這點上,我們先來看看螞蟻覓食的故事。
從螞蟻覓食淺談研發過程-轉載
 
上圖中就是一個螞蟻覓食的示意圖,分別爲黃色,黑色,和藍色的3條線表示螞蟻可能從巢穴到食物的路徑,起初生物學家面感覺很不可思議,大部分的螞蟻都是按照途中PathB的最接近的路線走,小小的螞蟻是如何有這麼高的智能的呢?

螞蟻並非是千里眼,一下子就看到遠處的食物,而且螞蟻也並非有靈敏的嗅覺,能聞到遠處的食物,實際上螞蟻所能感知的範圍很小,我們將上圖中的每隻螞蟻加上它的感知範圍,便得到下面的示意圖。

從螞蟻覓食淺談研發過程-轉載

在上面這個覓食圖中,當螞蟻在其感知範圍內有食物信息的時候,它就會沿着這個信息素走下去找到食物。我們可以得到如下一些結論。

1.第一隻發現食物的螞蟻來自於它的探索精神,對於未知的領域,沒有誰會告訴你如何做就一定能成功,成功來自於機會和永不放棄的探索。

2.後面沿着已經成功地路線跟着走的螞蟻們則是利用已有的信息爲自己的成功縮短時間,信息也是生產力。這就是所謂“成功吸引成功,民工吸引民工”

3. 如果後面的螞蟻都是沿着第一個成功發現食物的螞蟻足跡這樣走下去的話,必然帶來2個問題:

 

a.第一次尋找到食物的路線未必是最佳的,但蟻羣永遠按照並非最佳的路線搬運食物,就如同圖中的PathC


b.大家都來搶同樣一塊食物,資源很快就耗空,很快大家又都餓肚子了

螞蟻還是聰明的螞蟻,它們並沒有發生上述的情況,它們隨着時間的推移,對於同一塊食物總是會接近最佳的路徑,也同時會尋找其它的食物,這來自於螞蟻在尋找食物時候的2個特性。

A)不走回頭路,可以失敗,但決不再已經失敗的道路上再失敗一次
B)既會沿着已經成功地道路走,但也會出現其它隨機性,我們可以稱這個不走尋常路的特點爲創新,去探索新的成功之路,雖然可能頭破血流,一無所獲,但也可能在痛苦之後柳暗花明。(創新猶如研發過程中的預研,可能不知道結果,但是爲了革新還是要不斷去探索。窮則變往往並不是最佳的,真正到了窮盡的地步往往你已經沒有變的機會)

當有2條及以上的線路被發現的時候,在相同的時間內,短的那條路徑因爲走得次數多,便會有更多的信息留下,那麼後來的螞蟻就會沿着信息更多的路徑走,這樣隨着時間的推移,整個蟻羣就會沿着逐漸最佳的路徑搬運食物。

 

4,單個螞蟻並非有多高的智能,或者說並非能總領全局,它們侷限在自己的視野,它們只遵循3條原則:


A.在自己的感知範圍內,利用別的螞蟻提供的信息素進行簡單的推理。 
B.當自己找到食物的時候,在路徑上提供信息素。                   
C.儘量沿着已經被證明可以找到食物的道路走,但不忘了探索新的道路。

這個看似簡單的規則,在多個螞蟻共同去覓食的時候,卻涌現出非凡的智慧及生產力。螞蟻覓食給了我們一個啓示,就是對於團隊,對於複雜系統的能力,我們除了按照傳統的統計學來分析,同樣可以採取系統論的方法,研究單個個體的行爲,從而分析多個個體在一起所涌現出的能力。

 

對於螞蟻,我們現在不防抽象的分出如下3種:

灰色螞蟻:灰色代表消極,我們將這種螞蟻看作庸庸碌碌,不去思考
行動規則:
1.能搬到食物就行
          2.以前怎麼搬食物的,現在還怎麼搬,即便有更好的路徑也不關我事

 

黑色螞蟻:黑色代表內斂,這種螞蟻優秀而不喧譁,勤勤懇懇

行動規則:1.在所能感知的範圍,選擇成功的最佳路徑
          2.已經證明失敗的道路不會再重複走

          3.在沒有道路的時候,能夠勇於探索

          4.在搬運食物的道路上,隨機進行創新探索。

 

藍色螞蟻:藍色代表着冷靜,智慧,能承受壓力又極具創新探索精神

行動規則:1.在所能感知的範圍,選擇成功的最佳路徑
          2.已經證明失敗的道路不會再重複走

          3.在沒有道路的時候,能夠勇於探索

          4.在搬運食物的道路上,主動進行創新探索。

(這裏的分析和《誰動了我的奶酪》中的小老鼠很類似,關鍵點還是是否願意接受改變,這是第一步。在危機都還沒有來臨的時候就自動主動改變,這是第二步。對於一個團隊,灰色螞蟻是消極的。而黑色螞蟻和藍色螞蟻則不能缺少,藍色螞蟻的多少跟企業或團隊研發的產品,市場,環境,競爭多種因素相關)

 

有了上述3種螞蟻,我們簡單分析不同蟻羣會涌現出的能力:


蟻羣1-全部是灰色的螞蟻,這樣的團隊只能說是一羣螞蟻的疊加,沒有合作,沒有耦合,根本就產生不了1+1>2的效果,團隊能力,團隊效率非常低。


蟻羣2-全部是黑色的螞蟻,這樣的團隊初期會遇到困難,挫折,但隨着時間的推移,團隊會不斷成長,成長到一定程度出現穩定的非最優的過程能力,但其發展受限於隨機的創新能力。


蟻羣3-全部是藍色的螞蟻,這是個天才的團隊,因爲藍色的螞蟻極其稀少,全是藍色螞蟻的團隊就更稀少了,通常這樣的團隊都是幾個天才的開拓者組成的小workgroup,而且隨着團隊的成長會有一批黑色或者灰色的螞蟻加入,這個團隊最重要的特點在於其主動的創新探索,這相當於加速自然進化的速度,加速成功。

如果把我們的團隊比作蟻羣,那麼實際上這個蟻羣並非全由灰色螞蟻或者黑色螞蟻或者藍色螞蟻單獨組成的,通常是混合而成,而且不同的團隊成員在不同時期的表現也可能不一樣,可能一會更像是黑色的螞蟻,一會更像是灰色的螞蟻,而這種變化除了來自於單個個體的隨機性以外,最重要的來自於流程的約束。

我們談流程,談過程,通常的視角是從產品實現的角度來思考和制定,我們常常忽略另外一個視角,就是單個個體是否能在這樣的流程約束中達到上述所說的黑色螞蟻或者藍色螞蟻的境界。

如果我們忽略了上述的視角,可能會導致藍色的螞蟻失去了它的主觀能動性而成爲黑色的螞蟻,而黑色的螞蟻失去了隨機的探索,而逐漸變成灰色的螞蟻,逐漸會發現其實我們看似龐大的團隊就是幾隻黑色的螞蟻加上一羣灰色的螞蟻,缺少創新,缺少探索,缺少思考,團隊的進步緩慢,並且擁有穩定而不好的過程能力。

反過來如果我們的流程,我們的規則能夠讓灰色的螞蟻逐漸養成一點創新精神,分享精神而變成黑色的螞蟻,能夠讓黑色的螞蟻產生主觀能動性,養成目標驅動的習慣而變成藍色的螞蟻,那麼這個流程纔是優秀的流程,透露出的文化也是優秀的文化,團隊的能力會快速增長,團隊不光是優秀產品的輸出機器,也是優秀人才的輸出機器。

達到上述的目標,並非很容易,事實上單個螞蟻看似簡單的行動的規則,也是自然進化的結果,同樣我們的流程也需要進化,只是不同的是,我們有了相對的標準,我們不需像螞蟻一樣經過千百萬年的自然進化,完全對所有的隨機性進行試探,我們只需要把握好上述所提的從單個個體分析集羣涌現效應的視角,那麼我們就能夠輸出可操作同時又有效的流程。

舉個例子吧,技術積累是很多部門很多團隊都在搞得東西,那麼真正的效果如何?都知道這個東西好,但真正實施起來,效果並非如開始時想象的那般,甚至到後來都成爲平時工作的一個拖累,這是技術部定的KPI指標,開發部開始還有一些,後來就逐漸提交不了了,花時間又沒有多少用,於是就有了湊數字的例子,硬湊上去的技術積累有什麼用呢?於是來主動看技術積累的人又少了?繼而產生惡性循環,好好的一個東西就逐漸被人不重視了。

那麼問題在哪呢?我們可以把技術積累比喻爲螞蟻在覓食過程中的信息素,這個信息素將有助於我們找到食物(達到目標),然而我們和螞蟻相比卻有欠缺之處:


1.螞蟻在自己狹小的觸覺範圍內能感知有信息素,而我們的團隊成員有時候連技術積累放在什麼地方都不知道,或者說根本沒有一個地方放技術積累。


2.螞蟻在自己狹小的觸覺範圍內能識別信息素,螞蟻能夠識別哪些是食物的信息,哪些是巢穴的信息,哪些信息更濃,哪些信息更淡,而我們的技術積累全堆在一起,沒有分類(或者分類不詳細),沒有權重,導致我們識別困難,利用也就困難。如果我們將技術積累進行一個詳細的分類,詳細到可以對應我們的產品生產過程,比如對於軟件研發的技術積累,將所有對內存操作的放在一起建立索引,對信號量操作的放在一起,進程通信的放在一起等等,然後每篇技術積累都打上權重,評分,是3顆星還是4顆星,這樣在研發過程中,研發人員能立即找到最濃的信息素,信息只有被利用才能體現它的價值。


3.螞蟻能夠主動利用和分享信息,而我們未必能達到,螞蟻的這個主動性是自然進化的結果,我們卻沒有,改變這一點則需要處罰和獎勵雙管齊下,如何保證主動利用信息,一個措施就是當發現在某個地方走了彎路範了錯誤,而技術積累中已有同樣的信息的時候,那麼個體就需要受到懲罰;如何保證主動分享信息?一個措施就是當成員發現某個問題更好的解決方法,如果能分享出來,寫了技術積累,則需要及時表揚及時獎勵。同時技術積累也可由直接領導在適當時候要求在某方面進行總結而產生。


上述3點缺一不可,只有保證了上述3點,我們這些螞蟻才能高效的覓食,技術積累才真正起到其該有的重要作用。

上述只是研發過程中的一個例子,再比如編碼,大部分研發人員整天接觸的事情,這個和螞蟻覓食有什麼關係呢?其實我們的編碼都會受到已有代碼的影響,已有代碼給我們最重要的信息是體現在代碼中的架構信息,框架信息,那麼這些就相當於螞蟻覓食中的信息素,我們都會順着這些信息素逐漸累加代碼,這就是爲什麼有些函數1000多行大家還逐漸往上加一樣,大家都是這麼加的,這就是很濃的信息素,自己也知道其實應該用另一種更好的方法更好的框架分解,但改起來又太麻煩,於是大家都按照不盡合理的框架繼續添磚加瓦,到最後可能出現牽一髮而動全身,辛苦建設的大廈搖搖欲墜,甚至有一天轟然倒塌。所以軟件的架構設計必須提到足夠的高度,另外就是發現代碼編寫的不合理需要及時更正,代碼不光要滿足顯性的如功能性的要求,也要滿足隱性的如可擴展性,可維護性等要求,否則我們就提供了一條條在非最佳路徑的信息素,這將會導致後面的研發人員沿着不好的道路繼續走下去。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章