開始怼人了!
一直忒忙(忙什麼就不打廣告了,O(∩_∩)O~,園子裡的童鞋們應該都知道了),現在終于有點時間,一定要先把這口氣出了再說。
兩篇文章,讓我心裡那個難受啊……
- 程式設計基礎的重要性(程式員之路)(以下簡稱《程式設計基礎》)
- 《大型網站技術架構:核心原理與案例分析》讀書筆記(以下簡稱《大型網站》)
他們的共同點,都在講“内功”。
講真!現在看到“内功”我都快要吐了。
我不知道用“内功”來打比方是什麼時候開始的,好像從我入行就聽說了,這說法深入人心啊,都十年了,長盛不衰!
本來《程式設計基礎》我都算了,一看部落客就是個學生。學生嘛,無所事事,又找不到方向,沒有任何工作經驗,随便哪個人一忽悠就信了。而且閑着也是閑着,你要去整點什麼亂七八糟基礎的東西也無所謂,總比打遊戲強(本來想并排個“談戀愛”的,想想能“談個戀愛”還是要比你懂點計算機原理要強一點,呵呵,過來人,真心話),以後工作了,現實會分分鐘教你做人。
結果沒過兩天,《大型網站》又冒出來了,唉喲我的媽啊,什麼“叢集、分布式、負載均衡、緩存……”這些玩意也成“内功”了?!這不就是些工具、名詞和概念麼?概念一點就通,工具拿來就用,怎麼也變成“内功”了?機關槍火箭筒也都能變成“内功”了?我,我,我心頭那憋着的一口氣啊……
好吧,我們大家都理智一點。
仔細想想,首先,什麼才能算是“内功”這本來就沒有一個權威的定義。你要說叢集分布式就是内功,我也沒有辦法。但如此一來,什麼是“外功”呢?我嘀個神!
算了,算了,這一篇就翻過了,不說了不說了。
我來說說我想說的:
第一、用武俠小說的邏輯概念來比喻科學的程式設計世界,不靠譜。
那是小說啊!同學,而且是“超現實主義”小說——金庸老先生怎麼玩兒都可以。學程式設計,你也敢這樣來?你咋不跳個崖去撿本書呢?還“武功秘籍”,我噴你一口老血……
你一定要那武功說事,好,什麼内功輕功,完全是子虛烏有的事情啊。前面有,前面有闫芳被扒皮,後面有雷雷被KO,你還執迷不悟?你還相信高手在民間,在深山老林?你是個成年人啊,童鞋。你看看現在的(正規的競技性質的)體校,哪個不是采用借用最前沿的科學理論,采用最先進的科學技術,使用最科學的訓練手段……還練内功?呼吸吐納,吸日月之精華,是吧?哈哈哈……讓我先笑一會兒……腦補了一群體校生對着一輪圓月“嗷~~”,那畫面不要太美。
這年代,還鼓吹什麼“學好程式設計就要先打好基礎”“就要先練好内功”,這種言論,就和“要學好功夫,先紮五年馬步”一樣荒謬。
第二、打比方,誰不會啊?
飛哥還不是看過武俠小說的。咯,獨孤九劍,練什麼内功?管你什麼内功,一劍戳下去,都是一個窟窿,是不是?那這樣看來,劍宗完勝,還練個勞什子内功呢?(我突然想到,這是不是金老爺子自己的反思?以前的作品,吹得太玄乎,現在回歸一下現實?)
打比方,隻是一種解釋問題的方法;比方打得好,隻是把這個問題解釋得好。但解釋得好,并不一定就代表你解釋的就是對的呀?!
中醫,就最喜歡打比方做類比,陰陽五行吃啥補啥啊,然并卵。當然,還是有很多人信,就跟有很多人相信程式設計就一定要練内功一樣。
最後,老司機來給大家打個比方:程式設計,就像開車。最重要的是“到達目的地”,也就是實作需求,解決問題。你寫的代碼跑不起來,什麼内功外功全都抓瞎。
要打好基礎夯實内功,這話是你們老師告訴你的吧?更不要臉一點的,還會說“練好内功,你啥都能行”,是吧?還是以體育比賽為例,你練好什麼内功,鉛球跳高花樣遊泳外加斯諾克,十項全能?用你的腳拇指想一想這個問題好不好?就你們學校的老師,教資料結構的那位,讓他到企業做個CTO,算了,也别難為他,就一個普通的一線開發人員,他行不行?他有“内功”啊!
很多高校教師脫離一線,對各種層出不窮的新架構新技術兩眼一抹黑,還恬不知恥地扯“基礎”“内功”,真的是最後的遮羞布啊!不“知恥而後勇”,反而用這些瞎話騙學生,誤人子弟,唉~~(噴我之前等一等,這話不是我說的,飛哥還沒這本事。記得好像是一個高校老師說的:“(科班的)大學畢業生還要去參加教育訓練,是大學教育的恥辱!”)
其實啊,沒什麼“内功”,一定要有,那就是“解決問題的能力”。用開車打比方,要到達目的地,這一路上你要解決很多問題。首先,你要會開車,要說基礎,這才是基礎。注意,是“會開車”,比如油門刹車交通法規,而不是什麼發動機的構造……然後,你要知道路線;接着,路上可能會有各種具體的問題,比如路上有坑、車輛抛錨,甚至于車匪路霸,你得一個一個的解決。
我突然想到,很多同學,會認為車輛抛錨時,能打開引擎蓋修發動機的,才是高手,你是不是這樣想的?你看你看,是不是,誰說開車的就不要懂發動機技術?不懂發動機你能修車麼?
那我想問問:遇到車匪路霸,你是不是還得會武功啊?歹徒手裡有刀呢?功夫再高,也怕菜刀啊,O(∩_∩)O~
為一個小機率的事件,投入極大的精力,不知道分工合作,讓專業的人做專業的事,這就是鼓吹“基礎”“原理”“内功”的最大問題。
路上有坑,避開;車輛抛錨了,應急電話;車匪路霸,打110啊 !
你真心覺得會修發動機很牛逼,你就去做汽修工啊,是不是?天天修汽車,多爽!為什麼要來當司機,十年八年的都沒機會一展身手,不憋屈得慌啊?
現在學校教的那一套,什麼二進制編譯原理之類的,有沒有用?有用!但它的用武之地不在程式設計,不在軟體工程領域,你不要生搬硬套拉郎配,計算機科學(Computer Science)和軟體工程(Software Engineer)本就是兩碼事,而且以後的差距會越來越大,你要搞清楚你的領域,也就是你要解決的問題。
作為搞軟體工程的碼農,什麼才是内功?組裝打磨和填坑。
有一種說法,程式設計不是什麼資料結構+算法,而是google+英語。
很多人認為這是一種嘲諷,其實不然。這恰恰告訴了我們程式設計的真相,以及我們開發人員真正的“内功”所在:快速獲得知識并解決問題的能力。
軟體工業發展到今天,網際網路時代,各種開箱即用的工具知識就在哪裡,關鍵是你要能快速的找到它,學會它,使用它,解決你目前項目中遇到的問題。
相信我:看着文檔就開始程式設計,不是菜鳥,就是大神。
點選連結加入群聊【一起幫·源棧·星光計劃】:QQ群:222132940