國內的教材你為何如此不堪入目?碼農該如何脫離碼農?
國內、國外教材對比
國內教材:
1、致命缺陷:只有入門,沒有進階,間接導致量產中國碼農;
2、入門書的錯誤會給新手帶來不良編碼習慣,中國C語言之父的void main()就是一個典型例子;
3、許多大學老師出書都是學生寫的,錯誤連篇;
4、書上舉例1+1=2,到了實際中要解決;
4、有一些國外比較好的書,翻譯過來往往變了味道,比如《C++變成死相》,不過也不乏少部分翻譯的不錯的書,比如段菲翻譯的DX9那本龍書;
5、入門書介紹的不夠全面,使用的例子過于教學化。當然,對于這一點到底好不好,不太好說,畢竟如果內容太多,很多新手會跟不上。
國外教材:
1、厚;
2、老外態度認真,內容沒有弄虛作假,而且作者往往有實際開發或研發經驗,與國內大學老師寫書充數量形成鮮明對比;
3、入門級的書會介紹的比較全面,完整的說明所有的用法,或者常用的方案,因而書比較厚,看的時候***的感受是很多以后可能出現的問題,書上都提到了,與上述的國內教材第4點形成鮮明對比;
4、帶“導論”倆字的書,格外犀利,能夠真正讓別人理解其原理,很多都是N年研發經驗的大神寫的,用于入門之后的提高,往往看了以后受益匪淺;
當然,不排除確實有一些比較好的國內的教材,不過真的太少太少了。另外,雖然譚**的書給我留下了不良編程習慣,書的質量也不如國外的書,但是對于大多數國內學生入門來說,也許是個不錯的選擇。國外入門書未必適合我們,畢竟國內學生水平層次不齊。國外在中學階段就接觸一些我們在大學才接觸的東西,等他們上了大學,自然就可以更深入的學習;反觀中國學生,中學階段辛苦備戰高考,大學階段才能入門,或者干脆什么都沒學四年就過去了。
國內教材只有入門書,幾乎沒有能和國外帶“導論”相提并論的書,這也間接導致了一年又一年計算機畢業生淪落為碼農。學的雜而不精,只能學習各種表層技術,這TM叫搞技術?這是當工人做重復性勞動!30之前不轉管理自然沒前途!但如果能夠深入研究技術,而不是不停的更新自己的入門級技術的數量,相信發展前景應該還是不錯的。
國外教材的“導論”很有意思,乍一看,導論,很簡單吧,其實正好相反,介紹的相當深入。我曾經納悶,為毛這種程度的叫導論呢?后來仔細想想,不論任何領域,都有相關廣闊的知識,而一本書的覆蓋面往往是有限的,從這個角度來說,導論知識介紹了這個領域的一小部分知識,所以叫導論;但是根據有名的2 8定律,20%的內容可以起到80%的作用,所以雖然只是介紹一小部分內容,卻可以對讀者帶來相當大的幫助。
什么樣的書是好書?
基礎入門:
這個真心糾結,以C++為例,C++ Primer確實不錯,可是估計新手不行,今天給導師帶C++的實驗課,剛剛開始講類,大家亂的一團糟,還是實驗班的……所以估計搞C++ Primer這種教材的話大家應該更受不了了;但是如果用國內的教材吧……又會帶來很多不良影響,究其根源,個人認為是中、小學教育的問題,如果之前有一些基礎,那么可以直接上手C++ Primer了。
專業入門:
比較好的專業入門書,很明顯是國外的教材,比如被稱為龍書的《DirectX 9.0 3D游戲開發編程基礎》,這是少有的原書和翻譯都相當不錯的一本三維圖形學入門書;Head First系列的書,想必大家有看過的,很少會說看不懂吧。既然是入門書,當然不能太難,但是必須要有比較形象的例子將內容闡述清楚,而且要盡可能的控制深度,避免作者看不懂。
這種類型的書有個共同的特點,那就是看著簡單,不枯燥,同時看完以后又能夠對某一領域有個整體的了解,雖然不是很深入。
專業進階:
在圖形方面讓我感受頗深的是Real-Time Rendering Third Edition,它引用了1400多篇參考文獻,將實時渲染的主流技術從算法的層面上進行了非常深入的剖析,讓讀者看完以后能夠對以有的成熟技術深入了解,建立起一個完整的知識體系架構。這種書需要作者真正是搞這方面的研究,并且研究的相當深入,否則不可能寫出這么經典的書。相信這一層次的書在大體性質上應該也是類似,能夠讓讀者全面、深入的了解某一領域的知識。這個時候,書中的內容正確、全面以及深度就相當重要了,而不需要考慮是不是對讀者來說太難了。如果讀者覺得太難,可以去看一些更基礎的書。
個人認為,這部分的書對于碼農相當重要,如果沒有這種層次的書,就意味著要不停學習各種表層技術,學習的內容是不會積累的,發展前景堪憂;而如果往這方面下功夫了,之前學習對于之后學習的內容是有積累的,隨著時間的推移,越學越深,也就不用擔心年輕人來搶飯碗了。
為什么國內的書就是寫不好
1、中國人有急功近利的特點,總是希望短、平、快的出成果,質量不高是正常的;
2、作者水平問題,在大學扯淡扯幾十年的老師和在MS或者Google干過N年的老外相比,當然是心有余而力不足了;
3、還是作者水平問題,在公司里有實際開發經驗的老鳥,都比較忙,很少有時間寫書;在大學里的老師,常常是沒有實際開發經驗,自然寫出來的東西就會讓人看著覺得瞎扯淡了。
如何能將書寫好
1、作者的自身水平有待提高,寫書是一個輸出的過程,如果腦子沒貨,那只能扯淡;
2、對于寫入門級的書,需要實際開發經驗;對于寫Real-Time Rendering Third Edition或者Game Engine Architecture這種深入一些的書,需要作者有實際的研發經驗;
3、套話、炒概念、完全正確的廢話少來點。
碼農如何提高自己
不少碼農忙于加班,***陷入死循環:加班 -> 沒空學習 -> 老是寫同等水平代碼 -> 無法提升代碼質量 -> 老是出BUG -> 老是需要修改 -> 加班 ->……要想破除這個死循環,關鍵在于學習!當然,也可以30歲之前轉管理,本文主要針對技術路線。學習主要有兩個方面:1、看技術書籍;2、提高英語水平。
對于***點,我個人比較推薦朝著某一技術方向深入研究,而不是不停的學一些表層技術。如果不停的追那些新出來的表層技術,那30歲以后真TM干不過那幫剛畢業的小屁孩了……當然,這只是我個人的看法,不喜勿噴。
第二點其實是配合***點的,因為一旦英語成為短板,那么一旦深入學習的過程中遇到沒有中文資料了,那么就會影響學習,這是不能容忍的。其實英語沒有想象中的那么難,每天抽一點時間學一學,從長期來看會有回報的,這里向大家推薦一個英語學習軟件:Aboboo,完全免費,還不帶廣告。