你需要每天寫代碼嗎?
就像運動員每天鍛煉一樣,每天練習寫代碼可以成就更優(yōu)秀的你。
最近我看過的博客,基本上每篇都有提到,“你需要每天寫代碼”。什么主題不重要,關(guān)鍵是要養(yǎng)成每天寫代碼的好習慣。寫得越多,代碼就會變得越容易,你也會越擅長編碼。
這不僅適用于寫代碼,寫詩和運動,事實上,這句話可應(yīng)用于任何行業(yè)。騎自行車,打籃球,讀書,烹飪等等等等。你做的越多,你就會越擅長,熟能生巧就是這個道理。

這也是編程領(lǐng)域的真理。如果你想擅長編程,那么你就必須每天寫代碼。代碼寫得越多,你才會覺得它越容易,并且越擅長于編程。就像我在本文中列出的其他任務(wù)一樣,每天寫代碼,即使你已經(jīng)習以為常,卻依然很難保持住這個習慣。
“我應(yīng)該寫什么?”這個問題的答案是因人而異的,但這卻是你用自己的方式每天寫代碼所必須先克服的障礙。通常人們編寫代碼是用來解決問題的,但不是每個人都有問題需要解決。這就像著名的雞和蛋的問題。那么,你應(yīng)該從哪里開始呢?
我比較喜歡重寫已經(jīng)存在的東西。有時候,費勁心思想出一個新的不一樣的點子是很困難的,甚至是針對現(xiàn)有思想想出一種新的方法路徑也不容易。然而,現(xiàn)有可復(fù)制的項目很多很多。我的想法是嘗試復(fù)制項目的總體目標,但用的是我自己的方式。這可能意味著使用不同的語言,或改變它的API,又或者只是采取一些古怪的新方法來解決同樣的問題。
這樣瘋狂的練習寫代碼讓我變得更善于發(fā)現(xiàn)問題。例如,大概幾周前,我決定用go寫一個Web服務(wù)器(類似于nginx/apache)。我想要一個又合適又易于使用的配置文件來定義設(shè)置。所以,我做了在現(xiàn)在大多數(shù)人都會做的選擇,我使用了json,但感覺并不合適。然后嘗試了yaml,但依然不是我想要的。我可能也試過使用ini格式以及為鍵和值制定自定義規(guī)則,但無濟于事。于是為了解決這個問題,衍生出了一個新的項目——一個go的手動編碼配置文件語法和解析器演變成為一個整潔的混合了json和nginx的配置文件語法。
不論怎么說,這樣一來我就有了一個可用的項目。雖然是通過復(fù)制已經(jīng)存在的東西,其實并沒有真正嘗試新的內(nèi)容,但我從這個過程中得到的那個衍生而來的項目,至少能讓我一個星期都有理由每天去寫代碼。這么做不僅能能讓我真的寫出一些有用的東西——可用于以后我的任何項目,而且也讓我也學到了一些我之前并不知道的東西。比如說我學會了如何用go手動編碼一個語法分析器。
***,“每天編碼”這個挑戰(zhàn)不是為了每天寫一些有用的東西,而是為了每天學習新的東西。學習新的語言,學習新的框架,學習拆開和組合。每天寫代碼,每天學一點新的東西。隨著時間的積累,你不但能學到很多,你也會變得更為優(yōu)秀。
加油,和我一起快樂編碼吧。