IT行业选择什么比较好?
几个误解
初学者赶C#潮流,其实只是学习过程中经常遇到的几个误区之一。我将用一些实际的例子来说明这些现象。你可以一步一步看你是否属于其中的一个或多个:
认为计算机技术等于编程技术;
有些人即使没有这种想法,潜意识里也有这种冲动。让我惊讶的是,信息学院的很多同学也有这种想法。他认为计算机专业就是编程专业,所有和编程无关或者不太相关的课程他都忽略了。极端的学生只要没有“编程”二字就不看书。
其实编程只是计算机技术应用中复杂度最低的一种劳动,这也是为什么IT行业底层的人都是编码员。计算机技术包括多媒体、计算机网络、人工智能、模式识别、管理信息系统等。编程工作只是在这些具体技术的理论研究或工程实践过程中表达算法的过程。程序员不一定有很高的计算机技术知识。而一个有趣的现象是,很多掌握计算机技术的科研人员并不懂编程。网上的大肆宣传和现实中良好的工作条件迷惑了编程的劳动。其实每个程序员心里都清楚,这些东西并不比其他专业难学,所以自然不会高端。
咬文嚼字自有风格:
看过一本女生写的《计算机网络原理》教材。这个女生像小学生一样,在书上画满了横杠,笔记写满了。打印出来肯定比课本厚。我不明白的是,像计算机网络原理这样的课程,有必要做笔记吗?我们的应试教育确实害了很多学生。在学习原理等课程时,很多学生像学习马列主义原理一样,逐字逐句背诵记忆。这是我见过的最愚蠢的行为。所谓“原理”,就是你需要掌握它为什么这么做,学习为什么,而不是怎么做。极其认真的同学死记硬背以太网网线的最大长度,数据帧的长度,各个字段的意义,IP头的格式等等,却忘记了路由的原理,忘记了TCP/IP协议设计的目的。总之,很多人花了很多时间背书,却什么也没学到。
这些学生学编程也是如此。他们准确地记得C++语法的每个细节。看了C++教程,看了《用C++思考》(真的是一本好书),里面C++,C++参考,这个C++,那个C++……++...然后发现自己忘了一些C++的语法,最后还是回去补上了。一个小弟跟我说:“C++太难了。你在这里学,就在那里忘。学了继承,就忘了模板。”我的回答是,“不学习很容易”。我没教坏他。我只是跟他说,坚持C++的语法就像孔已经炫耀过茴香豆的茴香字的几种写法一样没有意义。你根本不需要太在意C++的语法,开始编程就可以了。如果你不记得任何事情,检查MSDN,并得到它立即完成。我有一个结论,对程序语法的理解是实际开发过程中最无足轻重的知识。这也是为什么我在给同学用Basic写小程序的时候(我之前没学过),只花了半个小时看语法,然后半个小时就把程序写完了,一个小时后就把Basic里的关键词全忘了。
忽视基础,盲目追赶时髦的技术;
最后,重点在题目上。大多数人都希望自己的东西马上跑起来,变成钱。这个想法对于一个进入专业领域的程序员或者项目经理来说是有道理的,IT技术进步太快了,不跟进就会失业。但对于初学者(尤其是时间充裕的大学生)来说,这种想法令人费解。一个没有进入行业竞争的初学者,最大的资本就是有足够的时间静下心来学习基础的东西,学习为什么而不是如何。时髦的技术往往很容易掌握,而且越来越容易掌握,这是商业利益的驱使,为了最大限度地降低软件开发的成本。但这就是IT领域的现实。越容易掌握的,学的人就越多,被淘汰的速度也就越快。每次新技术出来,都有很多新手跟进。这些初学者因为缺乏必要的基础,在跟进的过程中花费了大量的时间,等他学会了,这个技术很快就会被淘汰。基础课程,如数据结构、操作系统原理等。,不能让你马上意识到一个linux(这就是很多人嘲笑理论课无用的原因),但是在学习新技术的时候,它们可以显著降低你学习曲线的斜率。甚至对于很多关键技术(如Win32 SDK程序设计、DDK编程)都是不可或缺的。
一个活生生的例子就是我和我的一个同学。大一的时候,我找不到开始按钮,他已经会写一些简单的汇编器了。高二的时候我把所有的时间都花在学习汇编,计算机架构,数据结构,操作系统原理等等,而他开始学习HTML,VB,赶上了ASP的潮流。大三开始学习Windows操作系统原理和SDK编程。花了很长时间,然后我能用VC开发出像样的应用程序。曾经因为同学的程序在运行,还在学习如何创建对话框而懊恼,直到毕业才发现自己的选择有多正确。我与之谈判的公司开出了超过他两倍的薪水。这里举个不恰当的例子:假设学习VB编程需要4个月,学习基础课和VC编程需要1年。所以如果先学VB再学后者,时间不会减少,还是1年。反过来,如果先学后者,再学VB,可能只需要1周就能学得非常熟练。
几门重要的基础课
如果你是学生,或者你有足够的时间。建议你认真掌握以下知识。我的建议是针对想在IT技术方面有所成就的初学者的。同时我也列了一些书目,书店应该有。说实话,我看别人文章的时候最大的愿望就是作者列个书单。
大学英语-别搞笑了。我强烈推荐这门课,因为没有专业文献阅读是不可想象的。猴年经常出中译本,现在很多出版社干脆直接印电子文本。学习的方法是强迫自己阅读原版教材。一开始你不会懂,但是用多了自然就熟练了。吃得苦,做得狠,绝对是任何行业都需要的品质。
计算机架构和汇编语言——关于架构的书到处都是,而且大同小异。不过有一本很好的书,80x86汇编语言编程教程(清华大学出版社,黑色封面,杨继稳著)。你需要重点关注后386保护模式的编程。否则,当你学习现代操作系统底层的东西时,你会觉得自己在读天书。
计算机操作系统原理——我们的开发总是在特定的操作系统上进行。如果没有,只有一种可能:你自己在实现一个操作系统。无论如何,操作系统原理是必读的。这就好比我们给一个芯片做外设的时候,必须要了解芯片的基本工作顺序。这一类的书很多,我还没发现哪本书是出类拔萃的。只是觉得看完这几本书有时间的话,应该去看看《Windows 2000内幕》(微软出版社,我看的是E版,中文标题一定是Windows 2000技术内幕)。另一篇关于ZDNET的文章已经讨论了学习它的必要性。
数据结构与算法——这门课程可以决定一个人的编程水平,是核心课程。我的首选是清华版(朱,刘)。很多人喜欢买C++版本,但我觉得没必要。C++的语法使得算法实现过程复杂很多,很多老师喜欢用模块把算法变得更复杂。学习完C版后最好浏览一下C++版的书。
软件工程——这门课越往后越重要,虽然一开始就像看哲学一样不知所云。我的建议是读实用软件工程(黄,清华)。不要花太多时间去记住规章制度。如果你不理解他们,就跳过去。每完成一个软件设计任务(不管是实习还是工作)都会回头看看,回头看看,每次都会有所收获。
Windows程序设计——《北京大学出版社,Petzold》我建议任何企图设计Windows程序的人,在学习VC之前,都要认真完成。而且,前面的Windows 2000里面的书,在这本书的后面也更好看。在这本书里,没有C++,没有GUI,没有控件。一些是如何使用原始C语言来完成Windows编程。学了之后你会发现,VC其实很好学。没看完这本书千万别学VC。你最好不要碰它。我知道的很多名校甚至都用它做教材。很明显它很重要。
我觉得以上课程是必须的(如果你想成为Windows程序员的话)。
其他课程有这样一个简单的选择:如果你是计算机专业的,请学好你所有的专业基础课。如果没有,请参考计算机系的课程设置。如果你发现自己读不懂一本书,请翻到书的末尾,看看它的参考文献,找到它们并学习它们,然后回头再看这本书。如果书名中有“原理”二字,一定不要死记硬背细节。你应该以每天至少50页的速度掌握要领。尽可能在电脑上练习一个理论或者算法。
你也可以阅读许多关于CSDN的书评。这些书评可以帮助你决定读什么样的书。
一日三省关心自己
每天看太多书,容易迷路。每晚一定要思考自己学到了什么,还有哪些相关的东西需要掌握,自己最感兴趣的是什么,是否花了太长时间在一本书上等等。同时你也要多想想未来最有可能的应用,这样你才能引领技术潮流而不是赶技术潮流。同时,尽量利用你现在掌握的技术和理论去做一些新的东西。坚持这样做可以让你真正成为一个软件“开发者”而不仅仅是一个编码员。
把大部分时间花在学习上。
这是给初学者的最后一点建议。每周玩CS或者CS的时间尽量少,最好不玩。同时,如果你的ASP技术已经可以赚钱,甚至有公司邀请你去兼职,证明你的天赋可以保证你努力学习后可以获得更好的收入,你应该去做更复杂的事情。从长计议,适用于所有人。
相信你已经能够决定要不要学C #或者什么时候学了。