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