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

參考鏈接:
https://dzone.com/articles/software-engineers-learning-at-work






















