在學校的最後兩年,我就開始往一個Web開發的方向發展,基本上屬於自學成才的全棧Web開發工程師,從前端到後端無一不做,但是沒一個精通的,看到這裡是不是很失望? 確實,如果真是「無一不精」,我也沒空在這裡寫文章了。
現在工作四年多了,我才剛剛有點摸到了成為一個牛逼Web開發的門路。 不敢自珍。 一點看法,與諸君分享。
我感覺,程式設計,整個就是一個抽象的過程,對世界建立抽象的模型,然後讓他們運作起來。 程式設計的抽象,是雙向的,對底層,程式師要去抽象電腦的實現,往上層,程式師要去抽象紛繁複雜的客觀世界。 而更高一級的抽象,往往就是更低一層的抽象的一個組裝。 所以,越是大型的系統,就組裝了越多的抽象。
如果以電腦硬體作為程式的底層來看,越低層次的抽象,對客觀世界的表達能力就越薄弱,越高層次的抽象,表達能力就越強,但是會喪失靈活性。
Web開發從這個角度去理解的話,本質上工作在一個非常高的抽象層次上,因為Web開發下面,有作業系統,瀏覽器,解譯器,引擎,框架,所以,Web開發對客觀世界的表達能力很強。
可是即便如此,我工作這麼多年來發現,我們踏入這個行業以來,學習到的東西,抽象層次還是如此之低,以至於根本沒法做出什麼巨大的,或者眾多的工作成果。
所以,分析到這裡,我就覺得,如果我們希望自己變成一個牛逼的開發,首要變成一個高產的開發,那麼你必須有一個你的工具箱一樣的東西,當然是一個抽象的工具箱,這個工具箱,應該包含了各個層次的抽象元件。 一年又一年的重複工作,我們要做的不是拿一份月薪而已,而是往自己的抽象工具箱裡放入一個又一個抽象元件。 這個叫做積累。
而且,我覺得比較好的方式,是使用拿來主義,千萬別自己發明。 自己發明只有利於你理解原理,但是那不利於你做出一個巨大的或者眾多的工作成果。
比如,有些人問,學哪種語言,語言只是一個表達法,其抽象層次之低,不能幫你構建任何東西。 從這個角度來說,語言應該是最簡單的東西,簡單到了一個普通程式師可以學會任何語言的程度,所以不必問學習什麼語言,哪個好用,就去學會就行了。
語言上面有框架。 哪個框架好用,就去掌握住,然後所有的開發,都盡可能用這個框架。
在框架之上,有系統,系統也需要去積累。 因為人世間的業務模型,無非就是這麼幾個,一旦掌握全了,等於你一個人能構建一個超級系統出來,只要把你掌握的每個系統接駁起來就可以了。
我舉個例子,比如我是PHP程式師,然後用Yii框架,然後我掌握了CMS系統,網店系統,社區系統,CRM系統,銷售支援系統等幾個系統。 然後,任何新型業務,暫時都沒有脫離這幾個東西,於是我可以去説明任何新型業務快速的生產他們的系統。 但是我發現,我在網站或者交互表現上有所欠缺,所以我要掌握類似Bootstrap這樣的前端框架,説明我在前端表現和交互上能有所補全。
所以,後續的工作模式,就是不斷去積累各種層級的抽象工具和系統。 以後我就會成為一個牛逼開發,可以搞定任何系統的開發。
這就是我想與大家分享的。