技術(shù)的執(zhí)念

2016-9-24    藍(lán)藍(lán)設(shè)計(jì)的小編

如果您想訂閱本博客內(nèi)容,每天自動(dòng)發(fā)到您的郵箱中, 請(qǐng)點(diǎn)這里 

只需稍加留意,我們就會(huì)發(fā)現(xiàn)自己被各種技術(shù)、工具包圍。ThoughtWorks的技術(shù)雷達(dá)差不多每半年就會(huì)更新一次,在項(xiàng)目中更會(huì)遇到很多已經(jīng)從技術(shù)雷達(dá)上消失的技術(shù),項(xiàng)目上的舊技術(shù)/舊框架還在服役,新的技術(shù)/工具/語(yǔ)言/框架又在迅速的出現(xiàn),有些曇花一現(xiàn)、迅速被新的后來(lái)者所取代。有的留下來(lái)了,不過(guò)也都在不斷的演化、改變(不兼容的API,不同的版本等隨處可見(jiàn))。

如果你不幸是一個(gè)前端工程師,那么這個(gè)更新速度還要更加迅速。三年前Backbone是主流,兩年前是Angular.JS,去年是React,緊接著Flux、Reflux等作為React的擴(kuò)展而成為了新的主流;Grunt流行過(guò)一段時(shí)間,很快被Gulp替代,而新的Webpack又依稀有大一統(tǒng)的趨勢(shì)。幾乎每周都能看到新的框架涌現(xiàn),雙向綁定、虛擬DOM、事件代理、同構(gòu)、后端渲染、更友好的語(yǔ)法糖、更快的執(zhí)行速度等等,幾乎任何一個(gè)方向都有無(wú)窮無(wú)盡的變化。

1.png

而后端也好不到哪里去,容器技術(shù)、Web框架、ORM、構(gòu)建腳本、自動(dòng)化測(cè)試工具、依賴(lài)管理、應(yīng)用服務(wù)器等等,你總有很多的選項(xiàng),卻又無(wú)法在事先區(qū)分到底哪個(gè)技術(shù)/工具更靠譜、更適合項(xiàng)目。

置身其中,往往有眼花繚亂、應(yīng)接不暇的感覺(jué)。知識(shí)工作者當(dāng)然需要終身不斷的學(xué)習(xí),但是像目前這種節(jié)奏,我很懷疑這是否是一種健康的狀態(tài)。周?chē)?jīng)常有人抱怨,好不容易上手了一個(gè)前端的MVC框架,一看周?chē)捻?xiàng)目,大家已經(jīng)在spike另外的框架/工具了(這意味著你在項(xiàng)目上無(wú)法使用該框架了……)。僅僅從學(xué)習(xí)的速度上來(lái)講,我們已經(jīng)遠(yuǎn)遠(yuǎn)無(wú)法跟上科技演化的節(jié)奏了,這是人類(lèi)自身的一種限制。

知識(shí)的陷阱

假設(shè)你在一個(gè)Ruby項(xiàng)目上,學(xué)習(xí)了Rails/ActiveRecord/RSpec/MySQL。如果下一個(gè)項(xiàng)目還是Ruby,同樣的技術(shù)站,你會(huì)覺(jué)得這是一種重復(fù),因?yàn)槌藰I(yè)務(wù)邏輯、業(yè)務(wù)對(duì)象變化了之外,并沒(méi)有新的內(nèi)容,還是同樣的技術(shù)。如果下一個(gè)項(xiàng)目是Python,技術(shù)棧變成了Django/nose/PostgreSQL,你可能會(huì)覺(jué)得有所提升,因?yàn)閷W(xué)到了不同的技術(shù)、框架、共建工具、測(cè)試工具等等,其實(shí)仔細(xì)觀察,這還是一種重復(fù),古人云:“換湯不換藥”者,是也。

