> 原文出處:https://www.phodal.com/blog/rethink-one-help-new-hire/
> 作者:?[Phodal Huang](https://www.phodal.com/blog/author/root/)
當我們在說照顧的時候,我們實際上是在給新人減壓。當我們在說容忍犯錯的時候,我們實際上說你可以犯一兩個錯誤。減壓更像是在塑造一種更好的學習體驗,或者說更愉快地學習方式。
## 學習與構建系統
學校的時候,學習傾向于理論性的學習。
工作的時候,學習傾向于應用性的學習。
兩種不同方式有著不同的區別,即一個廣度,一個深度。
在構建系統的時候,通常我們需要一個基本能工作的系統,其次在系統不斷開發的過程中。我們對于深度了解的需求已經變得比廣度更為重要。
故而,在一個以產品為主的開發團隊中,在早期他們更需要那些有廣度和速度作為支撐的開發人員,在后期則需要以深度作為支撐的開發人員。
兩種人才可以在不同的時期發揮著重要的作用。
## 學習體驗
在《認知設計》一書中,提到了下面的學習體驗,即"流"(Flow)。而在我們學習的過程中,我們也會有類似的學習過程。

如在早期我學習Emcas和GNU/Linux的時候,也曾經放棄過,雖然在當時我已經讀過Linux內核。然而,在應用之前進行理論學習并沒有卵用。
通常我們會有類似于下面的學習體驗,對于一本書來說有下面的體驗似乎也是一件很不錯的事:
1. 在最開始學習的時候,我們需要一點理論基礎,以及我們需要學點什么。
2. 然后,我們需要構建一個簡單可用的系統,以獲取信心。如果我們在這一步沒有想象中,那么簡單,那么我們可能會放棄學習。或者等到某個時期成熟的時刻,如在我開始學習《設計模式》的時候,那么本書的高度太高了。直到有一天,我了解到了一本叫《Head First設計模式》的書,才重新把GoF的書看了一遍,發現其實也沒有想象中的難。
3. 接著在我完成了某個功能之后,那么我可能繼續學習某個理論,用于支撐我的下一步計劃。
4. 在那之后,我覺得這一步可能也不是那么難,因為已經有了前面的基礎。如果在一步失敗的時候,那么我們可能會繼續尋找某些可靠的方案,又或者是理論支撐。
5. 。。。
6. 直到有一天,我們來到了一個瓶頸的前面,現有的方案已經不滿足我們的需求。對于這個問題,我們可能已經沒有一個更好的解決方案。于是,我們可能就需要創建一個輪子,只是在這時,我們不知道怎樣去造輪子。
7. 于是我們開始學習造輪子。
8. ....
只有當我們保持一個學習的過程,才會讓我們在這一步步的計劃中不會退縮,也不能退縮。
## 如何照顧團隊中的新人
在前面,我們已經說了足夠多的廢話,來支撐我們的標題。
在上篇[《如何構建理想的開發團隊》](https://www.phodal.com/blog/rethink-one-build-dream-team/)中我們說到了一點,即結對編程。在結對編程中會存在至少三種模式:
1. Coach模式。在我現有的經驗里,這個模式對新人會幫助比較大。通常來說,我們是要分解任務,然后帶領新人一步步完成任務。或許你注意到就是上文中說到的那個心流的過程。在這個過程中,很容易明白這是怎樣的情況。
2. 導航模式。在一步中,有經驗的人更多的是充當觀察模式。有時,當新人不知道往哪個方向就知道提示。當新人犯錯時,**最好**看著ta犯錯。
3. Pair模式。理想的結對編程便是在這樣的模式之中。而要達成這樣的目標需要兩個人之間有很好的默契,以及在某方面相接近的能力。在一步中,如果可以平衡好兩人的步驟,那么對新人的自信心想必是有很大的幫助。
采用結對編程不僅可以提高新人的水平,對于老人的能力也是很大輸出。即之前別人輸入我們腦子中的想法,我們需要再傳遞出來。對于程序員這一類人必然會有很大的提高,如果你不擅長表達的話。
### 結論
所以,我們所說的照顧實際上是一個更好的學習體驗。
1. 最開始的時候教會如何細分任務,并帶領他學習
2. 給他指導,讓他自己完成工作。
很我時候,我們總是局限于第二步,故而無法更好地指導他們完成工作。