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