在一些互聯網公司里,常常有些人擁有唬人的頭銜,拿著高昂的薪水,甚至有些大權在握,但他們并不勝任他們的工作——那么,優秀的軟件團隊如何才能避免腐朽?
作者 |Erik Dietrich譯者 |蘇本如責編 | 郭芮出品 | CSDN(ID:CSDNnews)
以下為譯文:
我最近發表了一篇很受歡迎的文章,叫做“如何留住最好的開發人員”。我在文章中提到了最能干的開發人員在工作中想要什么,以及為什么他們無法滿足的時候,他們就會選擇離開。今天,我想寫一篇文章,重點關注軟件開發團隊,而不是單個開發人員在組織內部或組織之間的個人旅程。
在我的前一篇文章中,我提到了布魯斯·韋伯斯特的“死海效應”這篇文章,它描述了一種趨勢,即最有才華的開發人員往往是最有可能獲得其他機會的人,因此當他們稍不如意時,就最有可能選擇離開。另一方面,最沒有才華的開發人員更可能留下來,因為他們很難說服其他公司雇用他們。這提供了一個視角讓我們能夠理解為什么在公司里常常有些人擁有唬人的頭銜,拿著高昂的薪水,甚至有些大權在握,但他們并不勝任他們的工作。但這個視角還是把注意力關注在個體層面,這不是“死海效應”的關鍵,只有當一個團隊不斷制造出這樣的“渣子”成員(或者更糟,所有有才華的成員都被趕走,最后只留下這些“渣子”成員),這才是“死海效應”的真正含義。
我相信任何一個軟件團隊的腐壞并導致有才華的人員流失都有一些獨特的群體動力,不能完全歸結為糟糕的外部決策。毫無疑問,布魯斯·韋伯斯特的“死海效應”既是這種群體動力的催化劑,也是這種群體動力的必然結果。我相信,外部的愚蠢決策要想搞壞一個軟件團隊讓“渣子”成員充斥,必須要有團隊內部的“巫術”相配合。這篇文章中,我將描述團隊中的個體如何通過選擇終身平庸為自己獲得回報鋪平道路。
學打保齡球
在開始之前,我想請你一起回顧我打保齡球的歷史。是的,我是認真的。
我是一個相當有運動天賦的人。從小到大,無論玩什么運動或者參加什么比賽,我總是至少能比2/3以上的人出色。但是我總是博而不精,沒有哪一項能拔尖。這給了我一種錯覺,就是我能不費吹灰之力地掌握任何一項技能,當我開始練習保齡球時就有這種錯覺。
大多數打保齡球的人都會把拇指和兩個手指放進球里,并小心地訓練投擲方式讓球先從邊上開始滾動再轉向中間。我沒有耐心去練習這個動作,我發現我可以不把手指和拇指放進球里,但是我假裝這樣做,然后稍微扭動我的肘部,把球投擲到球道上。這種投擲方式雖不漂亮,但很管用。
事實上,我打保齡球的次數越多,效果就越好。當我為了玩得更開心,參加了一個業余聯盟后,我的平均得分開始上升。我并不是這個聯盟中最好的球員,有幾個保齡球手,包括我的前經理,他們的平均得分在170到200之間,而我在聯盟中玩了幾個月后,我的平均得分從130到140之間迅速提高到160分左右——這個分數不算太寒酸。
但自那之后就奇怪了,我的得分不再提高了,最高分就停在了160分左右。我問我的老經理我需要做些什么才能繼續提高,他對我說了一些非常有趣的話。大意如下:
如果你一直這樣打保齡球,你就沒有可能提高了,你已經達到了你的極限。如果你想做得更好,你就得學會正確地打保齡球。你需要一個不同的球,一種不同的投擲方式,你需要像個大男孩一樣把手指放進去。最糟糕的是,在你獲得改進之前,你的得分會比現在更差,而你想恢復并超過目前的平均水平,需要不少的時間。
我抵觸了一段時間,不想改變,但我又對自己止步不前感到厭煩(這是我個人的一個特點:我必須要成為最頂尖的,否則我會發瘋),所以我還是開始了艱難練習。我買了一個保齡球,把它按照我的手指定制鉆了孔,并開始按照正確的方式練習投擲。具有諷刺意味的是,我在做了那件事之后,幾乎馬上就離開了那份工作,而且在那之后的幾年里,我大概只打了8次保齡球,生活就是這樣。但是我想,下次我去的時候,我就不再需要租保齡球鞋,也不需要在球館里挑選適合我手指的球了。
德萊弗斯模型:快速回報,發展受阻
20世紀80年代,一對姓德萊弗斯的兄弟提出了一個技能獲取模型,對學習、過程和實踐的討論產生了相當大的影響。后來,他們出版了一本基于這個模型的書,在那本書中,他們將把模型改進成現在維基百科中看到的形式。
該模型列出了技能獲取的五個階段:新手、高級新手、勝任者、精通者和專家。顯然,這本書有很多內容,因為它需要一整本書來描述,但其要點是技能獲取者從“生搬硬套和缺乏大局”向“直觀超越規則和全面理解大局”的方向轉變。
通常情況下,人們會假設在各個階段所取得的進步都是自然的和線性的,就像空手道腰帶的獲取或者企業界金錢的賺取。但在實際情況下,它會因為人的悟性和態度而不同。當一個人開始學習一項技能的時候,他是完全不勝任的,這會導致最初的一段挫折期,這時候他會陷入困境,只能等待有人(比如指導老師)來向他填鴨式地灌輸需要的知識(或者,像德萊弗斯們所說,他們“像個嬰兒,通過模仿和掙扎撿起東西”)。然而,在一個相對較短的完全的啟動階段之后,這個人就到達了這樣的階段,通過一些練習就能掌握技能。并且如果選擇“低掛果實”的話,一個充滿活力的學習者就能獲得相當快地提高。然而,一旦所有“低掛果實”被摘下,這種不可持續的快速進步的速度會有所下降。從那以后,進一步的熟練就變得相對困難了。
我畫了一個圖表來描述這個過程(實際上花了我很長時間,因為我亂七八糟地畫了帶一個自變量的logistic 1/(1 + e^-x)回歸函數,而不是像普通人一樣在Paint中畫一條線)。
事實上,我的保齡球技能的獲取正是遵循這樣的路線,從完全不會,到具備某種程度的技能,再到迅速地提高到勝任的程度,然后就停滯不前了。在我的例子中,技能的提高達到了局部的最高點,然后就不再提高了,因為太忙,所以我無法繼續按既定路線提高,也無法將我的調整進行到底。在這篇文章中,我把這種情況稱之為“發展受阻”。這個詞是一個心理學術語,但是為了本文的目的,請忘記這個心理學的定義。
從技能獲取的觀點來看,一個人到達“發展受阻”階段,技能水平就不再提高,是因為以下兩個原因之一:一是天資受限,二是沒有意愿去作有意義的改進。
在本篇文章中,我們不討論第一種原因(因為大多數專業的程序員都不會天資低下到不能獲取最基本的技能的程度),我們討論第二個原因的一個有趣的具體實例:即自愿停止改進,因為相信自己的技能已經達到了專家水平,所以進一步改進不太可能了 。這種不確定的平庸狀態是進入技能獲取的快速階段的入口,我將它稱之為“專家新手”。
當你考慮德萊弗斯模型時,你會注意到隨著時間的推移,技能獲取者有一種從“嚴格的規則導向和對大局不甚了解“到“非常直觀和完全把握大局”轉化的趨勢。高級新手階段是技能獲取者對大局不甚了解的最后一個階段,因此,這是技能獲取者可能把自己誤以為是專家的最后一個階段。一個稱職的人把握大局的能力很強,所以不會把自己與專家混淆:他知道自己缺失什么技能。而這是高級新手不具備的,因為高級新手正處于鄧寧-克魯格效應的“非熟練”階段,并且傾向于認為“如果我不理解一件事,那它一定很容易。”
因此,高級新手可以用下面兩種方式之一獲得進步:第一種是了解自己的位置,學會把握大局,并向稱職者轉化;第二種是通過假設他們已經畢業成為專家而“畢業”成為專家新手。這并不像聽起來那么荒謬。
讓我們回到我以前的保齡球生涯,想象一下如果我是球場上唯一的或最好的保齡球手,會發生什么。我應該會一開始打得很不好,然后很快就摘下技能獲取的“低掛果實”,迅速提高我的保齡球技術。根據鄧寧·克魯格效應,我可以合理地認為:我對打保齡球很有天賦,因為我的技術水平提高得很快。我也可以得出一些理性的(而不是傲慢的)結論,我的保齡球技術不能再提高了,因為我已經達到了技術頂峰。畢竟周圍已經沒有比我技術更好的人,而且一定有人掌握了某種程度的技術,所以我想我應該就到了專家新手這個階段。
真正讓人尷尬的是,一些不完全理性的推理使我產生了一種錯誤的成就感,導致我放棄進一步的改進。隨著我保齡球生涯的繼續,我從樂觀的自我評估變成了邏輯上的謬論:“我知道我的打法很對。因為我是專家,所以我做的每件事都正確。”(對于邏輯謬論愛好者來說,這是循環論證,即用未經證明的假定來論證)。查看上面的圖形會注意到它描述了德雷福斯模型的狀態機,正如你所期望的那樣。在每一個階段,你要么前進到下一個階段,要么停留在當前階段(除了新手或高級新手,我覺得他們不能真正停留在那個階段而繼續從事某個工作)。不同的是,我已經將專家新手添加到了圖表中。
專家新手知道他們想繼續進步的話,需要付出很多努力,而且沒有現成的路徑可走。你會注意到,專家新手介于高級新手和勝任者之間。這是因為他沒有足夠的能力去把握大局,認識到自己處境的尷尬,但他比高級新手略勝一籌,主要是因為他作為一個新手進行了大量的練習。如果你聽過“十年的經驗不等于一年的經驗用十年”這句格言,那么“專家新手”就是后者的縮影。專家新手通過一周又一周地重復練習來完善保齡球技術,而不會偏離常規打法或嘗試新的打法,以確保獲得總分300分中的160分。依據他們所獲得的得分,他們相信160分是他們的最好分數。
軟件開發中的專家新手
毫無疑問,軟件開發不像打保齡球。保齡球運動的反饋周期是以分鐘為單位的,而軟件開發的反饋周期則往往是以月或年為單位的。這里所指的軟件開發不是指編譯、運行或單元測試這些環節,它們的反饋周期是以分鐘或秒來計的。這里我所說的軟件開發是指整個項目周期。在項目的整個生命周期中,開發人員經歷了編寫代碼、源代碼控制、修改代碼、測試代碼以及在維護階段遵循以前的架構和設計這些過程,并從中獲取了相應的經驗。
開發人員如果運氣好的話,可以在6個月的時間內將我上面所說的過程都嘗試一遍。這就意味著,當他在從事軟件開發工作5年后,他可能經歷10次這樣的過程。(這是平均值——有些人會一直停留在某一個單一的過程上,而另一些人可能會經歷幾十次這樣的過程。)
這意味著軟件開發人員的快速獲取技能階段(高級新手階段)將持續數年而不是數周。在這數年里,軟件開發人員會跳槽并獲得晉升,尤其是在現在這樣的市場環境里。當他們輕而易舉地獲取技能后,他們也就輕而易舉地獲得諸如“一級軟件工程師”和“二級軟件工程師”這樣的頭銜,然后可能升級到“助理工程師”和“高級工程師”,最后可能是“主管工程師”,“架構師”和“首席工程師”。因此,處在鄧寧·克魯格效應困境中的高級新手們,會被授予專家頭銜,并被招聘人員恭維為“搖滾明星”或“忍者”等等。這種情形在當今的經濟形勢下尤其嚴重。唯一讓高級新手們認識到他們沒有進入專家新手階段的是同行評審和與整個開發社區的交流。
但是,當高級新手不太關心與更廣泛的社區進行互動,并且無論出于何種原因與同行沒有太多互動時,會發生什么?The Daily WTF網站上這樣的例子隨處可見。他們會失敗,但是他們相信他們的失敗是其他人的錯。因為游戲的本質是這樣的:責備他人很容易,也很容易緩解任何認知失調。他們認為他們很快就成為專家并且沒有提升的空間了。他們已經正式成為專業新手,而且已經準備好在公司里鞏固自己的地位并享受高昂的薪水。他們周圍的所有人,包括他們自己,都沒有意識到他們可以做得更好。
譯者注:鄧寧-克魯格效應(Dunning-Kruger effect)。它是一種認知偏差現象,指的是能力欠缺的人在自己欠考慮的決定的基礎上得出錯誤結論,但是無法正確認識到自身的不足,辨別錯誤行為。這些能力欠缺者們沉浸在自我營造的虛幻的優勢之中,常常高估自己的能力水平,卻無法客觀評價他人的能力。
-
軟件開發
+關注
關注
0文章
621瀏覽量
27384 -
源代碼
+關注
關注
96文章
2946瀏覽量
66831
原文標題:軟件開發團隊中,憑什么新手當道?
文章出處:【微信號:mcuworld,微信公眾號:嵌入式資訊精選】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論