敏捷原則第九條:「持續追求優越的技術與優良的設計,以強化敏捷性。」這個持續追求,除了逐步在實作當中精練,主動學習也是重要的一環。
我在「衝刺之外的學習」提到學習衝刺的概念,利用 Scrum 衝刺的想法應用在學習上,善用團隊力量來促進學習。學習是有很多樣貌的,今天若單純是個人想利用工作之餘的時間學習,也是不錯的選擇,在我的經驗中,表現亮眼的個人或團隊都保有持續學習的習慣,今天一起來看看有什麼學習管道可以利用。
前幾天用了一些篇幅討論了個人與團隊協作之間可能遇到的不如意,目的是讓這些不順遂,不至於產生過大的影響。會先有這個小節,是因為觀察到人們在學習前 (特別是在工作上還要分時間出去學習),常冒出一些擔憂,例如:學得會嗎?有時間學嗎?學這個有用嗎?這個該學嗎?
在工作當中的學習與過去學生時期是有些不同的,若是參加訓練課程,有講師督促,通常目的是作成即戰力,課程會是密集的、速成的,我們必須在短時間內掌握一些大的知識點,往後再到工作當中持續打磨;若沒有講師,以自學習的方式進行,連續的時間更少、插斷更多、少了專人督促,更要自己掌握節奏。
不同的學習方式相信會帶來不同的壓力,但大家仍然要記起學習的目的,是充實自己,為專業帶來一些突破。一回生,兩回熟,三回焦,要記得努力,但也不要努力過火,對學習抱持它是一個「重要的小事」來看待。
學習的過程也是要隨時檢視與調整的,不是單一條路一路學下去,甚至該技術已經過時了還不自知。能夠呈現在眼前的東西,包含任何知識,都有其生命週期,不要緊緊抓住不放,軟體界更是如此,語言、框架、應用模式推陳出新,讓自己保有接納新知的態度是重要的。
此外,所有學習到、累積而來的知識與經驗都不是堅固的,當我們體會到顛覆認知的事情時,也要保持開放的態度,不要讓舊聞絆住自己。
那什麼時候可以來學習呢?
對啦,就是現在!同時也不要把主題局限在專業技術上,人生哲理仍然有許多可以探訪的。
受惠於現代科技,要進行學習有太多的管道可以選擇,以下是我個人嘗試過的學習方式,與大家分享。
若習慣以文字接收知識,閱讀書籍可說是首選,無論是電子書還是紙本書。僅管現在的閱讀風氣日漸低落,但看書仍然是一個幾乎不會虧本的生意,它是一種系統性的學習,經過作者的安排,建構一條學習主軸。它與軟體開發人員的好夥伴 Stack Overflow 是不同的概念,一個單點擊破,一個建立脈絡,別讓方便的科技成為不閱讀的理由。
撰文時我隨手拿起幾本書,要知道這 100 ~ 500 頁不等的書籍,是由作者們是花費多少心力構思、撰寫與校稿,將經驗濃縮堆疊成冊,我們只需要花上幾天的時間就可以讀完,並且金錢負擔通常不高,比起其他學習管道更是如此。
有些讀者習慣紙本書籍,我個人倒是因為空間關係,電子書會是我的優先選擇。電子書帶來的另外好處是它的可搜尋性,能夠查找內文對於日後調取知識時會有不少幫助。
研討會對我來說的價值有二:「現在」與「廣度」。透過這類的活動我可以知道社群「現在」關注什麼、有什麼新的動態、新的產業知識,而「廣度」則視研討會主題而異,但即便在相同主題的場子內,透過不同講者詮釋出來的結果往往也是不同的,仍然可以吸收不同的觀點。
此外,聽完研討會還有一個很棒的「副作用」,就是容易產生動手的動力,想去試試看講者所分享的內容,試著改變自己、改變團隊,我想這對於生活與工作而言是個不錯的刺激。
由於單一議程時長是有限的,講者通常是進行概念性的介紹,因此會有更多需要自己去探究的細節,我會把它當作「起點」而非「最終解答」。
2020 至 2021 因為疫情關係,不少研討會也改成線上舉行,議程的安排有些也改成接力制,這比起多軌並行帶來不少好處,只要我們有時間,就不會錯過任何一場。也有不少研討會改成免費參加,是非常難得的機會。
參加課程也是一個非常好的學習方式,雖然成本通常較高,但有位貨真價實的老師在眼前,透過即時互動的方式釐清問題。課程強在互動性,並且有專人逼迫學習 (即便老師可能無此意),對於容易拖拉的人來說可能是必要的。
另一種課程是自助式的,通常透過線上進行,以我自己的經驗而言 Coursera 與 Udemy 體驗是不錯的,並且各有強項,也都有免費的課程可以學習。Coursera 通常比較嚴謹,用來建立完整的知識體系,學習難度較高、時間較長、付費課程較貴(但部分有提供助學金);Udemy 屬於即戰力,課程品質較有起伏,但選擇多樣、價格較便宜,對於最時間要產生即戰力可以嘗試。
我在「時間擠一下就有了,我們擠了沒?」與「再談 Side project」介紹過 Side Project 的好處,以學習的觀點而言它也是相當稱職的,可以說是一種自由的做中學。
我長時間作為團隊 Code Reviewer 的一員,這是一個雙向的學習,我們可以看到不同的解決方案,並透過討論來針貶哪一種方案才是目前的最佳選擇,由於 Reviewer 必須考量到種種情況,無形之間做了強力的學習。
若自己不是 Reviewer 也沒有關係,先假裝自己是吧!看看同伴寫的程式,若團隊程式碼是共有的,這點不難做到。在閱讀的過程中思考,如果是自己應該會怎麼寫?為什麼他這樣寫?還有什麼寫法?
在程式碼閱讀上,除了內部的程式,外部的公開專案也是個不錯的學習方向,例如想要了解某個框架的運作原理,進而提升效率,並解決各種開發依賴上的超自然現象。
若想運用通勤時間,聽聽學習類的 Podcasts 也是個選擇,不過我個人比較少使用,這邊就不詳細列出各平台與推薦的主題了,主要原因有:
當然,讀者若把 Podcasts 放在一段專屬時間,用心聆聽也會是個不錯的方法。
在知識管理(KM)的領域中,有一條著名的公式 “K = (P + I) * S”。它表達著,「知識 = (人 + 資訊) * 分享」,透過此公式明示我們,分享讓知識整體產生大量累積。
分享有時也會成為學習的助力,例如:撰寫 Blog 文章、在團隊內發起讀書會或 Workshop、在討論上冷不防的丟出冷知識等。
當然了,鐵人賽也是一個很好的分享機會,一邊撰文也一邊成長,還有賽制鼓勵大家持續輸出。什麼?趕稿?那只是一個學習過程啦 ~
說的hen好 給個讚
條列出時候可以來學習呢的條件
還有最後的分享的公式
我覺得參加iT鐵人賽還是幫忙技術問答那裏做分享回答,
本身就是持續學習了, 除了學習之外, 也讓自己的知識能內化並且歸納成一系列的文章
感謝您!
確實鐵人賽創造了很多學習的機會,無論是撰文的人,還是爬文路過的人,是個很不錯的活動