我是 Seaborn Lee,這是我的第 19 篇原創文章,1400 字,閱讀需要大約 5 分鐘。
上周六,「北京軟件匠藝小組」和 「Agile 1001」聯合舉辦了 Code Retreat 活動。
自 2012 年第一次參加 Code Retreat 以來,我在深圳,成都,北京一共舉辦了 6 次活動。
而這次,我以引導者教練身份參與了此次活動,目的是賦能,讓更多人有能力舉辦此類活動。
之前的每一次活動,參與者都反饋收獲很大,而這次,一位資深程序員在參加后提出了許多反饋和建議,大部分是負面的。
另外,最近好多朋友也在問我,如何在企業內部組織 Code Retreat,以打造學習氛圍,提升編程能力。
這兩件事促使我重新思考,Code Retreat 到底是什么?
是什么
在「如何組織程序員集體學習活動 Code Retreat」中,我這樣定義 Code Retreat:
對想要編寫出更好的代碼,和更優雅地編寫代碼的程序員來說,Code Retreat 是最棒的集體學習活動。
它通過結對編程并頻繁輪換搭檔的形式,極大地開闊程序員的眼界和思維。
不同于 Hackthon(黑客馬拉松),Code Retreat 通常為期一天,不以完成題目為目標,每一個小時都會刪除全部代碼,找個新搭檔,針對一個目標進行練習。
許多程序員在平時的工作中,迫于項目進度壓力,沒有時間去思考更好的代碼,以及更好的編碼方式。
而 Code Retreat 活動就是一天放下進度壓力,專門思考如何讓代碼更優雅,以及如何更高效地編碼的活動。
通過和不同的人結對編程,使用不同的語言,開闊自己的眼界。
在 Code Retreat 中,每個 Session 有一個約束條件:
- TDD
- 不使用鼠標
- 結對時不能說話
- 不能使用條件表達式
- 不能使用循環
- 每個方法不超過 4 行
更多約束請參考:Activity Catalog
引導者會在巡場時,會不斷提醒大家專注練習的目標,而不是完成題目本身。
比如練習快捷鍵時,應當放慢速度,觀察自己的每一次操作,是否有更便捷的方式,如果還是按自己平時的方式編寫,便不會有任何收獲。
比如為了在光標所在行的上面插入新行,很多人習慣將光標移到上一行,再一直按右方向鍵直到行末,再敲一下回車。而在大部分的 IDE 里是可以通過一個快捷鍵做到的。
盡管 Code Retreat 中會使用 TDD,結對編程,函數式編程等技術,但我認為 Code Retreat 既不是推廣 TDD,也不是推廣函數式編程。
如果非要說在推廣什么,我認為是「刻意練習」,通過這個活動讓大家知道該練習什么。但從知道到做到必須經歷練習的過程,如果回去不練習的話,實際上也就只是知道了更多,對平時編碼并不會產生什么積極的影響。
不是培訓
Code Retreat 不是培訓,因為沒有講師,參與人員編程經驗不盡相同,使用的語言,開發環境也是形形色色。
收獲主要來自于你的搭檔以及每個 Session 結束后的集體分享。
引導者的作用是,就是營造一個輕松的環境,讓大家積極地交流,分享。一次好的活動,對引導者的能力要求,引導能力高于編程能力。
當然,大部分熱衷于組織 Code Retreat 活動的引導者,也是經驗豐富的開發者。
以什么心態參加
每次活動,都有人私信我說,我只有幾個月的編程經驗,能參加嗎?甚至還有零編程經驗的同學,既然他有熱情,我從來不會拒絕。
最重要的是有開放的心態,愿意學,愿意分享。經驗淺的人,必定可以大開眼界,學到很多。
而如果你經驗豐富,你的收獲從哪里來呢?
你當然也能從其他有經驗的人身上學到新東西,而你還可以通過教經驗少的搭檔加深自己對已有知識的理解。所謂教學相長,帶人的能力也是需要刻意練習的。
怎么做
作為引導者,為了讓大家更有收獲,我應該在活動開始前,強調「刻意練習」,消除大家想要「完成」的心態。
并且將第一個 Session 的時間適當延長,讓大部分人能「完成」,這樣在后續的練習中就不會再那么執著于完成。
2017 年,我將會幫助更多人組織 Code Retreat 活動。如果你想要組織,可以閱讀我的文章:
有任何疑問,歡迎與我聯系,我非常樂意提供幫助~