在目前我們所處的時(shí)代,信息以遠(yuǎn)遠(yuǎn)超過(guò)人們能接受的速度不斷的被創(chuàng)造出來(lái),一方面信息傳播的速度大大提升了,另一方面是信息傳播的渠道也極具多樣化。我們無(wú)時(shí)無(wú)刻不被過(guò)載的信息包圍著,即使你不主動(dòng)的去嘗試獲取新的信息,手機(jī)App里的微信、微博、Flipboard、Pocket、知乎、開(kāi)發(fā)者頭條、Feedly、果殼、丁香園等等的推送已經(jīng)足以提供給你足夠的信息(大部分甚至都來(lái)不及消費(fèi)就變成了歷史信息而被忽略)。

以我自己為例,從2015年10月到2016年2月,我學(xué)習(xí)了很多東西,看一下下面這張圖:

2.png

圖中灰色方框中的內(nèi)容是項(xiàng)目要求的知識(shí),另外的則是我根據(jù)自己的興趣學(xué)習(xí)的,兩者基本上各占一半。事實(shí)上有很多內(nèi)容(尤其是根據(jù)自己興趣學(xué)習(xí)的)在真正要使用時(shí),可能還需要學(xué)一遍。這些內(nèi)容可能讓我產(chǎn)生了我學(xué)到了好多東西的錯(cuò)覺(jué)。其實(shí)這個(gè)在另一個(gè)角度顯現(xiàn)了技術(shù)人員的一個(gè)誤區(qū):以為自己可以掌握所有軟件開(kāi)發(fā)相關(guān)的知識(shí)(或者說(shuō)太過(guò)于縱容自己的好奇心和興趣)。

過(guò)載的信息

身處這樣的信息過(guò)載環(huán)境,我們很難不為自己對(duì)信息的缺乏而感到不安,擔(dān)心自己錯(cuò)過(guò)了什么重要的信息,這種擔(dān)心和焦慮會(huì)促使我們進(jìn)一步將時(shí)間消耗在對(duì)信息的獲取上,從而更無(wú)暇思考什么是真正重要的。

《如何閱讀一本書(shū)》將書(shū)分為兩類(lèi):一種是提供資訊/信息(known)的,一種是幫助你理解(understand)信息的。相對(duì)于理解來(lái)講,資訊本身其實(shí)并不那么重要。我們大部分人目前采用的碎片化的閱讀方式無(wú)法提供給我們足夠的“理解力”。我們都有這樣的體驗(yàn),有些書(shū)特別耗費(fèi)腦力,讀起來(lái)很累,而另一些書(shū)則非常輕松,易于消費(fèi)。碎片化的閱讀方式易于消費(fèi),只需要很少的思考就可以讀懂,但是危害嚴(yán)重,它們并不會(huì)幫助你提升理解力。

3.jpg

但是直覺(jué)上我們會(huì)選擇容易的事情來(lái)做,雖然這種淺層次的閱讀只對(duì)擴(kuò)展信息/資訊有幫助,對(duì)提升理解力則幾乎無(wú)用。而我們?cè)谔幚砣粘9ぷ髦械膯?wèn)題時(shí),能真正幫助的,只有理解了的那部分知識(shí)。我在2014年,曾經(jīng)有幾個(gè)月屏蔽了所有微信、微博等內(nèi)容聚合類(lèi)的應(yīng)用,也盡量少的去技術(shù)論壇,每天就是寫(xiě)代碼,讀紙質(zhì)書(shū),除了最初幾天的忐忑之外,整個(gè)過(guò)程的收獲非常大(而且也沒(méi)有漏掉任何重要的信息)。

知識(shí)框架

