教材,教材,国内的教材你为何如此不堪入目?码农,码农,你到底该如何脱离码农?
国内、国外教材对比
国内教材:
1、致命缺陷:只有入门,没有进阶,间接导致中国码农数量持续增长;
2、入门书的错误会给新手带来不良编码习惯,中国C语言之父的void main()就是一个典型例子;
3、许多大学老师出书都是学生写的,错误连篇;
PS:对于这一点,我认为这是老师的问题。对于学生来说写书是一种锻炼、一种学习,但就像考试,不是每个人每次都考100分,出错是正常的,所以写书前后自然需要老师认真指导、把关,这样不仅可以提高书的质量,学生也可以学到更多。但是中国的国情,最后老师为了数量不顾质量,导致市面上充斥各种问题书籍。
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系列的书,想必大家有看过的,很少会说看不懂吧。既然是入门书,当然不能太难,但是必须要有比较形象的例子将内容阐述清楚,而且要尽可能的控制深度,避免作者看不懂。
这种类型的书有个共同的特点,那就是看着简单,不枯燥,同时看完以后又能够对某一领域有个整体的了解,虽然不是很深入。
为什么国内的书就是写不好
1、中国人有急功近利的特点,总是希望短、平、快的出成果,质量不高是正常的;
2、作者水平问题,在大学扯淡扯几十年的老师和在MS或者Google干过N年的老外相比,当然是心有余而力不足了;
3、还是作者水平问题,在公司里有实际开发经验的老鸟,都比较忙,很少有时间写书;在大学里的老师,常常是没有实际开发经验,自然写出来的东西就会让人看着觉得瞎扯淡了。
如何能将书写好
1、作者的自身水平有待提高,写书是一个输出的过程,如果脑子没货,那只能扯淡;
2、对于写入门级的书,需要实际开发经验;对于写Real-Time Rendering Third Edition或者Game Engine Architecture这种深入一些的书,需要作者有实际的研发经验;
3、套话、炒概念、完全正确的废话少来点。
码农如何提高自己
不少码农忙于加班,最后陷入死循环(这个帖子看到):加班 -> 没空学习 -> 老是写同等水平代码 -> 无法提升代码质量 -> 老是出BUG -> 老是需要修改 -> 加班 ->……要想破除这个死循环,关键在于学习!当然,也可以30岁之前转管理,本文主要针对技术路线。学习主要有两个方面:1、看技术书籍;2、提高英语水平。
对于第一点,我个人比较推荐朝着某一技术方向深入研究,而不是不停的学一些表层技术。如果不停的追那些新出来的表层技术,那30岁以后真TM干不过那帮刚毕业的小屁孩了……当然,这只是我个人的看法,不喜勿喷。
第二点其实是配合第一点的,因为一旦英语成为短板,那么一旦深入学习的过程中遇到没有中文资料了,那么就会影响学习,这是不能容忍的。其实英语没有想象中的那么难,每天抽一点时间学一学,从长期来看会有回报的,这里向大家推荐一个英语学习软件:Aboboo,完全免费,还不带广告。
The End