僅以此文以自勉。(大神們可以輕點拍)
先舉個例子。公司里面有兩個同事,暫時叫做A,B。
A君是90后,但是可別小看90后,工作的經驗可比我們這幫80后還要豐富。學生時代暑假工地打工搬過磚,而且有了三四年的工作經驗。小伙很吃苦耐勞,工作也很拼命,性格也很隨和,經常在一起插科、打諢、扯淡,但是公司給他的待遇基本上是墊底的。所以每次看到這哥們,我都有點心疼(我少年老成,雖然是80后的尾巴),總覺得他的努力與回報不是很成比例。但是,容我說說為何待遇這么不公平。A君的基礎並不是很好,我說的基礎是計算機基礎。雖然做過很多事情,但是比較毛躁,而且沒有系統性。聊技術的時候,往往也說不到關鍵的問題點上,提出的問題也基本上是回答的不在點上。所以,如果在公司或者面試的時候,你遇到了這么一個求職者自然不會給很高的待遇。(A君如果把基礎打牢固一些也是相當不錯的)
再說說B君。B君是科大畢業的,為人老實淳朴,對Hadoop非常精通,看了3年的Hadoop源代碼。最近跳槽到阿里去搞HBase了,待遇自然不會低。如果我說B君基本上沒寫過代碼,你相信嗎?從學生時代到工作到現在,B君基本上沒寫過多少代碼。我倆一屆入職,在這將近一年中,他經常問我有關C++,Linux系統調用,計算機系統的一些問題,而我向他請教Hadoop方面的知識,所以自然我和他聊的也比較多。在這過程中,我發現B君的邏輯性特別強,而且對計算機的體系結構都有相當程度的認識,對系統架構方面有這自己的見解,可以說,如果你要和他聊天,你會覺得他技術了得可能是個架構師,而當你聽我說他基本沒寫過代碼時,你又會大跌眼鏡。(鑒於大家對B君的疑惑,B君雖然沒寫過多少代碼,但是不代表不會寫代碼,俗話說熟“讀唐詩三百首,不會作詩也會吟”,看了3年的Hadoop代碼,我想他固然已經知道怎么寫代碼,更重要的是3年中,他肯定深入了了解Hadoop,而且在其中窺見了一些大師們的思想。B君工作這一年中修復了集群中的很多BUG,怎么寫代碼固然重要,但是知道如何才能解決問題更重要,顯然,我跑題了)
其實說了A君與B君,我只想說,拼技術到最后都是拼基礎。而基礎積累的夠多,表現在你對事物的思考邏輯上面。B君雖沒寫過代碼,但是我知道他肯定在一些最基本的問題上下過死功夫。你能一眼看出一個系統的關鍵在什么地方,這東西靠的不是直覺,而是依托你積累的知識而做出的判斷。一個系統的設計,雖然初看上去高屋建瓴,但是當你不斷深入細化到它的各個分支,每個小部分都是一個實實在在的基礎問題,而有時候一些基本問題就決定了這個大系統的架構是什么樣子的。舉個例子,我們都知道Hadoop只有一個namenode節點,但是有沒有想過為什么他要這么設計?因為存在多個namenode,節點的同步將是一個問題(當然最新版的的已經解決了這個問題)。接下來會由這一個namenode節點引出很多問題,比如為什么一個Hadoop集群為什么不可能無限的大?原因自然是namenode能承受的壓力有限。這些都是自然引出的問題以及解釋。而你覺得很自然那是因為你的思維邏輯很清晰,間接的能代表你的基礎怎么樣。而你有了基礎之后,再看其它的東西就輕而易舉了。比如說,我沒做過Zookeeper,Redis,Kafka,但是我也能和他們聊聊。因為這些東西都一樣存在着一些基本問題。就好比張無忌在學會九陽神功后,只用了3個時辰便學會了乾坤大挪移,而基礎知識對我們來說就是九陽神功。
想象一下,如果你是一個頭頭,下面有些小弟。如果你想提拔某些人,如果你問的問題,他都回答不到關鍵點上,你能重用他么?你敢重用嗎?聊天時鬧出笑話還好說,真要是系統交付時出了問題,是你負責還是那個人負責?所以,搞了這么多年技術還是水平一般的技術君們,是否可以考慮一放下手里面正在跟風的時下時髦的技術,回頭翻翻自己基本沒有翻過的組成原理,操作系統,算法,數據結構,網絡,數學書,也許在你時隔多年,折騰了這么多年技術之后,回頭再看看這些書會有不一樣的收獲。