技術(shù)人員有時(shí)候會(huì)有一種想要把所有技術(shù)都掌握的「執(zhí)念」,這在局外人來(lái)看是一種荒誕不經(jīng)的想法,但是置身其中,你很難看出這一點(diǎn)。畢竟,有意思的東西實(shí)在太多了,各種范式的編程語(yǔ)言、編譯器技術(shù)、人工智能、數(shù)據(jù)可視化、地理信息系統(tǒng)、嵌入式設(shè)備、軟硬件結(jié)合、大數(shù)據(jù)、自動(dòng)化測(cè)試等等,每一個(gè)方向都有無(wú)窮無(wú)盡的有意思的東西。

但是在知識(shí)規(guī)模如此巨大的今天,一個(gè)人是無(wú)法掌握所有技術(shù)的,更不用說(shuō)新的技術(shù)還在不斷的涌現(xiàn)出來(lái)!這就要求我們有節(jié)制的來(lái)聚焦在某些技術(shù)上,而視其他技術(shù)如無(wú)物。當(dāng)然這需要很大的勇氣和魄力,不過(guò)唯有如此,技術(shù)人員才可能有真正的長(zhǎng)進(jìn)和成就。

我基于自己的經(jīng)驗(yàn),繪制了一個(gè)「Web開(kāi)發(fā)」方面的知識(shí)框架,這個(gè)框架上包含了一個(gè)比較全的技能/知識(shí)集合,也是我認(rèn)為一個(gè)「Web開(kāi)發(fā)」人員應(yīng)該掌握的一些知識(shí)點(diǎn)。

4.png

在成為一個(gè)專(zhuān)家之前,你需要先對(duì)要學(xué)習(xí)的領(lǐng)域有一個(gè)全面的認(rèn)識(shí)。也就是說(shuō),做Web開(kāi)發(fā),需要盡可能覆蓋到這個(gè)框架上的所有點(diǎn)。一旦完成了這棵樹(shù)上的所有節(jié)點(diǎn),就不用再去做第二次了,這時(shí)候你可以嘗試找到樹(shù)上的某一個(gè)分支,深入下去。這個(gè)聽(tīng)起來(lái)好像和我之前文章中的觀點(diǎn)有所矛盾,其實(shí)不然。我在《我們真的缺前端工程師嗎?》一文中提到過(guò),“工程師不應(yīng)該將自己束縛在前端開(kāi)發(fā)上,要了解整個(gè)軟件開(kāi)發(fā)的全生命周期。”這里的觀點(diǎn)其實(shí)是一致的,即首先要了解軟件開(kāi)發(fā)全生命周期中的所有節(jié)點(diǎn),然后再有所側(cè)重的去找自己的興趣點(diǎn)來(lái)發(fā)展,即:先建立廣度,再建立深度。

應(yīng)對(duì)方法

對(duì)于知識(shí)的陷阱

當(dāng)因自己的興趣(而不是項(xiàng)目驅(qū)動(dòng),也就是沒(méi)有實(shí)際的土壤來(lái)驗(yàn)證)而想要學(xué)習(xí)一個(gè)新的知識(shí)時(shí),對(duì)照知識(shí)框架,如果發(fā)現(xiàn)自己已經(jīng)在歷史上學(xué)過(guò)它了,那就強(qiáng)迫自己放棄這個(gè)念頭。比如你很熟悉用rspec來(lái)編寫(xiě)測(cè)試,忽然有一天心血來(lái)潮,想要學(xué)習(xí)JUnit,正確的做法就是泡杯茶,等這種沖動(dòng)自己過(guò)去。相信我,一旦有了Java項(xiàng)目,你可以非常快速的掌握J(rèn)Unit,而且很快會(huì)找到對(duì)應(yīng)的feature,就像一個(gè)長(zhǎng)期工作在Java技術(shù)棧上的同事那樣!

對(duì)于過(guò)載的信息

實(shí)踐中,首先要令自己相信:你無(wú)法掌握所有的知識(shí),即使僅僅在軟件開(kāi)發(fā)領(lǐng)域。有了這個(gè)大前提之后,你只需要采取先建立廣度,再建立深度的原則即可:

 

分享本文至:

日歷

鏈接

個(gè)人資料

存檔