新聞中心
給你一年的時(shí)間,你會(huì)怎樣去提高你的水平???

吉首ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!
正值這難得的sick leave(萬惡的空氣),碼文一篇來記念一個(gè)過去的366天里。盡管想的是在今年里寫一個(gè)可持續(xù)的開源框架,但是到底這依賴于一個(gè)好的idea。在我的Github 孵化器 頁(yè)面上似乎也沒有一個(gè)特別讓我滿意的想法,雖然上面有各種不樣有意思的ideas。多數(shù)都是在過去的一年是完成的,然而有一些也是還沒有做到的。
說說標(biāo)題
盡管一直在Github上連擊看上去似乎是沒有多大必要的,但是人總得有點(diǎn)追求。如果正是漫無目的,卻又想著提高技術(shù)的同時(shí),為什么不去試試?畢竟 技術(shù)非常好、不需要太多練習(xí)的人只是少數(shù),似乎這樣的人是不存在的。大多數(shù)的人都是經(jīng)過練習(xí)之后,才會(huì)達(dá)到別人口中的“技術(shù)好”。
這讓我想起了充斥著各種氣味的知乎上的一些問題,在一些智商被完虐的話題里,無一不是因?yàn)槟切┤藢W(xué)得比別人早——哪來的天才?所謂的天才,應(yīng)該是未來的智能生命一般,一出生什么都知道。如果并非如此,那只是說明他練習(xí)到位了。
練習(xí)不到位便意味著,即使你練習(xí)的時(shí)候是一萬小時(shí)的兩倍,那也是無濟(jì)于事的。如果你學(xué)得比別人晚,在很長(zhǎng)的一段時(shí)間里(可能直到進(jìn)棺材)輸給別人是必然的——落后就要挨打。就好像我等畢業(yè)于一所二本墊底的學(xué)校里,如果在過去我一直保持著和別人(各種重點(diǎn))一樣的學(xué)習(xí)速度,那么我只能一直是Loser。
需要注意的是,對(duì)你來說考上二本很難,并不是因?yàn)槟惚葎e人笨。教育資源分配不均的問題,在某種程度上導(dǎo)致了新的階級(jí)制度的出現(xiàn)。如我的首頁(yè)說的那樣:THE ONLY FAIR IS NOT FAIR——唯一公平的是它是不公平的。我們可以做的還有很多——CREATE & SHARE。真正的不幸是,因?yàn)闋I(yíng)養(yǎng)不良導(dǎo)致的教育問題。
于是在想明白了很多事的時(shí)候起,便有了Re-Practise這樣的計(jì)劃,而365天只是中間的一個(gè)產(chǎn)物。
編程的基礎(chǔ)能力
雖說算法很重要,但是編碼才是基礎(chǔ)能力。算法與編程在某種程度上是不同的領(lǐng)域,算法編程是在編程上面的一級(jí)。算法寫得再好,如果別人很難直接拿來復(fù)用,在別人眼里就是shit。想出能work的代碼一件簡(jiǎn)單的事,學(xué)會(huì)對(duì)其重構(gòu),使之變得更易讀就是一件有意義的事。
于是,在某一時(shí)刻在Github上創(chuàng)建了一個(gè)組織,叫Artisan Stack。當(dāng)時(shí)想的是在Github尋找一些JavaScript項(xiàng)目,對(duì)其代碼進(jìn)行重構(gòu)。但是到底是影響力不夠哈,參與的人數(shù)比較少。
重構(gòu)
如果你懂得如何寫出高可讀的代碼,那么我想你是不需要這個(gè)的,但是這意味著你花了更多的時(shí)候在思考上了。當(dāng)談?wù)撝貥?gòu)的時(shí)候,讓我想起了TDD(測(cè)試 驅(qū)動(dòng)開發(fā))。即使不是TDD,那么如果你寫著測(cè)試,那也是可以重構(gòu)的。(之前寫過一些利用Intellij IDEA重構(gòu)的文章:提煉函數(shù)、以查詢?nèi)〈R時(shí)變量、重構(gòu)與Intellij Idea初探、內(nèi)聯(lián)函數(shù))
在各種各樣的文章里,我們看到過一些相關(guān)的內(nèi)容,***的參考莫過于《重構(gòu)》一書。最基礎(chǔ)不過的原則便是函數(shù)名,取名字很難,取別人能讀懂的名字更難。其他的便有諸如長(zhǎng)函數(shù)、過大的類、重復(fù)代碼等等。在我有限的面試別人的經(jīng)歷里,這些問題都是最常見的。
測(cè)試
而如果沒有測(cè)試,其他都是扯淡。寫好測(cè)試很難,寫個(gè)測(cè)試算是一件容易的事。只是有些容易我們會(huì)為了測(cè)試而測(cè)試。
在我寫EchoesWorks和Lan的過程中,我盡量去保證足夠高的測(cè)試覆蓋率。
從測(cè)試開始的TDD,會(huì)保證方法是可測(cè)的。從功能到測(cè)試則可以提供工作次效率,但是只會(huì)讓測(cè)試成為測(cè)試,而不是代碼的一部分。
測(cè)試是代碼的***一公里。所以,盡可能的為你的Github上的項(xiàng)目添加測(cè)試。
編碼的過程
初到TW時(shí),Pair時(shí)候總會(huì)有人教我如何開始編碼,這應(yīng)該也是一項(xiàng)基礎(chǔ)的能力。結(jié)合日常,重新演繹一下這個(gè)過程:
-
有一個(gè)可衡量、可實(shí)現(xiàn)、過程可測(cè)的目標(biāo)
-
Tasking (即對(duì)要實(shí)現(xiàn)的目標(biāo)過程進(jìn)行分解)
-
一步步實(shí)現(xiàn) (如TDD)
-
實(shí)現(xiàn)目標(biāo)
放到當(dāng)前的場(chǎng)景就是:
-
我想在Github上連擊365天。對(duì)應(yīng)于每一個(gè)時(shí)候段的目標(biāo)都應(yīng)該是可以衡量、測(cè)試的——即每天都會(huì)有Contributions。
-
分解就是一個(gè)痛苦的過程。理想情況下,我們應(yīng)該會(huì)有每天提交,但是這取決于你的repo的數(shù)量,如果沒有新的idea出現(xiàn),那么這個(gè)就變成為了Contributions而Commit。
-
一步步實(shí)現(xiàn)
在我們實(shí)際工作中也是如此,接到一個(gè)任務(wù),然后分解,一步步完成。不過實(shí)現(xiàn)會(huì)稍微復(fù)雜一些,因?yàn)槭聞?wù)總會(huì)有搶占和優(yōu)先級(jí)的。
技術(shù)與框架設(shè)計(jì)
在上上一篇博客中《After 500: 寫了第500篇博客,然后呢?》也深刻地討論了下這個(gè)問題,技術(shù)向來都是后發(fā)者優(yōu)勢(shì)。對(duì)于技術(shù)人員來說,也是如此,后發(fā)者占據(jù)很大的優(yōu)勢(shì)。
如果我們只是單純地把我們的關(guān)注點(diǎn)僅僅放置于技術(shù)上,那么我們就不具有任何的優(yōu)勢(shì)。而依賴于我們的編程經(jīng)驗(yàn),我們可以在特定的時(shí)候創(chuàng)造一些框架。而架構(gòu)的設(shè)計(jì)本身就是一件有意思的事,大抵是因?yàn)槌绦騿T都喜歡創(chuàng)造。(ps:之前曾經(jīng)寫過這樣一篇文章,《對(duì)不起,我并不熱愛編程,我只喜歡創(chuàng)造》)
創(chuàng)造是一種知識(shí)的再掌握過程。
回顧一下寫echoesworks的過程,一開始我需要的是一個(gè)網(wǎng)頁(yè)版的PPT,當(dāng)然這類的東西已經(jīng)有很多了,如impress.js、 bespoke.js等等。分析一下所需要的功能:markdown解析器、鍵盤事件處理、Ajax、進(jìn)度條顯示、圖片處理、Slide。我們可以在 Github上找到各式各樣的模塊,我們所要做的就是將之結(jié)合在一樣。在那之前,我試著用類似的原理寫(組合)了Lettuce。
組合相比于創(chuàng)造過程是一個(gè)更有挑戰(zhàn)性的過程,我們需要在這過程去設(shè)計(jì)膠水來粘合這些代碼,并在最終可以讓他工作。這好比是我們?cè)谄綍r(shí)接觸到的任務(wù)劃分,每個(gè)人負(fù)責(zé)相應(yīng)的模塊,***整合。
想似的我在寫lan的時(shí)候,也是類似的,但是不同的是我已經(jīng)設(shè)計(jì)了一個(gè)清晰的架構(gòu)圖。
而在我們實(shí)現(xiàn)的編碼過程也是如此,使用不同的框架,并且讓他們能工作。如早期玩的moqi.mobi,基于Backbone、RequireJS、Underscore、Mustache、Pure CSS。在隨后的時(shí)間里,用React替換了View層,就有了backbone-react的練習(xí)。
技術(shù)同人一樣,需要不斷地往高一級(jí)前進(jìn)。我們只需要不斷地Re-Practise。
領(lǐng)域與練習(xí)
說業(yè)務(wù)好像不太適合程序員的口味,那就領(lǐng)域吧。不同行業(yè)的人,如百度、阿里、騰訊,他們的領(lǐng)域核心是不一樣的。
而領(lǐng)域本身也是相似的,這可以解釋為什么互聯(lián)網(wǎng)公司都喜歡互相挖人,而一般都不會(huì)去華為、中興等非互聯(lián)網(wǎng)領(lǐng)域挖人。出了這個(gè)領(lǐng)域,你可能連個(gè)畢業(yè)生 都不如。領(lǐng)域、業(yè)務(wù)同技術(shù)一樣是不斷強(qiáng)化知識(shí)的一個(gè)過程。Ritchie先實(shí)現(xiàn)了BCPL語(yǔ)言,而后設(shè)計(jì)了C語(yǔ)言,而BCPL語(yǔ)言一開始是基于CPL語(yǔ) 言。
領(lǐng)域本身也在不斷進(jìn)化。
這也是下一個(gè)值得提高的地方。
其他
是時(shí)候?qū)戇@個(gè)小結(jié)了。從不會(huì)寫代碼,到寫代碼是從0到1的過程,但是要從1到60都不是一件容易的事。無論是刷Github也好(不要是自動(dòng)提交),或者是換工作也好,我們都在不斷地練習(xí)。
而練習(xí)是要分成不同的幾個(gè)步驟,不僅僅局限于技術(shù):
-
編碼
-
架構(gòu)
-
設(shè)計(jì)
-
。。。
網(wǎng)頁(yè)題目:Github365天:給你一年的時(shí)間,你會(huì)怎樣去提高你的水平
網(wǎng)頁(yè)地址:http://fisionsoft.com.cn/article/dhcjdid.html


咨詢
建站咨詢
