经典Java EE企业应用实战
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

第0章 学习Java的正确方法

就目前国内软件业的现状来看,有一种非常奇怪的现状:一方面,大量大学应届毕业生非常乐意进入软件开发行业,但往往苦于没有公司愿意要;另一方面,又有很多公司在长期招聘,为了找人花去大量的时间开销、人力开销,却找不到合适的人。这些现象表明:国内软件业的从业人数依然太少,但大量愿意投身软件行业的人却不得门而入,关键在于他们在大学里所使用的学习方法存在不足。

当这里提到“国内软件业的从业人数依然太少”这句话时,可能会有人提出反击,甚至担心:每次我找工作面试时总有其他人和我一起竞争,要是程序员更少,没人和我竞争说不定我就可以直接进公司了。笔者曾经有不少学员也表示了类似担心:老师你还是不要继续做培训了,你培训的学生越来越多,到时候他们都会来和我一起抢饭碗,以后我找工作就更难了。

其实这些“准程序员”没有想明白一个问题:他们面试的对手往往并不是与之一起面试的其他人,而是他们自己,他们应该问一问自己是否能真正满足企业的开发要求?他们的开发工作是否可以真正为企业带来价值?如果这两个问题是肯定的,那就可以胜任这份工作;否则将很难满足公司的要求。

那么国内程序员到底是多了呢?还是少了?关于这个问题我们可以看看国外,美国有多少程序员?印度有多少程序员?他们尚且没有担心程序员过剩,我们担心什么?换一个角度来看问题:如果程序员数量太少,这样国内将很难形成规模化的软件产业,这样就业机会就会更少;只有当程序员数量足够多时,才可以形成真正大规模的软件产业,软件产业才可以更好地盈利,从而也可以提供更多的就业机会。

可能有人会说:我们不是有很多“准程序员”吗?这一点没错,可惜这些准程序员离真正可以产生价值的程序员还有一段距离,如果不掌握正确的学习方法,他们也许就会错过。也许有人会说:我们国内程序员大多是“软件蓝领”,只能从事简单的、重复式开发。其实这并不是问题,当“软件蓝领”的数量多起来之后才会产生更多的软件高手,高手是不可能凭空产生的。当“软件蓝领”足够多之后,基本功足够扎实之后,慢慢就会有一部分人突破自己。

本章内容将会帮助“准Java程序员”来分析自己的学习方法,找出多年来传统学习方法中可能存在的诸多弊端。也许正是这些不太正确的学习方法最终导致了许多大学毕业生无法满足企业要求,许多初级程序员无法突破自己。

如果你正处于以下这些阶段,阅读本章内容将会对你有不错的帮助。

有志于进入IT行业的学子,问得最多的问题就是学什么语言好。

正在培训机构参加学习(或者上大二、大三),问得最多的是学习曲线,即怎么学。

正在求职途中的应届生,希望了解行业概况。

已经在行业中,寻求事业上的提升。

0.1 我适合不适合编程

由于眼下紧张的就业形式,越来越多的学生打算进入软件编程行业,对这些苦读十多年的学生而言,也许他们需要的只是一份工作,而不是一个职业。也许头几天他们还在投市场推广方面的简历,但过几天他们就开始投软件开发招聘的职位了。他们并没有考虑自己是否适合软件编程,更没有为从事软件编程做任何准备,也许只是找不到工作时临时想出的权宜之计而已。由于这样的学生不在少数,因此导致现在有些软件公司听到应届毕业生就直接拒绝。

不要看着自己的其他同学、朋友去编程了,而且薪资似乎也还过得去,你就盲目地随大流去选择编程!编程虽然并不是一个高难度的职业,但这个职业还是有一些基本要求的。

关于大学生就业的一个主流观点,也是笔者一直不太认可的,许多关于大学生就业的“专家”认为:大学生应该先就业,再择业。所谓先就业,就是说不管三七二十一,先找一个容身之所待着,至于这份工作是否适合自己则全然不管,也许这就是造成许多大学生就业时相当盲目的理论依据。

