|
英文原文:Kicking ass together: How to improve coding skills as a group
過去一年半里,我在為 Mendicant大學(xué)(Ruby 開發(fā)者在線大學(xué))工作。我與同學(xué)和員工一起建立了優(yōu)秀的在線學(xué)習(xí)社區(qū)。美中不足的是,由于一開始我們對 Mendicant 的定位是逐步發(fā)展,所以短時間內(nèi)沒有達(dá)到我們預(yù)期數(shù)量的學(xué)員。
本文總結(jié)了一些 Mendicant 大學(xué)深受好評的方法。希望這些經(jīng)驗?zāi)軒椭啾镜貓F(tuán)隊和在線團(tuán)隊,這樣會有更多優(yōu)秀的場所供程序員學(xué)習(xí)和成長。
一、強(qiáng)調(diào)個人目標(biāo)與團(tuán)隊興趣
在小團(tuán)隊里,只討論眼下全球流行的 IT 技術(shù),卻忽略小組內(nèi)部正在做的工作,這是對精力和潛力的極大浪費(fèi)。而將關(guān)注的內(nèi)容與團(tuán)隊成員正在參與的項目或日常工作中面臨的問題聯(lián)系起來,這樣則會更加有效。
與其對一般性的問題進(jìn)行討論和學(xué)習(xí),不如找出團(tuán)隊需要解決的一些具體問題。可以自己克服這些障礙,通過整合手頭的資源可以更加有效地找到相關(guān)學(xué)習(xí)資料,或者組織相關(guān)人員進(jìn)行討論。
實踐的方法有很多,其中有一種方法很有意思:在每次會議一開始,讓大家談一談自己正在做什么、對什么比較感興趣,這樣大家可以依據(jù)興趣進(jìn)行組合。對于在線討論組,可以使用 wiki 或者定期的郵件列表摘要來達(dá)到類似的效果。
二、實行正式的代碼審查
不要空談想法或策略,最好辦法是坐下來、打開編輯器并準(zhǔn)備好代碼進(jìn)行審查。通過向別人講解自己的代碼,你能從中學(xué)到很多東西。可以毫不夸張地講,任何向他人教授知識的過程都能產(chǎn)生價值,哪怕僅僅是講解編程習(xí)語或者命名規(guī)范這樣的小知識也是如此。
如果代碼太過粗糙不能進(jìn)行有效的審查,可以通過編寫一個簡單的例子來展示你正在學(xué)習(xí)的核心概念。討論的內(nèi)容越具體,在與別人的交流中獲得有價值信息的可能性越大。
三、傾向有理有據(jù)的爭論
在編程社區(qū)里,依據(jù)權(quán)威(“某某說過……,因此……”)和流行觀點(diǎn)(“大家都是這么做……”)的爭論非常普遍,但最終都會偏離想要表達(dá)的觀點(diǎn)。幸運(yùn)的是,討論代碼有一種更為有效的方法。
對于給定問題討論解決方法,明確問題背景是最重要的。不了解問題背景,就不清楚解決這個問題是使用錘子還是推土機(jī)更合適。明確問題背景后,對于給出的解決方案就有了可討論的依據(jù)。
至此,剩下的事情就是比較不同解決方案權(quán)衡利弊。打個比方,你可能會說:“Sqlite 易于使用,因為它不需要數(shù)據(jù)庫服務(wù)器。但如果要處理 GIS 數(shù)據(jù),你可能會選擇 PostgreSQL,因為 PostGIS 提供了很多有用功能”。這個說法雖然不是無懈可擊,但比“Sqlite 很爛,一定要使用 PostSQL”要好一些。
有時候,你只是想表達(dá)一些純粹的個人偏好,這沒有問題。但在這個時候,如果能有一些理性討論而不只是抒發(fā)個人感情,會更好地表達(dá)你的觀點(diǎn)。在某些情況下,這能讓你避開宗教般的爭論。
四、尋找有效的練習(xí)和學(xué)習(xí)方法
每天都會涌現(xiàn)很多學(xué)習(xí)編程的新方法,它們被視作下一代革命性方法并受到推崇。同樣你也會發(fā)現(xiàn),通常人們現(xiàn)在學(xué)習(xí)和討論的都是一些新技術(shù)。當(dāng)然,這會讓你錯誤地認(rèn)為很重要并且迫切想要學(xué)習(xí)。如果追隨他們,你會事倍功半因而不能踏實地做出有用的東西,到頭來你會發(fā)現(xiàn)這些技術(shù)不過是過往云煙。
無論何時,盡可能地在學(xué)習(xí)新技術(shù)時為自己設(shè)定目標(biāo)并動手實踐。如果可能的話,可以用較低風(fēng)險的項目試驗新想法和新技術(shù),這樣會對自己以后大有裨益。如果你確實要花一些時間進(jìn)行刻意練習(xí)而不是邊工作邊練習(xí),請確保練習(xí)的目標(biāo)是為了實際需要或是為了解決實際問題。例如:采用代碼套路學(xué)習(xí)一門新語言或者文本編輯器新特性是一個好主意,但如果想要通過代碼套路來獲得意外收獲就是一個糟糕的想法。雖然有時候方法不對也能碰巧解決問題,但在你進(jìn)步的過程中不應(yīng)該只是碰運(yùn)氣。
(譯注:代碼套路(code kata):由 Dave Thomas 發(fā)明該詞,源自日本空手道中的套路(kata)概念。代碼套路是用來幫助程序員通過練習(xí)和重復(fù)來提高自己的編程技巧。)
雖然上面提到的內(nèi)容更多的是針對個人而不是在團(tuán)隊練習(xí),但同樣的目標(biāo)也應(yīng)當(dāng)出現(xiàn)在你參與的任何團(tuán)隊活動中。無論何時,盡可能根據(jù)需要分成專注不同技術(shù)的小組,這樣可以避免出現(xiàn)強(qiáng)迫一些成員練習(xí)或?qū)W習(xí)與其不相關(guān)或不感興趣的內(nèi)容。我們可支配的時間和精力是寶貴的,應(yīng)當(dāng)小心分配。
值得注意的是,這個建議并不意味著只關(guān)注狹窄的和現(xiàn)實的目標(biāo)。對于理論研究或經(jīng)典課題的深入學(xué)習(xí)同樣適用,并且可以在團(tuán)隊活動中開展。不要為了模糊不清的興趣去組織活動,將這些活動在某種程度上與個人內(nèi)在目標(biāo)聯(lián)系起來是非常必要的。
五、在技術(shù)與社交之間建立良好的平衡
在任何組織里,沒有交流很難建立起共同的文化,成員之間也不會分享自己的興趣。然而,迄今為止我見到過太多的用戶小組從像 HackFest 一樣的盛會變得平淡無奇。如果團(tuán)隊的社交準(zhǔn)則鼓勵這種行為,就不會有深入的討論和研究開始并延續(xù)下去。
(譯注:HackFest:每年一度的 Apple II 編程比賽,對所有參加 KansasFest 課程的成員開放。)
以我個人的經(jīng)驗,可以在工作結(jié)束之后開展一些交流活動,或者將交流與工作安排在不同時間。在線社區(qū)也可以采取類似的方式,為工作和非正式交流分別設(shè)計一些活動。你不必像法西斯那樣刻意強(qiáng)調(diào)之間的區(qū)別,但在未來前進(jìn)的道路上一定要始終持有清晰的目標(biāo)。
六、建立參與和分享的團(tuán)隊文化
了解你的團(tuán)隊,不僅要看團(tuán)隊成員在說什么,更要看他們在做什么。所以,盡可能地去突出團(tuán)隊成員的貢獻(xiàn),支持那些由積極協(xié)作完成的工作。不提倡由一個人完成主要工作,而其他人只是被動地接受信息。
就個人而言,我更喜歡能夠碰撞出火花的討論以及類似 Hackfest 的活動。只要能夠?qū)W⒂趫F(tuán)隊成員正在做什么,而不僅僅是重復(fù)別人說過或做過的事情都可以。同樣地,我認(rèn)為只要結(jié)構(gòu)合理并且舉止得體,組內(nèi)討論也同樣可以非常有效。
在線團(tuán)隊也可以通過代碼審查、文章討論和問答的形式取得同樣效果。
無論是與網(wǎng)絡(luò)團(tuán)隊一起或是獨(dú)自一人,在提高編程水平的過程中都可以參與開源軟件開發(fā)和討論。盡可能地鼓勵你團(tuán)隊的成員公開并分享他們的成果,這會產(chǎn)生巨大的不同效果,會形成一個積極鼓勵分享的氛圍。當(dāng)然,并非每個人都有時間經(jīng)營他們自己的項目,或者為其他項目做出可觀的貢獻(xiàn)(比如提交一個很大的補(bǔ)丁程序)。但是,只要你聽說某人提出一個 bug 或者報告了一個從未被發(fā)現(xiàn)過的問題,你就可以適時地坐下來,并且告訴他們?nèi)绾尉帉懽钚〉氖纠噩F(xiàn)問題并提交一個 bug。有的時候,幾分鐘的指導(dǎo)就可以讓一些只會在推特上抱怨的人轉(zhuǎn)變成為開源項目的積極貢獻(xiàn)者。
七、了解社交習(xí)慣,切記不要排斥邊緣團(tuán)體
許多技術(shù)團(tuán)隊(在線團(tuán)隊和本地團(tuán)隊)都沒有做到斷絕一些相當(dāng)令人尷尬的行為。雖然作為個體我們無法感受到這一點(diǎn),作為團(tuán)隊我們一直覺得容忍這種排斥行為是一種犯罪,而這種排斥在大多數(shù)其他社會場合都是不能被容忍的。請記住,盡管參加技術(shù)會議的程序員主體是異性戀的、中產(chǎn)以上、20到 30 歲之間的男性白種人,但這個世界上還有很多同樣熱情、能夠在技術(shù)上有建樹的人并不屬于這一類型。
這并不意味著需要過度地保持正確的政治方向或者放棄你的幽默感。這只意味著,如果你不能在各種其他群體面前開一些玩笑或發(fā)表一些言論,你同樣要避免在程序員同伴面前說類似的話。還意味著,你同樣需要在溝通之前檢查一下自己對別人的文化假設(shè)。專注于別人能做什么,而不是他們與你有多大差別。
我在這篇文章里的大多數(shù)建議會自然地建立一種環(huán)境,這種環(huán)境能夠吸引比我們目前服務(wù)的社區(qū)更為廣泛的人群。但是我想在這里呼吁重視這個問題,它的重要性實在不容忽視。社區(qū)的組織者需要特別記住這些問題,因為它們是針對團(tuán)隊成員期望設(shè)置目標(biāo)的絕佳機(jī)會。
在感到安全、受到歡迎和得到感激的氛圍中,人們能工作和學(xué)習(xí)得最好。如果你團(tuán)隊中的每個成員都認(rèn)同這種氛圍,你最終會比那些令人感到被邊緣化或沒有感激的團(tuán)隊收獲更多。
it知識庫:如何提高團(tuán)隊編程水平,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。