學習型程序員養成錄:高能六招讓你工作學習兩不誤!
原創作者丨云昭
審校丨莫奇
很多研究表明,在工作中學習可以提高對工作滿意度和組織幸福感,而這兩者都有助于降低開發成本。但現實是:軟件工程師要堅持在工作中學習往往是“心有余而力不足”通常很難將學習優先于繁忙的日常工作。
在國外,許多公司鼓勵開發者抽出“5/10/20% 時間 ”來進行學習。這雖然有用,但高度依賴于個人動機和學習習慣。例如,只有大約 10% 的谷歌用戶能做到“20% 時間”的個人學習。
對于軟件工程師來說,最好的學習方式是擁有一個角色和一個項目,在那里他們可以通過日常任務學習。這就是為什么公司應該建立一種文化,讓學習成為工程師工作的一部分,而不是“附加內容”。這有助于激發學習動力機,并讓那些幾乎沒有空閑時間的人,——比如小孩的父母——繼續學習。
這里有六種行之有效的方法。分享給大家:
(推薦)代碼評審?
代碼評審為提供了開發者提供了一個很好的學習機會,因為在代碼評審中得到的反饋是高度關聯的,并且通常非常具體。當你討論為什么一種解決方案比另一種更好時,你可以用一種其他方法很難實現的方式來培養你的專業直覺。
評審代碼,是軟件開發者工作中的一個重要部分,好處也不言而喻:可以發現漏洞,一個人可能會疏忽,但是不大可能所有人都疏忽。可以分享知識技能,你評審別人寫的好代碼,你學到了;你評審別人寫得爛的代碼,別人學到了;根據評審的結果討論,大家都學到了。評審代碼可以培養領導能力。如何用對方可以接受的方式提出建議,并引導別人寫出更好的代碼,這是領導力的體現。
結對編程?
每人在各自獨立設計、實現軟件的過程中不免要犯這樣那樣的錯誤。結對編程帶來的好處是顯而易見的。在結對編程的過程中,會看到另一個人編寫代碼或聽到他們討論解決方案。這使您可以學習改進工作的實用技巧(例如,如何使用編輯器),。你還可以學習新的思考和解決問題的方法。對于開發者而言,結對編程能提供更好的設計質量和代碼質量,兩人合作能有更強的解決問題的能力。
結對編程的成本比大多數人想象得的要低。除了提高技術技能外,它還可以提高設計質量、減少缺陷、降低人員配置風險、改善團隊溝通,通常被認為比單獨工作更令人愉快。
WIP(Work in Proces在制品)?
開發者通常不喜歡處理與他人協調的“開銷”,這樣他們才能感到更有效率。因此,雖然工作可以拆分為較小的任務且并行處理,但開發者通常更喜歡單獨處理任務和問題。然而,這通常會導致更多的知識孤島化和團隊內的知識共享減少。
在敏捷開發中,WIP 限制決定了每種情況下的工作流中可以存續的最大工作量。限制進行中的工作數量可以更容易辨識團隊工作流中的無效工作。在情況變得更糟前,一個團隊在持續交付通道中的瓶頸是非常容易辨別的。
當有明確指示現有工作遇到瓶頸時,團隊可以聚焦在阻塞問題上盡快地的理解、實施和解決。一旦消除阻塞,團隊中的工作將再次開始流動。這些優勢可以確保在最短的時間內向用戶交付有價值的增量。
從根本上來講,WIP 限制鼓勵的是“完成”的文化。許多人知道在制品(WIP)限制只是作為改進工作流程的看板。但合理的 WIP 限制可以通過協作改進學習。作為額外的好處,它還帶來了更好的代碼審查。
編寫設計文檔?
設計文檔、RFC 、“文檔化計劃”等都是在工作中學習的好方法。良好的文檔,能從產品和技術角度解釋為什么選擇的解決方案是最優的。而且,它還考慮了不同方法的權衡,并強調了對解決方案有貢獻的最重要的非功能性需求,如可訪問性、性能和用戶體驗。
閱讀這樣一個高度上下文相關的文檔可以讓開發者了解其他人(通常是更有經驗的人)是如何看待技術決策的。不僅如此,編寫設計文檔的開發者還能點亮這些技能樹:系統設計、溝通技術決策,以及如何激勵和激勵同行采用解決方案。
學習小組?
組織學習小組是一個非常好的對等學習工具。當工作中有超過幾個工程師分布在多個團隊時,這一點尤其正確。可是以將書籍或課程中學到的知識應用到日常工作中并不容易,而且可能會導致人們為了學習而在代碼庫中“濫用知識”。當在同一環境下組織小組進行討論,更容易發現有價值的知識。
通常,學習小組會議最好的部分是讓人們分享他們自己的經驗和關于這個主題的不同角度,從而超越材料。這對于涵蓋高級原則的書籍 / 材料尤其如此(例如,“領域驅動設計”和“使用遺留代碼”之類的書籍)
這里,提供一個可參考的大規模組織學習小組的步驟:
尋找開發者感興趣的主題、書籍或課程。或者,從公司中找到一些可以參與的“專家成員”。選擇負責組織學習小組會議的人員。
為小組安排一次 30-60 分鐘的會議,每周定期日歷邀請。團隊越大,你需要的時間就越多。會議可以是延長的公司付費午餐。
對于每次會議,選擇每個人都可以事先閱讀的部分材料。例如,對于書籍,我們使用的頁面不到 50 頁。與會者應在會議間隙以自己的速度閱讀本材料。
會議開始時,讓每個人都仔細閱讀他們對材料的筆記或想法,并進行討論。
當學習小組的材料與參與者當前的項目高度相關時,他們幾乎可以立即應用所學知識。從長遠來看,其他材料也通常會帶來不小的回報。
點對點共享?
對學習感到興奮的最好方法之一,是通過你周圍的人。這就也是建立一種與同齡人分享所學知識的文化十分重要的原因。例如,開發者可以一起觀看工程講座,分享公司內網上有趣內容的鏈接,或者組織會議,讓團隊成員分享他們關于某個主題的知識等。
當然,不是每個人都會閱讀每一篇優秀的博客文章,也不大可能會參加每一次會議,但無論何時,開發者都會學到一些有用的東西。積極的學習經歷創造了一個良性循環,并激勵開發者學習更多。
寫在最后?
你有沒有嘗試過以上這些做法?哪種方法比較有效?歡迎在評論區討論你的經驗,與我們分享您的看法與建議。我們將在評論區選擇三位留言點贊最高的小伙伴,送出我們 51CTO 價值200元的獨家技術圖譜一份,歡迎大家踴躍參加哦~
參考鏈接:
https://dzone.com/articles/software-engineers-learning-at-work