可惜就业市场也是残忍的,也许太多大学生抱着权宜之计的想法去软件公司应聘,这样就大大增加了软件公司的招聘成本,最后许多软件公司干脆直接拒绝所有应届毕业生。换一个角度来看,软件公司拒绝应届毕业生的恶果未尝不是应届毕业生自己种下的。

软件编程这个职业是一个非常实在的职业,说得不好听点,这其实是一个“民工”职业(笔者一向非常尊重民工,民工总在踏实、认真地做着实事,他们的劳动完善、美化着我们身边的世界),程序员必须能开发出满足市场要求的产品,这样才可以为软件公司带来价值。

在“疯狂Java实训营”的授课过程中,笔者曾经尖锐地告诫那些学生,当你们开发手上这些项目时,你们不能用学生的标准来要求自己,你们应该用程序员的标准来要求自己。如果你们达不到程序员的标准,你们怎么去应聘软件公司的职位?即使让你进了一个软件公司,你应该如何为你所在的公司创造价值?如果你不能为公司创造价值,公司从哪里拿钱来给你支付薪水?说得严重一点,如果你不能满足程序员的标准就去应聘软件开发,那就是一种欺诈行为。

当然,笔者并不是想打击那些有志于进入软件行业的“准程序员”的信心,只是想提醒一下大家,当你选择编程之前,至少应该问自己以下几个问题。

我是否喜欢按部就班、有条不紊地完成一件事情?

以前上学时数学、物理等学科成绩是否还过得去?

我是否有不错的逻辑思维能力?

我是否可以长时间静下心来专注于某件事情?

如果上面几个问题的答案是肯定的,那么学习软件编程应该会事半功倍;否则学习软件编程可能需要比别人花费更多的时间和精力。

很多开始打算学习软件编程的人在学习编程之前,总是信心满满地做着详细的学习计划,开始总是怀着十二分的热情投入,毕竟软件开发是一件很有成就感的事情,即使只是做出一个小游戏,也会带给学习者无比的快乐。不过所有学习者需要有心理准备的是,软件开发并不是玩游戏,对于一个刚学习编程的学习者来说一定要有心理准备,即使开发一个非常小的程序都有可能遭遇极大的挫折,这就需要学习者能持之以恒地坚持。

注意

千万不要相信某些图书、某些广告上的宣传口号:10天、20天学会Java编程,10天、20天学会C编程!编程虽然并不是特别难,却需要学习者持之以恒地坚持,10天、20天能入门,能把基本语法掌握就算不错了!如果你想着10天、20天就从一个门外汉学会编程,笔者建议你还是不要浪费时间的好!

好了,如果上面几个问题你的答案是肯定的,而且你还没有被笔者描述的困难吓着,那你可以问一个所有初学者都要问的问题了:选择一门开发语言重要吗?关于这个问题的答案大致可以分为两类。

高手型的答案:所有编程语言都是相通的,选择任何编程语言都一样。

专一型的答案:XXX语言最优秀,掌握了XXX语言就够了。

这两种回答都有一定的道理,不过笔者的建议是:“深度优先,广度补足”。所谓深度优先指的是建议初学者先选择一门最主流、市场应用最广泛的编程语言,认真、深入地掌握它。这里所说的掌握并不是说熟悉它的基本语法,而是指能使用该语言进行实际项目开发,并对该语言在计算机底层的运行机制都有较深入的体会。当对这门语言有较好的掌握之后,接下来再去补充学习其他编程语言,此时关键是注意其他编程语言与已掌握编程语言之间的差异。

从另外一个角度来看,每个学习编程的学子都有一个亟待解决的问题摆在眼前:就业,因此推荐选择一门主流、市场占有率高的编程语言,如Java、C都是极好的选择。

根据TIOBE网站(tiobe.com)从2002年到2009年的编程语言排行榜上的数据:排在第一位的一直是Java编程语言(除了2004年到2005年之间略低于C语言);排在第二位的就是C语言了。详细信息可以参考如下页面:http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html。