Java零基础实战
上QQ阅读APP看书,第一时间看更新

序言

我大学读的是软件工程专业,在校期间学校开设了很多高级编程语言课程,如C、C++、C#、Java等。经过一段时间的学习实践和对比,我决定专攻Java,原因有三点:一、Java易上手且功能强大,经过20多年的发展,Java生态体系已经非常成熟;二、应用面广,无论是Web端、移动端,还是企业级项目,都可以使用Java进行开发;三、Java开发工程师的市场需求量很大,并且待遇也不错。基于以上三点原因,我非常坚定地选择了Java作为自己主要的编程语言。当然这并不是说其他语言不好,每种语言都有自己的优势和劣势,没有绝对的好与坏,要结合自己的实际情况选择一门编程语言学习。在我看来,对于零基础的初学者,选择相对容易上手且成熟的编程语言来入门,效率会更高,做到“先有再精”,后期可根据工作情况和个人选择来学习其他的高级编程语言,有了基础以后,学起来就会很快。编程思想都是相通的,拿我本人来说,除了继续深入学习Java,我也在学习其他编程技术,毕竟选择从事编程行业的工作就注定了要不断地学习。

我从第一次接触Java到现在也有将近10年的时间了,从初级开发工程师做起,一路进阶到高级开发、项目经理、技术总监。在职业生涯中的每个阶段,我对Java编程都会有新的认识,甚至很多时候对于过去的理解有颠覆性的改变。这是因为学习技术需要有一个沉淀和积累的过程,由量变完成质变。毕竟,写过一万行代码和写过10万行代码的人对技术的认知是不一样的,不同阶段对编程的理解也是不一样的,我们在工作和学习中需要不断总结思考,通过实际项目研发去夯实基础,建立自己的知识体系。

对于初入职场的新人来说,什么是最重要的?不是理论知识是否扎实,更不是你懂多少新技术,而是解决问题的能力,公司花钱雇你来上班,那你最基本的职责就是要在规定的时间内完成规定的任务。项目研发的不可预期性很高,你不知道什么时候会遇到哪些技术难点,解决这些难点需要花费多少时间和精力,这就要求你具备快速解决问题的能力。能在短时间内把问题搞定,能保证项目按时交付,你才是一名合格的程序员。在工作中,我们常常会遇到痴迷于技术的程序员,这本身没有问题,每个程序员都应该痴迷于技术,但是需要明确的是技术应为项目服务,也就是说能按时交付合格的项目是最重要的。应用的技术是否高端并不是最重要的,如果不能按时完成项目,连最基本的要求都无法达到,何谈技术优化升级?所以我们在实际工作中不要过于追求技术,一切要以实践为主。我曾经遇到过这样的同事,技术很厉害,喜欢在项目中炫技,把自认为好的技术强行加入项目中。他不考虑是否合适,是否会影响项目进度,想方设法也要把自认为好的技术加进去,最终的结果往往是辛苦加班很多天也没有实现需要的功能,而别人使用相对传统的技术很快就能完成任务。这就是本末倒置,得不偿失。技术固然很重要,但是应该以项目为重,为项目选择最合适的技术,而不是你认为最新最好的技术。公司对项目的要求首先是能按时交付,在这个基础之上,再去考虑技术的迭代和优化。

看到这里,有的人可能会说,那编程工作就很简单了,只需要掌握一些基本的技术,能完成工作就可以了,不需要学习什么新技术呀。我上面说的是对一个开发者最基本的要求,或者说是最低标准,如果你希望自己的事业节节高升,就需要不断学习新技术,不断更新优化自己的知识体系,并且记住一点,那就是只学有用的。什么是有用的呢?一方面是你当前工作所需要具备的技能,可以更好地帮你完成工作。另一方面是前瞻性的技术,比如未来两三年你可能需要掌握的,或者是大趋势所指向的技术。

当你从初级开发者成长为中高级开发者时,就不能仅限于实现基本的业务功能了,这样的工作没有多少含金量,干一年和干3年不会有太大的区别。打个比方,当搬砖对你来说已经是驾轻就熟,你就需要去思考怎么设计房子了,也就是从CRUD基本操作到软件设计架构的进阶。怎样提高自己的软件架构能力呢?首先你要具备扎实的基础知识,其次要有足够的项目经验,还要视野开阔,在技术领域的涉猎面要广。提高编程能力最直接也有效的方法就是看源码,学习源码是有一定门槛的,刚开始看的时候可能会遇到很多问题,或者根本就看不懂。这个时候也不能放弃,要逼着自己看源码,第一遍第二遍完全不懂没关系,坚持看到第三遍、第四遍的时候会发现自己好像懂了那么一点,继续坚持下去,你就会理解源码的思路了。

学习的阶段性很重要,找准自己当前所处的位置,学自己最应该学习的东西,慢慢提升自己的水平,不要跟风,不要别人学什么你就学什么。不同的阶段需要有针对性地部署学习计划来不断地提高和完善自己。假如你是刚入行的初级开发者,你首先应该考虑如何提高自己解决问题的能力,学习业务知识,更加高效地完成工作,而不是去学习软件架构设计。连地基都没有,何来万丈高楼?学习编程是一个从无到有、从有到精、从精到广的过程,想要做好Java软件开发的工作,需要不断地总结、思考、学习。

欢迎大家加入QQ群“Java零基础实战”(群号:688588534)来参与互动学习,我会在群里答疑解惑,还会适时分享实用且超值的学习资料。

宁楠

2019年1月于西安