如何從平庸走向理想?
作為一個程序員,學(xué)和做是你職業(yè)生涯的全部。
首先說說這個學(xué)。前兩天在回答另一個問題的時候,我說到了要學(xué)一些基本的知識,例如HTML、JavaScript、CSS這些,可能有些人會不以為然,覺得沒有必要,因?yàn)楝F(xiàn)在有太多的前端類庫可以拿來直接使用,再去學(xué)那些東西會浪費(fèi)精力。
其實(shí)不然,這些都是堆積互聯(lián)網(wǎng)的最基礎(chǔ)的元素,如果不能熟練掌握,就會被那些類庫綁架,甚至?xí)绊懙铰殬I(yè)生涯。為什么這么說,舉個很簡單的例子,比如你會用React,但你心儀的那家公司只招Vue程序員,怎么辦,花大把的時間重新學(xué),等你學(xué)到會用的時候人家公司已經(jīng)招到人了。
再舉個例子,張無忌在光明頂力戰(zhàn)六大門派,在最短的時間學(xué)會了他們的武功最終拯救了明教,靠的是乾坤大挪移,而用了半個時辰學(xué)會了乾坤大挪移靠的是九陽神功,那學(xué)九陽神功花了多久?五年時間!
基礎(chǔ)技能很重要,有了扎實(shí)的基礎(chǔ),什么東西上手都來得快。所以,我對學(xué)的建議就是,一定要把基礎(chǔ)學(xué)好吃透,以后不管是什么樣的開發(fā)語言,不管學(xué)習(xí)什么樣的框架,都能得心應(yīng)手。
再說說這個做字,做是對學(xué)的鞏固,關(guān)鍵是要怎么做。程序員的工作量大之大是眾所周知的,在這樣一個大背景下再來說做字似乎有點(diǎn)多余,可是我想問問大家,你們都是怎么做的,做了以后有沒有留下點(diǎn)什么東西來。
以前有個同事,基本功不行,碰到稍微復(fù)雜一點(diǎn)的功能,就去網(wǎng)上找現(xiàn)成的,一個系統(tǒng)就是這么七拼八湊成的,穩(wěn)不穩(wěn)定先不說,光看界面就像解放前佃戶的棉襖,五彩繽紛,風(fēng)格各異。借用別人的東西當(dāng)然免不了,但是要有方法,比如人家一段代碼正好用得到,不要直接Ctrl+C+V,應(yīng)該先看懂這段代碼的原理,然后有可能的話按照他的思路自己重新寫。取人魚,不如取人之所以漁。
程序員一定碰到過自己寫過的代碼會反復(fù)的在不同的地方用到,那你是怎么做的呢?直接把大片的代碼粘貼過去,還是學(xué)會自己封裝成一個公共類呢。哪種方式好不用我在這里說了,我想說的是,這么多年下來了,你封裝了多少個公共類,有沒有形成一個自己用著覺得很牛叉,可以用在所有項(xiàng)目里的類庫呢。如果有,那恭喜你,你留下了點(diǎn)什么東西。
最后說說平庸和理想。我覺得自己不算平庸,但也不算理想,只能說是在這兩者之間吧,理想的程序員應(yīng)該會是什么樣子的呢,我認(rèn)為理想的程序員不一定要掌握多么新的技術(shù),而是對某一個業(yè)務(wù)領(lǐng)域有著獨(dú)到的理解,能用自己的知識儲備解決行業(yè)內(nèi)的大多數(shù)問題。
好的程序員在面對新的需求時,首先想到的應(yīng)該是能用哪些方法來處理,不輕易說“不”,這是對公司負(fù)責(zé),也是對客戶的尊重。如果實(shí)在解決不了,可以幫助客戶一起想辦法來變通,采用雙方都能接受的替代方案。
如果客戶開始逐漸向你咨詢一些業(yè)務(wù)問題的時候,表示你成功了,向理想的程序員邁進(jìn)了一步。