成為更優(yōu)秀開發(fā)者的10條途徑
我讀過好多“成為更優(yōu)秀開發(fā)者的方法”的文章,它們大部分似乎寫于10年前。但大部分仍然很明智,因此我在這篇文章中提取出我認(rèn)為的最好的10條途徑。你可以隨時(shí)看看。
我們開始吧。
讀他人的代碼 —— Scott Hanselmann
讀他人的代碼,并從中學(xué)習(xí)。你會(huì)適時(shí)得到提升,因?yàn)槟闳菀讓W(xué)到其他開發(fā)者是如何處理問題的。結(jié)對編程是提升自我的最好途徑。你從另外一個(gè)開發(fā)者那里讀代碼,實(shí)時(shí)地看到他/她的思維過程。反之亦然。你們可以挑戰(zhàn)彼此的觀點(diǎn),共同進(jìn)步。
找人讀你的代碼
在希臘神話里,那喀索斯(Narcissus)愛上他自己在水中的倒影。他無法抗拒不去看它。作為程序員,我們也有這樣的癥狀,在他之后有了個(gè)名字叫自戀(Narcissism)。
當(dāng)你寫的代碼時(shí),會(huì)很容易愛上你的“藝術(shù)品”。但是一段代碼只有當(dāng)別人能讀懂你干的啥時(shí)才算接近完美。
通過經(jīng)常做代碼評審來讓他人讀你的代碼。你每次都能學(xué)到一兩件事情,尤其在你最后發(fā)現(xiàn)那個(gè)方法名意義不大時(shí)。
寫新的代碼時(shí)先修bug —— Joel Spolsky
我肯定你遇到過這種情況。你發(fā)現(xiàn)了一個(gè)bug,然后說:“我過會(huì)再修,我先把這些特性搞定。”或者你看到一個(gè)單元測試沒通過,但是你怕麻煩去找出沒通過的原因,所以你會(huì)把這條測試注釋掉抑或規(guī)避它。
來幫自己一個(gè)忙,養(yǎng)成早期修bug的習(xí)慣。bug只會(huì)隨著時(shí)間的推移堆積成山,給你招致更多的技術(shù)債務(wù)。
學(xué)習(xí)一門新技術(shù) —— Ryan Farley
你處于快節(jié)奏的世界。你的技術(shù)如同冰箱里的米飯一樣容易變質(zhì)。作為一個(gè)開發(fā)者,學(xué)習(xí)一門新技術(shù)有助于你立于刀鋒上,并受到歡迎。
大量“市民”正在學(xué)習(xí)如何寫代碼。這并不奇怪,因?yàn)槟悻F(xiàn)在正擁有這個(gè)世界上最高薪的工作。做一個(gè)極客再酷不過了。
如果你是iOS開發(fā)者,學(xué)一些Web框架,或者反過來。這樣你知道如何寫一個(gè)服務(wù)器端的簡單例子。
保持簡單
在編程里你總是可以找到一個(gè)更加精巧的方法去實(shí)現(xiàn)一個(gè)任務(wù)。有的人得意于他們的代碼有多么令人驚嘆,那樣也還OK。但是保持簡單,你愿意嗎?這關(guān)系到前面提到的一點(diǎn),讓別人讀你的代碼。
如果他們幾分鐘之內(nèi)無法理解,那么你是在給自己添亂(坦白地說還有那個(gè)必須維護(hù)那塊代碼的人)。
把你的實(shí)現(xiàn)發(fā)布到博客里 —— Bill Simser
在任何事情上要提高的最好途徑就是教(jiāo)授。如果你能使別人理解一個(gè)概念,那意味著你掌握它了,而不只是說說。
寫一篇博客,解釋一下你解決手邊的問題的過程。
順便說一下,這也是一份很好的簡歷。如果你要找工作,你可以給你潛在的雇主一系列你的博客,這樣你便有了優(yōu)勢。
貢獻(xiàn)開源項(xiàng)目 ——Eran Kampf
就是說要么自己做一個(gè)開源項(xiàng)目,要么為已有的項(xiàng)目做貢獻(xiàn)。這有助于你學(xué)會(huì)如何跟一群開發(fā)者協(xié)作。做很多獨(dú)立的項(xiàng)目會(huì)尤其有幫助。
從志趣相投的開發(fā)者那里學(xué)習(xí)可以加分,并且拜托,回報(bào)開源社區(qū)不是很酷的事情嗎?
修復(fù)問題,不要逃避問題 ——Danny Barbol
有一天我在和朋友談話。她是一個(gè)會(huì)計(jì)。她說當(dāng)她還有0.69美分的賬合不上時(shí)會(huì)很沮喪。她花了數(shù)個(gè)小時(shí)做幾百萬美元的賬目,到最后僅僅是因?yàn)橛腥嗽谀硞€(gè)地方把0.96美分換成了0.69美分,結(jié)果導(dǎo)致他們合不上賬。
作為開發(fā)者,我們經(jīng)常遇到同樣的事情。“一行”bug可以毀掉整個(gè)演示。有誘惑力的是不去真正的研究為什么它不去做它應(yīng)該做的,而是把它繞過去。你說:“在這里添上a+5,然后就好了。”
不,找出原因,然后修正,否則繞過去的將會(huì)回過給你招來麻煩。
把代碼覆蓋率提高1%
有時(shí)候測試驅(qū)動(dòng)開發(fā)顯得很枯燥。一定要在寫代碼前先寫好一行行測試代碼?是啊,我們要誠實(shí)地說確實(shí)不總那么好玩。你想要馬上開始好玩的部分。
我完全同意測試驅(qū)動(dòng)開發(fā)思想,但是有時(shí)候你只是剛好有一大堆未測試的代碼擺在面前。也許你從他人那里繼承了一段糟糕的代碼,或者你犯了錯(cuò)誤,然后忘了加單元測試。
不要難過,不要悔恨。不管你信不信,許多項(xiàng)目都有相同的問題,不論他們愿不愿意承不承認(rèn)。你要做的就是把單元測試一個(gè)個(gè)地加上。
像作家/作者的難產(chǎn)一樣,盯著一張白紙看。多產(chǎn)的大牛說克服它的最好辦法是在那張白紙(或者如今的電腦屏幕☺)上開始動(dòng)筆。
不要去想那24,000行未測試的代碼。把它們分解成塊,然后添加測試代碼。今天覆蓋400行,明天再覆蓋400行。也許永遠(yuǎn)不會(huì)覆蓋到所有的24,000行,但是一個(gè)月后未測試的代碼就少了8000行。
你的基礎(chǔ)代碼變得更好了。
每小時(shí)離開辦公桌休息一次
這是本文章里最重要的一條。盡管和編程沒有直接關(guān)系。至少每個(gè)小時(shí)站起來舒展身子,你的身體會(huì)為此感謝你。
不要馬拉松式的編程,幾個(gè)小時(shí)地粘在椅子上直到最后。就算你有那種900美元的人體工程學(xué)的椅子也不要。(順便說一下,如果有第11條,那將會(huì)是“弄一把好椅子”)
你應(yīng)該不想編程掙的所有的錢,沒來得及花,就去花在看病上了,是吧?
英文原文:appdesignvault,編譯:@奇風(fēng)余谷