在學(xué)校的最后兩年,我就開始往一個(gè)Web開發(fā)的方向發(fā)展凄敢,基本上屬于自學(xué)成才的全棧Web開發(fā)工程師碌冶,從前端到后端無一不做,但是沒一個(gè)精通的涝缝,看到這里是不是很失望扑庞?確實(shí),如果真是“無一不精”拒逮,我也沒空在這里寫文章了嫩挤。
現(xiàn)在工作四年多了,我才剛剛有點(diǎn)摸到了成為一個(gè)牛逼Web開發(fā)的門路消恍。不敢自珍岂昭。一點(diǎn)看法,與諸君分享。
我感覺约啊,編程邑遏,整個(gè)就是一個(gè)抽象的過程,對(duì)世界建立抽象的模型恰矩,然后讓他們運(yùn)作起來记盒。編程的抽象,是雙向的外傅,對(duì)底層益愈,程序員要去抽象計(jì)算機(jī)的實(shí)現(xiàn)始苇,往上層,程序員要去抽象紛繁復(fù)雜的客觀世界。而更高一級(jí)的抽象蜂大,往往就是更低一層的抽象的一個(gè)組裝苍息。所以窿凤,越是大型的系統(tǒng)勺拣,就組裝了越多的抽象。
如果以計(jì)算機(jī)硬件作為程序的底層來看榔组,越低層次的抽象熙尉,對(duì)客觀世界的表達(dá)能力就越薄弱,越高層次的抽象搓扯,表達(dá)能力就越強(qiáng)检痰,但是會(huì)喪失靈活性。
Web開發(fā)從這個(gè)角度去理解的話锨推,本質(zhì)上工作在一個(gè)非常高的抽象層次上攀细,因?yàn)閃eb開發(fā)下面,有操作系統(tǒng)爱态,瀏覽器谭贪,解釋器,引擎锦担,框架俭识,所以,Web開發(fā)對(duì)客觀世界的表達(dá)能力很強(qiáng)洞渔。
可是即便如此套媚,我工作這么多年來發(fā)現(xiàn),我們踏入這個(gè)行業(yè)以來磁椒,學(xué)習(xí)到的東西堤瘤,抽象層次還是如此之低,以至于根本沒法做出什么巨大的浆熔,或者眾多的工作成果本辐。
所以,分析到這里,我就覺得慎皱,如果我們希望自己變成一個(gè)牛逼的開發(fā)老虫,首要變成一個(gè)高產(chǎn)的開發(fā),那么你必須有一個(gè)你的工具箱一樣的東西茫多,當(dāng)然是一個(gè)抽象的工具箱祈匙,這個(gè)工具箱,應(yīng)該包含了各個(gè)層次的抽象組件天揖。一年又一年的重復(fù)工作夺欲,我們要做的不是拿一份月薪而已,而是往自己的抽象工具箱里放入一個(gè)又一個(gè)抽象組件今膊。這個(gè)叫做積累些阅。
而且,我覺得比較好的方式万细,是使用拿來主義,千萬別自己發(fā)明纸泄。自己發(fā)明只有利于你理解原理赖钞,但是那不利于你做出一個(gè)巨大的或者眾多的工作成果。
比如聘裁,有些人問雪营,學(xué)哪種語言,語言只是一個(gè)表達(dá)法衡便,其抽象層次之低献起,不能幫你構(gòu)建任何東西。從這個(gè)角度來說镣陕,語言應(yīng)該是最簡單的東西谴餐,簡單到了一個(gè)普通程序員可以學(xué)會(huì)任何語言的程度,所以不必問學(xué)習(xí)什么語言呆抑,哪個(gè)好用岂嗓,就去學(xué)會(huì)就行了。
語言上面有框架鹊碍。哪個(gè)框架好用厌殉,就去掌握住,然后所有的開發(fā)侈咕,都盡可能用這個(gè)框架公罕。
在框架之上,有系統(tǒng)耀销,系統(tǒng)也需要去積累楼眷。因?yàn)槿耸篱g的業(yè)務(wù)模型,無非就是這么幾個(gè),一旦掌握全了摩桶,等于你一個(gè)人能構(gòu)建一個(gè)超級(jí)系統(tǒng)出來桥状,只要把你掌握的每個(gè)系統(tǒng)接駁起來就可以了。
我舉個(gè)例子硝清,比如我是PHP程序員辅斟,然后用Yii框架,然后我掌握了CMS系統(tǒng)芦拿,網(wǎng)店系統(tǒng)士飒,社區(qū)系統(tǒng),CRM系統(tǒng)蔗崎,銷售支持系統(tǒng)等幾個(gè)系統(tǒng)酵幕。然后,任何新型業(yè)務(wù)缓苛,暫時(shí)都沒有脫離這幾個(gè)東西芳撒,于是我可以去幫助任何新型業(yè)務(wù)快速的生產(chǎn)他們的系統(tǒng)。但是我發(fā)現(xiàn)未桥,我在網(wǎng)站或者交互表現(xiàn)上有所欠缺笔刹,所以我要掌握類似Bootstrap這樣的前端框架,幫助我在前端表現(xiàn)和交互上能有所補(bǔ)全冬耿。
所以舌菜,后續(xù)的工作模式,就是不斷去積累各種層級(jí)的抽象工具和系統(tǒng)亦镶。以后我就會(huì)成為一個(gè)牛逼開發(fā)日月,可以搞定任何系統(tǒng)的開發(fā)。
這就是我想與大家分享的缤骨。